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