こんにちは、広野です。
先日、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 アクセスになっているからセキュリティ対策はゼロではないか・・・。
本記事が皆様のお役に立てれば幸いです。