问题标签 [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 投票
2 回答
421 浏览

eclipse - 如何在 Eclipse 中禁用本地 AWS SAM?

我安装了 AWS Toolkit for Eclipse,因为我正在处理一个与 AWS Lambda 链接的项目。当他们引入 SAM local 时,它一直位于我的运行配置列表的顶部,因此在我单击运行按钮时运行。我只有一个 AWS 项目,不希望它出现在我的列表顶部。我已经检查过了,我看不到任何个人禁用它的方法。是否可以不卸载 AWS 工具包?

0 投票
3 回答
1589 浏览

java - aws lambda 没有将 json 请求转换为 POJO

我有一个 lambda 函数:

然后,当我使用 sam local 测试 lambda 并发送请求时:

我期待 jsonNewNoteRequest自动转换为,但它没有。这是日志:

我的山姆本地模板:

POJO:

依赖项还包括:

我不知道哪一部分是错的,AWS 文档说它可以直接进行映射。请帮忙。

0 投票
4 回答
38743 浏览

aws-lambda - aws-sam-本地环境变量

我在这里关注自述文件:https ://github.com/awslabs/aws-sam-local

我有一个用 python 3.6 编写的 lambda,它类似于这里的 helloworld 示例:https ://github.com/awslabs/aws-sam-local/tree/develop/samples/hello-world/python

template.yml 看起来像这样:

我在 lambda 中有环境变量,但无法在启动时将它们连接起来。文档说我可以创建一个 environment.json 文件并在调用命令上附加以下内容:使用调用的 --env-vars 参数

我的环境文件与示例类似,但出现错误: Unable to find environment variable: api_key

environment.json 看起来像这样:

我运行的命令是这样的:

任何人都可以提供额外的见解吗?

0 投票
0 回答
446 浏览

amazon-web-services - 通过 AWS SAM 将 Lambda 与 API 集成时自定义 API

问题

我正在尝试使用 AWS SAM 在 Lambda 和 API Gateway 之间运行简单的集成。我想自定义 lambda 的输入 - 应用一些requestTemplates。但这些似乎都被忽略了。

重现步骤

运行:

输出是:

它似乎就像创建了默认 API 一样工作。我得到打印的事件。但似乎我的 API 定义被完全忽略了。requestTemplates我总是在没有被应用的情况下取回原始事件。症状:

  • 我在我的招摇定义中放的任何东西都没有效果。改变produces,放任任何畸形的招摇
  • 当我使用无效RestApiId(不存在的参考)时 - 没有变化
  • 当我使用不存在type而不是AWS::Serverless::Api- 没有效果

环境

  • 山姆版本:0.2.4
  • 操作系统:X

代码

我的template.yml

我的swagger.yml

lambda_function2.py

更多资源

来自 sam repo 的这个示例看起来与我想要实现的几乎相同。也不行。

0 投票
1 回答
1883 浏览

aws-lambda - 如何更改 SAM 模板中 API 阶段的名称?

我正在使用 SAM 部署一个 Lambda 函数,并通过 API Gateway 使用以下模板片段使其可通过 HTTP 调用:

这可行,但它创建了一个名为“Prod”的 API 阶段,它必须用作所有 URL 的前缀。我不希望我的 URL 是“ https://something/Prod/foo ”,我希望它们是“ https://something/v1/foo ”,即我选择的东西。

如何更改舞台名称?

我尝试将 API 声明为单独的资源,并使用该StageName属性来设置舞台的名称,但是,这需要我也设置DefinitionBody,这似乎是一个很深的兔子洞。

我知道???在上面的例子中应该是 Swagger,但我宁愿不必在那里写任何东西,模板已经足够冗长了。因为如果我可以使用艺名“Prod”就不必写这部分,在我看来,必须有一种方法可以避免在那里写任何东西而只需设置艺名。

如何在无需编写大量模板代码和/或 Swagger 的情况下更改舞台名称?

0 投票
0 回答
391 浏览

node.js - 调用 nodejs6.10 运行时出错:来自守护进程的错误响应:允许的最小内存限制为 4MB

我正在为 mac 运行 docker,并且正在使用 docker 文件。我还使用 docker-compose 文件在同一个桥接网络上创建一个 mysql docker 实例和一个 sam 本地实例。

我能够将我的文件复制到 sam 本地实例并启动并运行 mysql 实例。

当我做一个 docker-compose --build

当我点击 API 上的任何端点时,我收到以下错误:调用 nodejs6.10 运行时时出错:来自守护进程的错误响应:允许的最小内存限制为 4MB

当我使用 sam local 执行此操作时,我的项目文件夹中没有 docker-compose 或 docker 文件。我不明白这个问题。

据我所知,这来自 docker for mac 运行的底层 linux vm。这些容器是 LXC 容器,它们需要至少 4mb 的内存。

如果我使用以下方式运行此图像:

docker run -it --memory-reservation 10000000 -v /var/run/docker.sock:/var/run/docker.sock -p 3000:3000 samlocal

我仍然遇到这个问题,这让我相信这是在 sam local 中实例化新 lambda 容器的问题。

我不确定是否有办法从容器中修改 LXC 的 hostconfig 文件,或者是否有其他解决方案。

我的 samlocal dockerfile 和 docker-compose 文件如下:

码头文件:

来自高山:3.6

环境版本=0.2.4

运行 apk 添加 --no-cache curl && \ curl -sSLO https://github.com/awslabs/aws-sam-local/releases/download/v ${VERSION}/sam_${VERSION}_linux_386.tar.gz && \ tar -C /usr/local/bin -zxvf /sam_${VERSION}_linux_386.tar.gz && \ apk del curl && \ rm -f /sam_${VERSION}_linux_386.tar.gz

运行 apk add --no-cache py-pip && pip install awscli

工作目录 /var/opt

曝光 3000

复制 。.

入口点 ["/usr/local/bin/sam"] CMD ["local","start-api","--host", "0.0.0.0","--docker-volume-basedir", "/1725_ecpo_lambda "]

码头工人撰写文件:

版本:“3”服务:

samlocal:构建:上下文:./ dockerfile:sam-local-docker.dockerfile 端口:-“3000:3000”卷:-/var/run/docker.sock:/var/run/docker.sock 网络:-后端

数据库:构建:上下文:./ dockerfile:mysql-docker.dockerfile 端口:- 3306:3306 卷:- db-data:/var/lib/mysql - /var/run/docker.sock:/var/run/docker .sock 网络:- 后端

网络:后端:

卷:数据库数据:

0 投票
0 回答
512 浏览

amazon-web-services - AWS cli/sam-local 包 env.json

我正在使用aws-sam-local来编写、测试和部署一些 Lambda 函数。

使用该-env-var选项我可以在本地测试时传递 env.json,因此我的 lambdas 获得属性,我不必进行源代码控制。

如何发布这些值?aws-sam-local cli 似乎位于主 aws cli 之上,我看到了一个--parameter-override选项,但它只需要一个 key=value 字符串。

是否可以通过文件覆盖?如果没有,我如何格式化不同 lambda 的 env vars 的字符串?

谢谢

0 投票
1 回答
103 浏览

amazon-cloudformation - SAM Local:您可以直接使用 CloudFormation 文件而不是 SAM 模板吗?

我正在尝试将已编译的 CloudFormation 文件直接与 SAM Local 一起使用。我找不到办法做到这一点,有没有人成功地做到了这一点?

0 投票
1 回答
513 浏览

amazon-web-services - 设置使用 sam local 部署的 lambda 的静态名称

我正在关注来自 sam local repo 的 helloworld 示例:

但这是我的 template.yaml:

我把它打包:

并部署!

它可以工作,这很好,但这是它创建的 lambda 的名称:

我可以控制那个名字吗?我希望函数的名称在重新部署时静态定义和破坏(到具有相同名称的函数)。

0 投票
0 回答
484 浏览

amazon-web-services - AWS Sam local 的目的是什么

阅读一些文档,但我仍然很困惑。

似乎 Sam local 的目的是能够测试我的 Lambda 在本地是否正确?

好吧,我的许多 Lambda 总是需要访问数据库(Dynamo),也许是某种存储(可能像 S3)以及其他服务。

我如何使用 Sam local 在本地执行此操作?我希望能够定义一个模板来启动本地版本的 Dynamo 和 S3,但我没有看到任何示例。

这只适用于最简单的lamdas吗?或者有没有这个我失踪的嘲笑策略?