文档显示它们完全相同:
本节中描述的sam包和sam deploy命令与其AWS CLI等效命令aws cloudformation package和aws cloudformation deploy完全相同。
但我的经验表明这并不完全正确。当我运行sam deploy
时,我的基于Java的Lambda会上传一个带有以下zip结构的artifact到S3:
- META-INF
- com/example/etc, 类文件
- logback.groovy, 其他资源
- lib, 包含所有jar包
这在Lambda中可以很好地执行。但是,当我按照Lambda + CodePipeline文档中的步骤使用aws cloudformation
时,我得到了这个zip结构(实际上是我的git存储库):
- README.md
- build/
- build.gradle
- buildspec.yml
- events
- gradle/
- gradlew
- gradlew.bat
- src/
- template.yml
buildspec.yml
中的内容无关。我可以通过在桌面上调用两个不同的包命令来重现这两个结构。有任何想法为什么会有差异?我想要理解这个问题,特别是因为文档说它们应该是相同的,在切换我的
buildspec.yml
使用 sam deploy
之前。谢谢!