问题标签 [serverless-application-model]

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 投票
1 回答
1221 浏览

aws-lambda - 如何在 AWS SAM 中调用另一个 lambda

我正在 SAM 应用程序中编写具有多个功能的应用程序。我可以使用类似于AWS Lambda 调用 Lambda的代码调用已经部署到 AWS 的 lambda 函数,但它不适用于本地函数。我从https://github.com/awslabs/aws-sam-cli/issues/510尝试了一些东西,但似乎还没有任何效果。

这是我得到的最接近的(你需要sam local start-lambda --host 172.17.0.1主机在 docker 网络中的位置)

至少我看到了一些活动,但我得到了错误invokeAsync

以及 start-lambda 控制台中的此错误

更新:

我能够修复我在这个问题的第一个版本中遇到的 ssl 错误,它看起来像它在同步模式下工作lambda.invoke

0 投票
2 回答
952 浏览

amazon-web-services - AWS SAM 本地启动 API 无法解析 Fn::ImportValue

我有 SAM 模板(部分张贴在这里):

命令给我一个通知

sam local start-api --debug --parameter-overrides='StorageStackName=storage-dev'

Unable to resolve property SOURCE_TABLE_NAME: OrderedDict([('Fn::ImportValue', OrderedDict([('Fn::Sub', '${StorageStackName}-SourceTableName')]))]). Leaving as is.

我试图删除 Sub(不走运):

该模板在服务器上工作,因此支持 Fn::ImportValue。所以我的问题是本地调用完全支持 Fn::ImportValue 吗?

storage-dev我确保我使用与我拥有堆栈的本地 SAM 相同的凭据(配置文件) 。有什么办法可以再次检查以确保更多?

0 投票
1 回答
384 浏览

java - 使用 Maven 部署 AWS 无服务器应用程序时如何设置文件的文件权限

我想使用带有 Maven 的 AWS 无服务器应用程序模型部署 AWS lambda 函数。在 lambdas 部署 zip 文件中,我想包含两个需要具有可执行权限的外部文件(file1 和 file2)。(chmod 755 / -rwxr-xr-x)。这些文件都是 64 位 ELF

我本地计算机上的文件具有这些权限,但是当构建并部署到 AWS 时,我可以将函数从在线 AWS lambda 控制台导出并下载到 ZIP 并查看部署的文件现在具有权限 -rw-r--r -- (chmod 644)。

我之前在 Gradle 中解决了这个问题,方法很简单,比如filesMatching('file1') { mode = 0755 }

我在用:

  • java11
  • maven-shade-plugin 3.2.2

我如何在 Maven 中实现这一点?这是我的 pom.xml 的构建部分

0 投票
1 回答
238 浏览

amazon-web-services - 是否可以在 AWS SAM 中检索现有资源标识符?

我有几个服务被拆分,其中一些服务是 lambda + api 网关,我决定使用 AWS 提供的无服务器应用程序模型 (SAM) 工具,这样我就可以在本地处理这些服务时使用本地 start-api服务。

但是,我的主要基础设施不是用 SAM 编写的,而是用 Terraform 编写的。我知道,如果我直接在 SAM 或 Cloudformation 中编写,我的基础架构将构建为一个堆栈,这将允许我在服务的 SAM 模板中引用资源,以便我可以利用我希望使用的资源属性来构建这些服务。SAM 模板中有没有办法检索资源参数(已经存在),例如子网 ID、vpc_names 等?

我目前的解决方案是使用 CLI 检索我希望的属性并将它们作为变量传递到 SAM 模板中,有没有更优雅的解决方案?

0 投票
2 回答
2582 浏览

amazon-web-services - 如何将无服务器应用程序模型 (SAM) 模板转换为 Cloudformation?

这个答案中,我了解到 SAM 是 Cloudformation 的一种转换。

有没有办法通过控制台、CLI 或其他方式从 SAM 模板中获取转换后的 Cloudformation 模板?

0 投票
0 回答
639 浏览

rabbitmq - 无服务器长时间运行的任务

在 node 中学习新东西,我有一个粗略的 API,它需要一个 http 链接 => 下载文件 => 将它上传到我的私人存储。目前我正在使用 RabbitMQ ,其中 API 是发布者,我有一个消费者 VM 始终在运行,等待任务。限制是 VM 需要始终向上并且扩展消费者过于复杂

可能他们是一个更好的解决方案来处理具有扩展性的长时间运行的任务

可能是 AWS Fargate ,但如果可能的话,我正在寻找非平台绑定服务

0 投票
2 回答
421 浏览

amazon-web-services - AWS SAM VSCode ptvsd 调试不使用断点

我正在尝试按照我在此处找到的说明在 VS Code 中调试 Python SAM 应用程序

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-debugging-python.html

我不确定他们为什么不在示例中使用sam build,并指出,.aws-sam/build但这就是我正在尝试的。

我的launch.json样子是这样的:

我现在直接触发 Lambda,所以我像这样调用它们:

然后我在build文件夹中找到的 Lambda 的开头放置一个断点,但是当我在 VS Code 中启动调试器时,它会执行 Lambda 而不会在断点处停止。

我用我正在使用的测试项目和我如何使用它的描述创建了一个 GitHub 存储库。

https://github.com/rupe120/aws-sam-python-debugging-test

有人可以帮我指出我在设置中缺少的东西吗?

0 投票
1 回答
2023 浏览

amazon-web-services - CloudFront 403 禁止异常(AWS SAM 模板)

我正在使用 AWS SAM Cli 和模板部署无服务器应用程序,但 API Gateway 资源在尝试 curl / postman 时返回 403 ForbiddenException 错误。尝试在网上查找,但无法找到任何解决我问题的答案,并且想知道这里是否有人以前经历过这种情况。

模板.yaml:

SAM CLI Version: 0.47.0

错误:

直接从 AWS Lambda 控制台对其进行测试可以正常工作并生成 cloudwatch 日志,但当我使用在部署期间生成的 API url 卷曲/邮递请求时,则不会。我尝试了以下方法:

  • 确保x-api-key标头设置正确并验证 AWS 控制台中的 API Gateway 是否设置了正确的 API 密钥
  • 在模板全局的 API 中配置 CORS。确认它options在 API Gateway 控制台中创建端点
  • 仔细检查端点是否正确

该错误表明这是一个云端问题,因此我已确认 S3 存储桶具有公共访问权限。AWS 控制台中没有其他云端资源。我不知道是什么阻止了请求。

0 投票
2 回答
381 浏览

amazon-web-services - 是否有任何命令可以使用 AWS SAM CLI 在本地以“调试”模式运行 Lambda 函数?

我正在使用 VS Code 编写 Lambda 函数,并在本地配置 AWS SAM(无服务器应用程序模型)CLI。我已经使用这个命令sam init --runtime nodejs12.x --name启动了这个项目

执行此命令后,我得到了一个示例 hello-world 项目脚手架,我可以看到Run Locally|等选项 本地调试 | 在此屏幕截图中进行配置:-

在此处输入图像描述

我相信这个选项是使用安装在 VS Code 编辑器中的“Code Lens”插件来实现的。我能够在本地使用此选项编写自己的代码和调试,但过了一会儿,此选项消失了,如下所示:- 在此处输入图像描述

现在,我不能再在调试模式下运行我的 Lambda 代码了。通过执行这个命令:- sam local invoke --event sam local invoke --no-event

Lambda 在本地正常运行,但不在调试模式下。当我创建新的 AWS SAM 项目时,选项即将出现,但我的代码不再提供。它与 Code Lens 或 SAM Serverless Template 有关吗?

请协助帮助我:- 选项 A)启用此选项选项 B)AWS SAM 中的等效命令以在调试模式下运行 Lambda

谢谢,

0 投票
1 回答
946 浏览

yaml - CloudFormation YAML 状态机:无法识别令牌的 INVALID_JSON_DESCRIPTION

我有以下代码来使用 CloudFormation 部署 Step Functions 状态机:

使用 SAM 在 AWS 上部署,我收到以下错误:

其他一切看起来都是正确的,那么这里发生了什么?所有 Arns 都在定义字符串中正确引用,所以这可能不是问题。