问题标签 [aws-sam-cli]

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 回答
372 浏览

amazon-web-services - AWS SAM CodePipelines 是否每次提交都进行整个重建?

我正在 AWS 中构建一个分布式应用程序,包括基本资源(iam 等)、数据仓库,但主要是无服务器资源,如 lambdas、sns、mongodb、..

为了通过 OTAP 部署它,我正在研究 AWS 工具,主要在此处概述。

这意味着 CodeCommit 中的 1 个 repo 将触发 CodePipeline,它将在正确的位置包含这些组件(实现订单控制):

  • 部署 CF 堆栈
  • 使用 CodeBuild 打包(AWS sam 包)一个 SAM 资源-> 为每个 SAM 资源一个
  • 使用构建步骤创建变更集 -> 每个 SAM 资源一个
  • 使用构建步骤执行变更集 -> 每个变更集一个

因此,作为一个例子,我需要一个 buildspec.yml 用于该 .js 文件旁边的每个 lambda,并且 lambda 还需要在 SAM 模板中构建(它自己的或分组的)。还有一个 build-change-set 步骤和 execute-change-set 步骤。

我的问题: 如果在此设置中,对于整个分布式应用程序的 1 个 repo,我更改了 1 个微小的愚蠢的东西,例如许多 lambdas 中的 1 个超时,那么这个重建是否会重新部署应用程序的所有元素?

如果没有,谢天谢地,但它是如何工作的?CodeCommit 将所有源的整个 zip 发送到 S3,而不是仅更改。因此,所有元素都将被触发,并且在堆栈(CF 或 SAM)的部署过程中,底层技术可能是智能的,并且只执行需要更改的操作。但是,仍然会触发 CodePipeline 中的所有元素(并且有很多元素),这在目标是尽快完成整个部署的情况下效率低下。

如果是,那会很糟糕,然后我会在管道中找到另一个使用自定义代码(lambdas)的解决方案,仅从 CodeCommit API 中提取更改并执行 cretae-change-set 并执行。使用具有主要缺点的 aws sdk 会导致订单控制以及一些诸如“aws sam 包”之类的东西在 sdk 中不可用。

0 投票
1 回答
2031 浏览

aws-api-gateway - 如何为 Api 方法启用 ApiKeyRequired?

我想使用 API Gateway 的标准 API Keys 功能。如果我使用标准 cloudformation,可以通过将方法的属性 ApiKeyRequired 设置为 true 来实现。我怎样才能用 SAM 做到这一点?

我尝试使用 swagger 但这似乎不起作用:

有什么建议么?

0 投票
1 回答
1447 浏览

amazon-web-services - sam local 也可以创建 SNS 主题吗?

我对 sam locals SNS 支持感到困惑。

只能使用 sam 模板将 Lambda 指向现有的 SNS 主题,或者 sam 也可以为我创建主题吗?

如果可能的话,我非常想做后者。

0 投票
1 回答
3319 浏览

amazon-web-services - 无法在 Docker 下运行 AWS SAM CLI

我正在尝试为AWS SAM CLI创建 Docker 映像,但调用任何函数都会出现错误:“无法导入模块 'index'”。我可以在 Docker 之外成功地运行相同的测试用例。您可以在此处克隆测试用例或查看以下文件。

我已经尝试了以下方法:

  • 将文件和父文件夹的权限设置为 777(或 755)。
  • 在 Docker 守护程序中禁用 SELinux(或启用它)。
  • 在特权模式下运行 Docker(或不运行)。
  • 我使用旧的 (SAM 0.22) Docker image得到了同样的错误。
  • 如下所述在本地运行相同的功能(有效)。
  • 压缩文件夹并在 AWS 上运行(有效)。

这些解决方案可能不适用:

  • 包含父文件夹的 zip 文件格式不正确(未使用 zip 文件)。
  • 与 NPM 依赖或 node_modules 相关的问题(index.js 没有依赖)。
  • index.js 中的编译错误(语法正确,适用于 Docker 和 AWS 之外)。
  • 卷正在按此处所述安装在主机上。

Dockerfile

事件.json

index.js

模板.yml

要在本地运行 SAM:

在本地运行 SAM 成功:

在 Docker 下运行 SAM:

在 Docker 下运行 SAM 失败:

操作系统:Ubuntu 16.04.1 x86_64

Docker 版本:18.03.1-ce

SAM CLI 版本:0.3.0

0 投票
4 回答
13437 浏览

amazon-web-services - 在本地运行 AWS SAM 项目会出错

我正在尝试在 Ubuntu 上本地运行 AWS Lambda 项目。当我使用 AWS SAM Local 运行项目时,它向我显示此错误:Error: Running AWS SAM projects locally requires Docker. Have you got it installed?

0 投票
2 回答
199 浏览

aws-lambda - SAM CLI 用于除 Cloud Formation 之外的 CI/CD

是否可以使用 SAM CLI(或人类已知的任何其他工具)来部署具有定义的触发器、内存和超时限制设置等的 lambda 函数,SAM CLI 能够使用 Cloud Formation(甚至在更好的方法)?

目前我正在使用 TravisCI 部署我的 lambda 函数,但这实际上只是一个更好的 AWS zip 上传器,因为我无法像通过 SAM(无服务器应用程序模型)那样为 lambda 函数定义任何触发器。

0 投票
1 回答
4585 浏览

amazon-web-services - 在本地使用 AWS X-Ray 调用 AWS Lambda

有没有办法使用 X-Ray 调用 lambda sam invoke local

根据PaulMaddox提到的想法,我尝试了下面的步骤,不知道我是否误解了:

  1. 按照文档在本地运行 X-Ray 守护程序 (0.0.0.0:2000)
  2. 在我的 lambda 的 template.yaml 中设置ENV AWS_XRAY_DAEMON_ADDRESS: 0.0.0.0:2000
  3. 调用函数,还是报错Missing AWS Lambda trace data for X-Ray. Expected _X_AMZN_TRACE_ID to be set

这是template.yaml设置的一部分,我使用环境变量来设置AWS_XRAY_DAEMON_ADDRESS

在此处输入图像描述

如果您能提供更多信息,那就太好了。

0 投票
1 回答
264 浏览

docker - Docker/SAM 本地 aws sdk 的请求因 (InvalidSignatureException) 而失败

嗨,当尝试在 docker 容器中使用 aws SDK 时,我收到以下错误

但是,当我使用 aws cli 并且本地计算机上 SDK 中的默认凭据提供程序时,aws api 调用工作正常。我的容器内出了什么问题?

0 投票
1 回答
878 浏览

aws-sam-cli - 如何使用 python 在本地安装 AWS SAM?

我正在尝试使用 python 2.7.12 在本地安装 AWS SAM。我遵循了 AWS 文档并遵循了每一步。成功安装后,当我使用 sam --version 命令检查 sam 是否已安装或其版本时,我的终端上会显示以下错误

我已经使用 pip 命令安装了 aws sam local,即 pip install aws-sam-cli。

在检查 sam 版本时,我可以看到以下错误,任何人都可以帮助我在这方面做错了什么,如果您正在寻找我可以提供更多详细信息。

以下是错误:

当前未安装程序“sam”。您可以通过键入安装它: sudo apt install simon

谢谢

0 投票
0 回答
242 浏览

amazon-web-services - aws-sam-cli 官方教程调用函数时出错

我在下面做 aws-sam-cli 官方教程时出错。
https://github.com/awslabs/aws-sam-cli#invoke-functions-locally

本教程说下面的命令正在调用函数。

但是在完成下面的教程之后,template.yaml中有资源“HelloWorldFunction”,

所以,我在下面命令。

我得到了错误。

我使用 macOS High Sierra 10.13.3。