Amazon S3 で静的 WEB サイトをとりあえず公開する [AWS CloudFormation]

こんにちは、広野です。

先日、S3 で WEB サイトを公開したいんだけど、という質問を受ける機会がありました。セキュリティのセの字も無くてよいという状況、とりあえず動くものをすぐにーということで以下の CloudFormation テンプレートを作りました。

バケット名だけパラメータとして入力してスタックを作成すると、実行後の出力タブに HTTPS アクセス可能な URL が表示されます。

実際、私も研修用途で使用するファイルを研修期間だけ一時的に公開したいときがあり、そういう使い捨て用途に使えるなーという思いもあって、大した内容ではないですが作りました。

AWS CloudFormation テンプレート

パブリックアクセスブロックを全て OFF にしてバケットポリシーを全公開にしただけの Amazon S3 バケットです。

AWSTemplateFormatVersion: 2010-09-09
Description: The CloudFormation template that creates a public open S3 bucket.

# ------------------------------------------------------------#
# Input Parameters
# ------------------------------------------------------------#
Parameters:
  BucketName:
    Type: String
    Description: S3 Bucket name.
    Default: example-public-bucket
    MaxLength: 50
    MinLength: 3

Resources:
# ------------------------------------------------------------#
# S3
# ------------------------------------------------------------#
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      PublicAccessBlockConfiguration:
        BlockPublicAcls: false
        BlockPublicPolicy: false
        IgnorePublicAcls: false
        RestrictPublicBuckets: false
      Tags:
        - Key: Cost
          Value: !Ref BucketName
  S3BucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref S3Bucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Action:
              - "s3:GetObject"
            Effect: Allow
            Resource: !Sub "arn:aws:s3:::${S3Bucket}/*"
            Principal: "*"
    DependsOn:
      - S3Bucket

# ------------------------------------------------------------#
# Output Parameters
# ------------------------------------------------------------#
Outputs:
#S3
  S3BucketName:
    Value: !Ref S3Bucket
  TopPageURL:
    Value: !Sub https://s3.${AWS::Region}.amazonaws.com/${S3Bucket}/index.html

まとめ

いかがでしたでしょうか?

正直記事にするほどの内容ではないのですが、せっかく作ったので載せました。一応 HTTPS アクセスになっているからセキュリティ対策はゼロではないか・・・。

本記事が皆様のお役に立てれば幸いです。

著者について
広野 祐司

AWSサーバーレスアーキテクチャを駆使して社内クラウド人材育成アプリや教育コンテンツをつくっています。ReactでSPAを書き始めたら、快適すぎて他の開発言語には戻れなくなりました。AWSサーバーレスやReactの仲間を増やしたいです。
取得資格:AWS認定は9つ、ITサービスマネージャ、ITIL v3 Expert、等
2020, 2021 APN AWS Top Engineers 受賞
2022 AWS Partner Ambassador 受賞
好きなAWSサービス:AWS Amplify / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする
クラウドに強いによるエンジニアブログです。
SCSKは専門性と豊富な実績を活かしたクラウドサービス USiZE(ユーサイズ)を提供しています。
USiZEサービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。
AWSサーバレスアーキテクチャ技術ナレッジ
TechHarmony
タイトルとURLをコピーしました