当前位置: 首页 > 知识库问答 >
问题:

sam包与aws云信息包

封弘伟
2023-03-14

医生说他们做了完全相同的事情:

本节中描述的sam软件包和sam部署命令分别与其AWS CLI等效命令AWS cloudformation软件包和AWS cloudformation deploy相同。

但我的经验表明这并不完全正确。当我为基于Java的Lambda运行sam deploy时,会得到一个工件,该工件上载到S3,并具有以下类型的zip结构:

  • META-INF
  • com/form/etc,类文件
  • logback.groovy,其他资源
  • lib,里面装着我所有的罐子

这在Lambda中执行得很好。但是当我遵循Lambda CodePipeline文档并使用aws云形成时,我得到了这个zip结构(本质上是我的git repo):

  • README. md
  • 建立/
  • build.gradle
  • buildspec.yml
  • 事件
  • gradle/
  • Gradlew
  • gradlew.bat
  • src/
  • template.yml

注意:这种替代结构甚至发生在CodeBuild之外,所以我怀疑它是否与buildspec中的内容有关。yml。我可以通过调用桌面上的两个不同的包命令来重现这两种结构。

有什么想法为什么会有差异吗?在我将我的buildspec.yml切换到使用sam部署之前,我希望理解它,特别是因为文档说它们应该是相同的。

谢谢!

共有2个答案

胡光霁
2023-03-14

我对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

慕胡媚
2023-03-14

“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云形成