事象
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バケットを正常に作成することができた。
以上

