问题标签 [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.
eclipse - 如何在 Eclipse 中禁用本地 AWS SAM?
我安装了 AWS Toolkit for Eclipse,因为我正在处理一个与 AWS Lambda 链接的项目。当他们引入 SAM local 时,它一直位于我的运行配置列表的顶部,因此在我单击运行按钮时运行。我只有一个 AWS 项目,不希望它出现在我的列表顶部。我已经检查过了,我看不到任何个人禁用它的方法。是否可以不卸载 AWS 工具包?
java - aws lambda 没有将 json 请求转换为 POJO
我有一个 lambda 函数:
然后,当我使用 sam local 测试 lambda 并发送请求时:
我期待 jsonNewNoteRequest
自动转换为,但它没有。这是日志:
我的山姆本地模板:
POJO:
依赖项还包括:
我不知道哪一部分是错的,AWS 文档说它可以直接进行映射。请帮忙。
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 看起来像这样:
我运行的命令是这样的:
任何人都可以提供额外的见解吗?
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 的这个示例看起来与我想要实现的几乎相同。也不行。
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 的情况下更改舞台名称?
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 网络:- 后端
网络:后端:
卷:数据库数据:
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 的字符串?
谢谢
amazon-cloudformation - SAM Local:您可以直接使用 CloudFormation 文件而不是 SAM 模板吗?
我正在尝试将已编译的 CloudFormation 文件直接与 SAM Local 一起使用。我找不到办法做到这一点,有没有人成功地做到了这一点?
amazon-web-services - 设置使用 sam local 部署的 lambda 的静态名称
我正在关注来自 sam local repo 的 helloworld 示例:
但这是我的 template.yaml:
我把它打包:
并部署!
它可以工作,这很好,但这是它创建的 lambda 的名称:
我可以控制那个名字吗?我希望函数的名称在重新部署时静态定义和破坏(到具有相同名称的函数)。
amazon-web-services - AWS Sam local 的目的是什么
阅读一些文档,但我仍然很困惑。
似乎 Sam local 的目的是能够测试我的 Lambda 在本地是否正确?
好吧,我的许多 Lambda 总是需要访问数据库(Dynamo),也许是某种存储(可能像 S3)以及其他服务。
我如何使用 Sam local 在本地执行此操作?我希望能够定义一个模板来启动本地版本的 Dynamo 和 S3,但我没有看到任何示例。
这只适用于最简单的lamdas吗?或者有没有这个我失踪的嘲笑策略?