티스토리 뷰

TL;DR

serverless 배포할 S3 버킷 생성

  • Lambda 와 같은 리전으로
  • 버킷명은 S3 전 영역에서 충돌 없는 유니크한 이름으로 설정
  • 3. Set permissions 단계에서 Public access settings for this bucket 의 모든 체크상자를 해제 후 생성.

serverless.yml

provider:
  name: aws
  ......
  deploymentBucket: "생성한 버킷명"

배포

$ sls deploy --force

Episode

아무 생각없이 sls deploy 를 해 대던 어느 날
AWS S3 제약 사항때문에 오류를 알현함.

An error occurred: ServerlessDeploymentBucket - 
You have attempted to create more buckets than allowed 
(Service: Amazon S3; Status Code: 400; 
Error Code: TooManyBuckets; 
Request ID: DF1234B0CC1234FD; 
S3 Extended Request ID: 9vZxi60Vms0Vpj6kTreowvlWAMQaL+/nYDFpHYTA=).

S3 콘솔에 가 보니 버킷 수가 101개.

쓸데 없는 버킷을 지우고
생각하게 된 해결책은
단일 버킷에 deploy 하도록 serverless.yml 설정을 변경이었고
공식 메뉴얼에서 deploymentBucket 설정 항목을 찾게 됨.

provider:
  name: aws
  ......
  deploymentBucket: <Bucket Name>

위와 같이 설정하고
터미널에서 $ sls deploy 명령을 실행했으나 또 오류!

Could not locate deployment bucket. Error: The specified bucket does not exist

구글링을 눈깔나오게 한 끝에
S3 버킷을 직접 생성한 후에 위 설정으로 진행 가능함을 알게됨.

S3 버킷 생성시

  • 리전은 Lambda 와 같은 리전으로
  • 버킷명은 S3 전 영역에서 충돌 없는 유니크한 이름으로 설정
  • 3. Set permissions 단계에서 Public access settings for this bucket 의 모든 체크상자를 해제 후 생성.

이제 생성한 버킷명을 serverless.yml 의 deploymentBucket: 에 설정하고
터미널에서 $ sls deploy 명령으로 배포!

끝난줄 알았으나 또 오류 알현

 An error occurred: ServerlessDeploymentBucket - 
The bucket you tried to delete is not empty 
(Service: Amazon S3; Status Code: 409; 
Error Code: BucketNotEmpty; 
Request ID: 3CE31234F05678D; S3 Extended Request ID: vxOghNZA7W+BZ7tQTl=).

시간을 너무 소비하여 배포 명령에 강제 옵션을 줘버림

$ sls deploy --force

다행히 오류 없이 배포 완료.

이제, serverless deploy 용으로 직접 생성했던 S3 버킷 내부로 들어가보면
하위 폴더가 구성이 아래와 같이 생성됨.

/serverless
                /{serverless.yml 의 service:}
                                                            /{
serverless.yml 의 stage:}
                                                                                                     /{숫자-날짜Z}
                                                                                                                          /compiled-cloudformation-template.json
                                                                                                                          /{service:}.zip

 

댓글