问题标签 [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.

0 投票
2 回答
999 浏览

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 函数开始。

0 投票
1 回答
313 浏览

amazon-web-services - 如何在 aws-sam template.yaml 文件中添加插件

有没有办法在 aws-sam template.yaml 文件中添加自定义插件,例如 Serverless.yml 文件:

0 投票
0 回答
526 浏览

aws-sam - AWS 无服务器应用程序模型 (SAM) - 是否有等效的 versionFunctions?

我正在使用 AWS Lambda,由于旧版本太多,它经常超出代码存储限制。我想阻止 Lambda 为每个部署生成一个新版本。

我在无服务器框架中发现,您可以通过在 serverless.yml 中将 versionFunctions 设置为 false 来实现。但是,我发现我的应用程序使用 SAM。在 SAM 中是否有等效或其他方法可以做到这一点?

0 投票
1 回答
279 浏览

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-containersam build导致以下情况:


编辑 2

尝试了类似结果的 python 3.6:


编辑 3

远一点。当 docker 未运行时会发生此错误。当它运行时,我仍然得到一个错误


编辑 4

我将此失败作为错误添加到 aws-sam-cli 的 github 页面:https ://github.com/awslabs/aws-sam-cli/issues/939

0 投票
1 回答
1054 浏览

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 版本控制)的讨论。有处理这个的约定吗?

0 投票
2 回答
3879 浏览

amazon-web-services - API 网关选项方法抛出 403

我有一个Custom Authorizer. API Gateway当通过它部署时,SAM Module它也会Options Method在您启用时创建CORS。我真的不明白为什么自定义授权者会附加到Options端点?在此处输入图像描述

当我尝试从浏览器调用端点时,这是抛出的,当我从方法403中删除时,它工作得很好。AuthorizationOptions

在此处输入图像描述

下面是template.yaml

我也启用了'Access-Control-Allow-Origin': '*'in 标头。不知道这里发生了什么。任何帮助,将不胜感激

0 投票
0 回答
1526 浏览

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 部署函数。有人可以帮我吗?

0 投票
1 回答
47 浏览

amazon-cloudformation - 包含独立模块的应用程序的 SAM 模板

我正在为 Web 应用程序开发后端。后端分为几个模块,例如订单、产品等。这些模块共享一些公共资源,例如 DynamoDB 表、SNS 主题。我希望能够独立部署模块。这种情况的最佳实践是什么?API 网关应该对所有模块通用还是每个模块都应该有自己的 API 网关?感谢您的回复

0 投票
1 回答
3195 浏览

amazon-web-services - 使用 SAM 创建 API Gateway 代理资源

我有一个显然很简单的要求,即在 SAM(亚马逊的无服务器应用程序模型)中创建代理资源。实际上如此简单,以至于亚马逊的文档似乎将此作为练习留给读者!

我想创建一个 AWS API Gateway 包罗万象的端点,以将所有内容代理到另一个 HTTP 服务。

在 AWS 控制台中,我尝试构建的配置如下所示:

在此处输入图像描述

我在这里看到了 Christian Johansen 的这篇出色的帖子和他相关的 Stack Overflow 问题了解如何在 CloudFormation 中做同样的事情。我想我可以在 SAM 中使用该代码,但是,SAM 有其隐式和显式 API,因此如果“正确方法”是引用隐式资源,我想避免创建显式资源。

有谁知道如何做到这一点?

0 投票
1 回答
1267 浏览

amazon-web-services - 如何让 Lambda 函数递归调用自身

我有一个在 Lambda 上运行的应用程序,可通过 APIGateway 访问。

在我的 SAM 模板中,我对其进行了设置,以便 APIGateway 可以调用我的函数。

但现在我需要应用程序递归调用它自己的函数。我认为我可以像这样将一个新的 ConfigLambdaPermission 附加到我现有的。

但是,当函数尝试调用自身时,会引发以下错误:

我不确定我是否错误地添加了权限,或者是否需要执行其他步骤来通知 AWS 权限已更改。

知道如何正确地允许这个 lambda 函数调用自己吗?