首页 > 解决方案 > sam打包和部署不打包参数文件

问题描述

我们的 sam package 命令是 -

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

山姆部署命令是 -

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 命令期间使用元数据选项?

标签: amazon-web-servicesamazon-s3amazon-cloudformationaws-samaws-sam-cli

解决方案


如果您使用的是最新版本的 SAM CLI,那么package现在在您进行部署时会隐式执行此步骤。

在早期版本的 SAM 中,package如果您的 lambda 函数需要将依赖项打包到存档中,则需要该步骤。不是 100% 必要的,好像您的 Lambda 是一个单独的 python 文件,那么您可以直接转到deploy. 由于大多数 SAM 项目都比较复杂,因此将package您的项目打包到存档中,将您的工件上传到 S3,然后重新编写您的 SAM yaml 以引用上传工件的新 S3 位置。

我认为 AWS 团队最终发现此打包步骤有点多余,并且几乎总是在部署之前执行,因此他们通过 2019 年 11 月的更新简化了流程,使流程更加简单。

仍然包含该package命令是为了向后兼容,如果某些团队仍然需要多阶段构建和部署过程,则可以提供更大的灵活性。


推荐阅读