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 認定は13資格、ITサービスマネージャ、ITIL v3 Expert 等
2020 - 2024 Japan AWS Top Engineer 受賞
2022 - 2024 AWS Ambassador 受賞
2023 当社初代フルスタックエンジニア認定
好きなAWSサービス:AWS Amplify / AWS AppSync / Amazon Cognito / AWS Step Functions / AWS CloudFormation

広野 祐司をフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AWSクラウド
シェアする
タイトルとURLをコピーしました