sam打包并部署而不打包参数文件

问题描述

我们的sam软件包命令是-

sam package --template-file template.YML --output-template-file packaged-service.yml --s3-bucket $Template_Bucket_Name --s3-prefix service-build-$packagenumber

sam deploy命令是-

sam deploy packaged-service.yml --stack-name service --capabilities CAPABILITY_NAMED_IAM --region us-east-1 --s3-bucket $Template_Bucket_Name --s3-prefix service-deploy-$packagenumber --template-file template.YML --parameter-overrides  "ParameterKey=EnvType,ParameterValue=ftest" --no-fail-on-empty-changeset

packaged-service.yml文件的重要性是什么?没有它,我可以运行部署。那么它实现了什么目的呢?官方打包和部署页面尚不清楚。 packaged-service.yml具有指向s3存储桶的codeuri字段。在上面的示例中,该文件可能没有用处? 在aws sam deploy命令期间如何使用元数据选项?

解决方法

如果您正在使用最新版本的SAM CLI,请then this package step is now implicitly performed when you do a deploy.

在早期版本的SAM中,如果您的lambda函数需要将依赖项打包到归档文件中,则需要执行package步骤。好像您的Lambda是单个python文件一样,这并不是100%必要的,那么您可以直接进入deploy。 由于大多数SAM项目都比较复杂,package通过将项目打包到归档文件中,将工件上传到S3,然后重新编写SAM yaml来引用上传工件的新S3位置来提供帮助。>

我认为AWS团队最终发现该打包步骤有点多余,并且几乎总是在部署之前执行,因此they streamlined the process with an update made in November 2019使过程变得更加简单。

仍包含package命令,用于向后兼容,如果某些团队仍希望进行多阶段构建和部署过程,则可以提供更大的灵活性。