🍣
AWS S3にServerless Frameworkを使って画像のダイレクトアップロード用のバケットを作成する
serverless.ymlに以下の内容を記述することで、StaticAssetsBucketという名前のS3バケットが作成されます。BucketNameに一意となるバケット名を追加してください。
このバケットに対するアクセスコントロールは「PublicRead」に設定されており、CORS (Cross-Origin Resource Sharing) の設定も行われています。CORS設定では、GET、PUT、HEADといったHTTPメソッドを持つリクエストが許可されています。また、「*」という設定により、任意のドメインからのリクエストが許可されます。アクセス元のドメインが決まっている場合は、ドメインを追加してください。
PublicBucketPolicyという名前のS3バケットポリシーも同時に作成されます。このポリシーは、StaticAssetsBucketを参照することで、「s3:GetObject」アクションに対して全てのユーザー(Principal)に対して、StaticAssetsBucket内のすべてのリソース(Object)に対するアクセスを許可します。
resources:
Resources:
StaticAssetsBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: <BUCKET_NAME>
AccessControl: PublicRead
CorsConfiguration:
CorsRules:
- AllowedHeaders:
- '*'
AllowedMethods:
- GET
- PUT
- HEAD
AllowedOrigins:
- '*'
PublicBucketPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket: !Ref StaticAssetsBucket
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- 's3:GetObject'
Resource:
- !Sub '${StaticAssetsBucket.Arn}/*'
Principal: '*'
Discussion