amazon-web-services - 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 命令期间使用元数据选项?
解决方案
如果您使用的是最新版本的 SAM CLI,那么package
现在在您进行部署时会隐式执行此步骤。
在早期版本的 SAM 中,package
如果您的 lambda 函数需要将依赖项打包到存档中,则需要该步骤。不是 100% 必要的,好像您的 Lambda 是一个单独的 python 文件,那么您可以直接转到deploy
. 由于大多数 SAM 项目都比较复杂,因此将package
您的项目打包到存档中,将您的工件上传到 S3,然后重新编写您的 SAM yaml 以引用上传工件的新 S3 位置。
我认为 AWS 团队最终发现此打包步骤有点多余,并且几乎总是在部署之前执行,因此他们通过 2019 年 11 月的更新简化了流程,使流程更加简单。
仍然包含该package
命令是为了向后兼容,如果某些团队仍然需要多阶段构建和部署过程,则可以提供更大的灵活性。
推荐阅读
- sql - 如何替换Oracle中表中匹配记录的列值
- python - 如何使用它的 python 客户端 API 对 Azure DevOps 进行身份验证?
- firebase - 如何反序列化 Firestore 字段中的数值并使用 kotlinx.coroutines 在 de while/loop 中读取它
- java - 获取从父类调用方法的所有子类的列表
- r - 历史股票数据
- javascript - React:使用按钮组件生成输入字段数据
- tensorflow - 如何在 Cloud TPU v2 中使用 SQUAD 2.0 训练 BERT 模型?
- python-3.x - 无法导入 bert.tokenization
- sql - 如何为历史和当前生成数据?
- filter - 如何处理卡尔曼滤波器中的异步数据