AWS CLI를 사용하여 S3 버킷에 로컬 아티팩트 업로드
Amazon S3 위치가 필요한 일부 요청 속성의 경우(버킷 이름 및 파일 이름) 그 대산 로컬 참조를 지정할 수 있습니다. 예를 들어, AWS Lambda 함수의 소스 코드 또는 Amazon API Gateway REST API의 OpenAPI(이전의 Swagger) 파일의 S3 위치를 지정할 수 있습니다. 파일을 S3 버킷에 수동으로 업로드한 다음 템플릿에 위치를 추가하는 대신, 템플릿에서 로컬 아티팩트라는 로컬 참조를 지정한 다음 package CLI 명령을 사용하여 파일을 빠르게 업로드할 수 있습니다. 로컬 아티팩트는 package 명령을 통해 Amazon S3에 업로드하는 파일 또는 폴더의 경로입니다. 예를 들어, 아티팩트는 AWS Lambda 함수의 소스 코드 또는 Amazon API Gateway REST API의 OpenAPI 파일에 대한 경로일 수 있습니다.
파일을 지정하면 이 명령은 해당 파일을 S3 버킷에 직접 업로드합니다. 아티팩트를 업로드한 후 이 명령은 로컬 아티팩트에 대한 참조를 아티팩트를 업로드한 S3 위치로 바꾸어 템플릿의 사본을 반환합니다. 그러면 반환된 템플릿을 사용하여 스택을 생성하거나 업데이트할 수 있습니다.
폴더를 지정하면 이 명령은 폴더에 대한 .zip
파일을 생성한 다음 .zip
파일을 업로드합니다. 경로를 지정하지 않으면 이 명령은 작업 디렉터리에 대한 .zip
파일을 생성하고 이 파일을 업로드합니다. 절대 경로 또는 상대 경로를 지정할 수 있습니다. 여기서 상대 경로는 템플릿 위치에 상대적입니다.
package 명령이 지원하는 리소스 속성에만 로컬 아티팩트를 사용할 수 있습니다. 이 명령 및 지원되는 리소스 속성 목록에 대한 자세한 내용을 알아보려면 AWS CLI 명령 레퍼런스의 package 설명서를 참조하세요.
다음 템플릿은 Lambda 함수의 소스 코드에 대한 로컬 아티팩트를 지정합니다. 소스 코드는 사용자의 /home/user/code/lambdafunction
폴더에 저장됩니다.
원본 템플릿
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Resources": {
"MyFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "index.handler",
"Runtime": "nodejs18.x",
"CodeUri": "/home/user/code/lambdafunction"
}
}
}
}
다음 package 명령은 함수의 소스 코드 폴더가 포함된 .zip
파일을 생성한 다음
버킷의 루트 폴더에 amzn-s3-demo-bucket
.zip
파일을 업로드합니다.
package
명령
aws cloudformation package --s3-bucket
amzn-s3-demo-bucket
\ --template/path_to_template/template.json
\ --output-template-filepackaged-template.json
\ --output json
이 명령은 생성되는 템플릿을 --output-template-file
옵션에서 지정하는 경로에 저장합니다. 다음 예제와 같이 이 명령은 아티팩트를 Amazon S3 위치로 바꿉니다.
결과 템플릿
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Resources": {
"MyFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "index.handler",
"Runtime": "nodejs18.x",
"CodeUri": "s3://amzn-s3-demo-bucket
/<md5 checksum>
"
}
}
}
}