事象
demo.yml
Parameters:
bucketName:
Type: String
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub $bucketName
AWS CLIでcreate-stack
コマンドにより上記テンプレートdemo.yml
をもとにS3バケットを作成しようとした。
$ aws cloudformation create-stack \
--stack-name demoStack \
--template-body file://demo.yml \
--parameters ParameterKey=bucketName,ParameterValue=$bucket_name
しかし下記のようにError Code: 400 Bad Request
によりバケットの作成でCREATE_FAILED
となりスタック作成がロールバックしてしまう。
Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 82FD2F03945D2983; S3 Extended Request ID: 5keeRc+W8kea1g+S7tWqhXfeXvv+Fs9mhQnu5zlfiiWT1u2O86HFjP54qYiq4/hvcA1yw1M1hxY=)
解決
BucketName
でのParametersの指定の仕方が誤っていることが原因だった。
- 誤:
!Sub $bucketName
- 正:
!Sub ${bucketName}
または!Ref bucketName
modified-demo.yml
Parameters:
bucketName:
Type: String
Resources:
Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref bucketName
上記の修正後のテンプレートmodified-demo.yml
であればS3バケットを正常に作成することができた。
以上