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 を書き始めたら快適すぎて、他の言語には戻れなくなりました。サーバーレス & React 仲間を増やしたいです。AWSは好きですが、それよりもAWSすげー!って気持ちの方が強いです。
取得資格:AWS 認定は12資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2023 Japan AWS Top Engineer 受賞
2022 - 2023 Japan AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

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