CloudFormationでS3デプロイする – 【CloudFormation】

CloudFormationでS3デプロイする – 【CloudFormation】

CloudFormationでS3デプロイするyamlです。

S3

S3バケットデプロイ用template.yamlです。

template.yaml

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: This CloudFormation template to create Lambda function

Resources:
  S3Bucket:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: "test-bucket" # bucketname

ウェブアクセス公開用S3

ウェブアクセス公開用のS3バケットをデプロイします。

「AWS::S3::BucketPolicy」の設定が必要になります。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Description: This CloudFormation template to create Lambda function

Resources:
  # S3 bucket
  S3Bucket:
    Type: "AWS::S3::Bucket"
    Properties:
      BucketName: "test-bucket" # bucketname
      PublicAccessBlockConfiguration:
        BlockPublicAcls: false
        BlockPublicPolicy: false
        IgnorePublicAcls: false
        RestrictPublicBuckets: false
      WebsiteConfiguration:
        IndexDocument: index.html
        ErrorDocument: error.html
      OwnershipControls:
        Rules:
          - ObjectOwnership: ObjectWriter

  # Bucket Policy
  BucketPolicy:
    Type: 'AWS::S3::BucketPolicy'
    Properties:
      Bucket: !Ref S3Bucket
      PolicyDocument:
        Statement:
          - Effect: Allow
            Principal: '*'
            Action: 's3:GetObject'
            Resource: !Sub ${S3Bucket.Arn}/*

sam deploy

コマンドプロンプトからデプロイします。ここではスタック名はmystackにしています。

sam deploy --template-file template.yaml --resolve-s3 ^
 --stack-name mystack --capabilities CAPABILITY_NAMED_IAM ^
 --no-fail-on-empty-changeset --region ap-northeast-1

ドキュメント

AWS::S3::Bucket - AWS CloudFormation
Use the AWS CloudFormation AWS::S3::Bucket resource for S3.
AWS::S3::BucketPolicy - AWS CloudFormation
Use the AWS CloudFormation AWS::S3::BucketPolicy resource for S3.
ウェブサイトアクセスのアクセス許可の設定 - Amazon Simple Storage Service
バケットポリシーを使用してアクセス許可をウェブサイトに与えることで、Amazon S3 バケットをウェブサイトとして設定します。

コメント

タイトルとURLをコピーしました