为什么 sam package 将工件发布到桶中?

Why sam package publishes the artifacts to bucket?

作为打包 SAM 应用程序的一部分,应用程序发布到 s3 存储桶,如下所示:

sam package --template-file sam.yaml --s3-bucket mybucket --output-template-file output.yaml


为什么sam package提供--s3-bucket选项?这是必选项吗?

将工件发布到 s3 存储桶的目的是什么?

--s3-bucket 命令中的 sam package 选项是必需的。该命令的作用是获取您的本地代码,将其上传到 S3 和 returns 转换模板,其中本地代码的源位置已替换为 S3 存储桶 URI(对象的 URI - 压缩代码 - 在 S3桶)。

将工件上传到 S3 的主要优点是部署已经位于 AWS 网络中的代码比在部署期间通过 Internet 发送代码更快。

另一件事是,普通的 CloudFormation 让您可以内联 lambda 函数代码,而无需将其推送到 S3,但这种方法存在局限性。如果您的 lambda 函数需要使用不属于 AWS 为特定运行时提供的 lambda 环境的一部分的外部库,或者您的函数的大小很大,那么您仍然需要将函数的代码及其依赖项压缩在一起,并将其上传到 S3,然后再继续。 SAM 只是让这对您来说更容易,因此您不必手动执行此步骤。