医生说他们做了完全相同的事情:
本节中描述的sam软件包和sam部署命令分别与其AWS CLI等效命令AWS cloudformation软件包和AWS cloudformation deploy相同。
但我的经验表明这并不完全正确。当我为基于Java的Lambda运行sam deploy
时,会得到一个工件,该工件上载到S3,并具有以下类型的zip结构:
这在Lambda中执行得很好。但是当我遵循Lambda CodePipeline文档并使用aws云形成
时,我得到了这个zip结构(本质上是我的git repo):
注意:这种替代结构甚至发生在CodeBuild之外,所以我怀疑它是否与buildspec中的内容有关。yml
。我可以通过调用桌面上的两个不同的包命令来重现这两种结构。
有什么想法为什么会有差异吗?在我将我的buildspec.yml
切换到使用sam部署
之前,我希望理解它,特别是因为文档说它们应该是相同的。
谢谢!
我对aws cloudformation软件包有问题
未将定义URI
更新为SAM模板的相应S3 URI,步骤函数如下:
DemoStepFunction:
Type: AWS::Serverless::StateMachine
Properties:
DefinitionUri: stepfunctions/demo_step_1.json
sam包
解决了问题并创建了正确的Cloudformation模板:
DemoStepFunction:
Type: AWS::Serverless::StateMachine
Properties:
DefinitionUri:
Bucket: pipeline-demo-test1
Key: cassdasd6565casdawwebf5f3
“sam包”和“aws云信息包”一样愚蠢。区别来自“sam构建”,它将构建一个新的“模板”。yaml'并放置在{app_dir}/下。aws sam/构建/模板。带有依赖项的yaml。
这是一个新的“模板”。“sam package”(而不是“{app_dir}/template.yaml”)使用“yaml”,从而在包中添加所需的依赖项。请调查目录“{app_dir}/。aws sam/build/“以了解更多信息。
如果在目录{app_dir}/中运行“cloudformation package”。aws sam/build“您将获得与“sam包”相同的结果。”。
将“sam package”与--debug一起使用,查看它正在读取的模板文件:
$ sam package --output-template-file packaged.yaml --s3-bucket {bucket_name} --debug
Using SAM Template at /home/ec2-user/sam-app/.aws-sam/build/template.yaml
“aws cloudformation package”将仅从您指定的位置读取模板文件:
$ aws cloudformation package --template-file template.yaml --output-template-file packaged.yaml --s3-bucket {my-bucket}
AWS SAM The AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications.It provides shorthand syntax to express functions, APIs, databases, and event source
我正试图将FCM与SNS整合。我在这个答案中读到设置应该与GCM相同。我设法创建了一个FCM应用程序,可以向android设备发送消息。当应用程序在后台时,设备在托盘中接收通知,或当应用程序在前台时打印接收的消息。我正试图整合它现在到SNS,但我似乎不能使它工作,没有任何错误信息。
我正在尝试打包/部署用dotnetcore编写的AWS SAM Lambda函数。我有3个文件: pipeline.yml是一个创建CodeBuild项目的云形成模板,设置环境变量,并将GitHub网络钩子连接到特定的buildspec.yml文件。 建筑规范。yml安装所需的软件包,调用dotnet lambda软件包,该软件包生成包含以下内容的压缩文件。Net打包应用程序。然后调用sam包和s
我已经使用aws sam local设置了一个api网关/aws lambda对,并确认运行后可以成功调用它 sam本地启动api 然后,我在docker容器中添加了一个本地Dynamodb实例,并使用aws cli在其上创建了一个表 但是,在将代码添加到lambda以写入我收到的Dynamodb实例之后: 2018-02-22T11:13:16.172Z ed9ab38e-fb54-18a4-0
有没有办法将CloudFormation之外创建的现有AWS资源合并到现有的CloudFormation堆栈中?我希望这样做,而不必在CloudFormation堆栈中添加新资源,并将现有资源的数据迁移到该新资源。我看到AWS现在有云形成堆栈的漂移检测。我想知道是否可以利用它将现有资源合并到一个堆栈中。
我们正在使用AWS SAM构建API。在CodeStar中的Lambda节点模板上构建。事情一直进展顺利,直到我们的模板。yml文件变得太大了。每当推送代码并且CloudFormation开始执行更改集并为SAMendpoint创建堆栈时,它就会失败并回滚到上一次成功构建。 似乎我们有太多的资源超过了每个堆栈的云形成限制。 我尝试拆分模板文件,并编辑构建规范来处理两个模板文件,执行两个AWS云形成