CloudFormation에서 S3 버킷을 만들려고 하면 "Error Code: 400 Bad Request"가 된다

사건



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 버킷을 성공적으로 만들 수 있습니다.



    이상

    좋은 웹페이지 즐겨찾기