서버리스 프레임워크로 배포하는 동안 AWS S3 버킷을 절약하는 방법
문제:
서버리스 프레임워크를 통해 하나 이상의 서비스를 배포할 때 다음과 유사한 버킷을 생성합니다.
<<your-service-name>>-<<stage>>-serverlessdeploymentbucket-12i2nulwb47go
여기에는 우리가 생성한 리소스의 Cloudformation 템플릿, 압축 코드 및 serverless-state.json
파일이 포함되어 있습니다.처음에는 여러 서비스와 여러 환경(예:
dev,qa,stg
)을 관리할 때를 제외하고는 문제가 되지 않을 수 있습니다. 기본 제한인 버킷 100개 또는 하드 캡 제한인 버킷 1000개를 매우 쉽게 초과할 수 있습니다. 더 이상 서비스를 사용하지 않고 삭제하려는 경우 관리하기가 복잡합니다.이 문제를 어떻게 해결합니까?
서버리스 프레임워크를 사용하면 다른 모든 서버리스 배포 버킷을 하나로 중앙 집중화하는 데 도움이 되는 사전 정의된 버킷을 정의할 수 있습니다. 플러그인은 서비스를 접두사로 여러 단계로 분리할 수 있을 만큼 충분히 숙련되어 있습니다.
버킷의 이름을 값으로 사용하여 S3 버킷과 파라미터 스토어를 생성하는 것부터 시작하겠습니다.
Note: I will use aws cdk to create these resources; feel free to skip this part. If you want to learn more about cdk or how to use it, I recommend following this CDK Workshop
서버리스 배포를 중앙 집중화하는 데 사용할 버킷을 만듭니다. 공용 읽기 액세스를 false로 설정하고 버전 관리를 false로 설정합니다(원하는 경우 활성화할 수도 있지만 이렇게 하면 모든 배포에 대해 서로 다른 버전의 객체가 생성되므로 권장되지 않을 수 있음).
<script id="gist-ltag"src="https://gist.github.com/bdllerena/448771914580b0d11506947315018dbd.js"/>
버킷의 이름을 값으로 가질 Parameter Store를 생성합니다. 이렇게 하면 다른 지역의 변수와 함께 값 이름을 사용할 수 있으므로 프로그래밍 방식으로 버킷 이름serverless.yml
을 정의하는 데 도움이 됩니다.
serverless.yml
에서 우리가 만든 변수를 참조하여 코드가 상주하는 버킷을 나타내는 다음 행을 추가합니다.
Note: In most cases we don't need to install or add the serverless-deployment-bucket plugin
provider:
name: aws
runtime: go1.x
stage: dev
region: us-east-1
deploymentBucket:
name: ${ssm(us-east-1):/GLOBAL/DEPLOYMENT_BUCKET}
서비스를 배포한 후 DEV 및 QA 환경을 참조하는 두 개의 접두사가 생성되어 두 개의 버킷을 하나로 저장하는 것을 확인했습니다.
하지만 지역마다 다른 서비스를 제공한다면 어떻게 될까요? 이 경우 버킷은 서비스와 동일한 지역에 있어야 합니다. 그렇지 않으면 이 오류가 표시됩니다.
이 문제를 해결하려면 서비스와 동일한 지역에 버킷을 생성하고 해당 버킷의 이름을 참조할 또 다른 Parameter Store를 생성해야 합니다.
참조: Serverless Deployment Bucket
Reference
이 문제에 관하여(서버리스 프레임워크로 배포하는 동안 AWS S3 버킷을 절약하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/davidshaek/how-to-save-up-on-aws-s3-buckets-while-deploying-with-serverless-framework-17jm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)