问题标签 [aws-sam]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 如何在 go 中编写前/后流量挂钩函数?
我开始使用 AWS SAM,现在我只有一些单元测试,但我想尝试在预流量挂钩函数中运行集成测试。
不幸的是,似乎没有 Golang 的代码示例,我只能找到 Javascript。
从这个示例中,我拼凑出我必须使用代码部署 SDK 并调用PutLifecycleEventHookExecutionStatus,但具体情况仍不清楚。go的aws 代码示例存储库也没有代码部署示例。
有关我正在寻找的主题的更多信息,请访问https://github.com/awslabs/serverless-application-model/blob/master/docs/safe_lambda_deployments.rst#pretraffic-posttraffic-hooks。
我想从测试一个简单地查询 DynamoDB 的 lambda 函数开始。
amazon-web-services - 如何在 aws-sam template.yaml 文件中添加插件
有没有办法在 aws-sam template.yaml 文件中添加自定义插件,例如 Serverless.yml 文件:
aws-sam - AWS 无服务器应用程序模型 (SAM) - 是否有等效的 versionFunctions?
我正在使用 AWS Lambda,由于旧版本太多,它经常超出代码存储限制。我想阻止 Lambda 为每个部署生成一个新版本。
我在无服务器框架中发现,您可以通过在 serverless.yml 中将 versionFunctions 设置为 false 来实现。但是,我发现我的应用程序使用 SAM。在 SAM 中是否有等效或其他方法可以做到这一点?
aws-sam - 无法加载这样的文件——mysql2
sam build
对我来说效果很好,除非我包含恰好被编译的 mysql2 gem。当我包含这个 gem 时,lambda 告诉我它找不到 mysql2。
看着我的.aws-sam/build/MyLambdaFunctionName/vendor/bundle/ruby/2.5.0/gems
我有一个mysql2-.0.5.2
目录
我也尝试在bundle install --path vendor/bundle
本地上传,但它有所不同
为了在我的 AWS Ruby Lambda 函数中包含 mysql2,我该怎么做?
编辑:添加--use-container
到sam build
导致以下情况:
编辑 2
尝试了类似结果的 python 3.6:
编辑 3
远一点。当 docker 未运行时会发生此错误。当它运行时,我仍然得到一个错误
编辑 4
我将此失败作为错误添加到 aws-sam-cli 的 github 页面:https ://github.com/awslabs/aws-sam-cli/issues/939
amazon-web-services - 对使用 SAM 部署的 API 进行版本控制
我已经使用 SAM 部署了 API 的 v1。堆栈是 API Gateway、Lambda 和 DynamoDB 表。
Lambda 函数通过该AutoPublishAlias
属性进行版本控制。别名是“Live”。每次我部署 v1 的新版本时,我都会获得一个新的 Lambda 版本,并且“Live”别名会更改为指向新版本,例如:
发布前:
发布后:
现在我想部署 v2 但保持部署 v1。
我已经考虑过修改我的招摇以创建具有 /v1 和 /v2 基本路径的路径的方法。我还将创建一个指向 v1 最新版本的“v1”别名,并将该别名用于 /v1 API,例如:
然后AutoPublishAlias
将继续在每个新版本上移动“Live”别名,但“v1”别名将保留在原来的位置,例如:
新的 v2 版本
这似乎是合理的,但对 v1 进行错误修复会很困难。我很惊讶我没有在互联网上找到任何关于使用 SAM 进行 API 版本控制(不是 Lambda 版本控制)的讨论。有处理这个的约定吗?
amazon-web-services - AWS SAM——我们能否在不部署整个堆栈的情况下为单个函数部署代码?
我是无服务器和 AWS SAM 的新手。我尝试为我的新 lambda 函数和我的应用程序的 api 网关创建一个 template.yaml,并使用 AWS SAM 部署到 AWS。它工作得很好。但我的问题是,对于每次部署,我们都必须创建新的云形成堆栈,但是有没有一种方法可以更新函数的单个 lambda 代码,而无需使用 AWS SAM 部署整个堆栈?
我也检查了无服务器框架,我们可以在其中使用以下命令单独部署 lambda 函数,而无需创建新的堆栈 无服务器部署函数 -f functionName
使用 SAM 是否有这样的灵活性?我确实检查了 SAM CLI,它提供了用于测试 api 和 lambda 函数的本地环境,但没有看到任何单独的 lambda 部署函数。有人可以帮我吗?
amazon-cloudformation - 包含独立模块的应用程序的 SAM 模板
我正在为 Web 应用程序开发后端。后端分为几个模块,例如订单、产品等。这些模块共享一些公共资源,例如 DynamoDB 表、SNS 主题。我希望能够独立部署模块。这种情况的最佳实践是什么?API 网关应该对所有模块通用还是每个模块都应该有自己的 API 网关?感谢您的回复
amazon-web-services - 使用 SAM 创建 API Gateway 代理资源
我有一个显然很简单的要求,即在 SAM(亚马逊的无服务器应用程序模型)中创建代理资源。实际上如此简单,以至于亚马逊的文档似乎将此作为练习留给读者!
我想创建一个 AWS API Gateway 包罗万象的端点,以将所有内容代理到另一个 HTTP 服务。
在 AWS 控制台中,我尝试构建的配置如下所示:
我在这里看到了 Christian Johansen 的这篇出色的帖子和他相关的 Stack Overflow 问题,了解如何在 CloudFormation 中做同样的事情。我想我可以在 SAM 中使用该代码,但是,SAM 有其隐式和显式 API,因此如果“正确方法”是引用隐式资源,我想避免创建显式资源。
有谁知道如何做到这一点?
amazon-web-services - 如何让 Lambda 函数递归调用自身
我有一个在 Lambda 上运行的应用程序,可通过 APIGateway 访问。
在我的 SAM 模板中,我对其进行了设置,以便 APIGateway 可以调用我的函数。
但现在我需要应用程序递归调用它自己的函数。我认为我可以像这样将一个新的 ConfigLambdaPermission 附加到我现有的。
但是,当函数尝试调用自身时,会引发以下错误:
我不确定我是否错误地添加了权限,或者是否需要执行其他步骤来通知 AWS 权限已更改。
知道如何正确地允许这个 lambda 函数调用自己吗?