问题标签 [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 回答
2182 浏览

amazon-web-services - SAM模板环境变量使用map、list、关联数组?

我只在 SAM 模板中看到了具有单个值的示例:

我想做这样的事情,但似乎不起作用:

我想要一个类似于对象列表的环境变量。我可以存储一个分隔字符串并自己解析它,但我更希望它像一个对象/地图/列表,就像我准备好一个 YAML 文件一样。

0 投票
3 回答
8324 浏览

amazon-web-services - 无权执行:dynamodb:Scan Lambda

我需要扫描 dynamodb 数据库,但我不断收到此错误:

“errorMessage”:“调用扫描操作时发生错误 (AccessDeniedException):用户:arn:aws:sts::747857903140:assumed-role/test_role/TestFunction 无权执行:dynamodb:Scan on resource:arn:aws :dynamodb:us-east-1:747857903140:table/HelpBot"

这是我的 Lambda 代码(index.py):

这是我的 SAM 模板(template.yml):

0 投票
1 回答
1555 浏览

aws-api-gateway - 如何在没有明确的招摇定义的情况下在 SAM 中启用“ApiKeyRequired”属性?

在 cloudformation 中,AWS::ApiGateway::Method具有布尔属性ApiKeyRequired。我怎样才能在 SAM 中达到同样的效果?

我知道我们可以使用显式招摇配置启用。就像这样

不能在 SAM 中使用隐式 API 调用而不是显式传递AWS::Serverless::Api?因为 swagger 代码对于较少的端点是可以的,并且一旦端点增加就会变得复杂。有没有APIkeyRequired像我们这样的旗帜Cloudformation

感谢任何帮助谢谢

0 投票
0 回答
411 浏览

aws-api-gateway - SAM LOCAL - 事件中的 Cognito 用户名丢失 - 如何连接?

我正在使用 SAM LOCAL 和 start-api 使用邮递员测试我的 lambda 函数。我使用 Cognito 进行用户身份验证并将 cognito 令牌传递给 API 网关。在生产中,它工作正常。我需要来自 Cognito 的用户名(requestContext:authorizer:claims:cognito:username)。SAM LOCAL start-api 不提供这些。

任何帮助,将不胜感激。

0 投票
1 回答
2116 浏览

amazon-web-services - PUT/POST/DELETE:403 错误禁止 + AWS SAM 的 CORS 错误

我想做一个简单的 HTTP 请求,但被这些错误阻止:

zone.js:2969 选项http://127.0.0.1:3000/project/new 403(禁止)

从源“ http://127.0.0.1:4200 ”访问位于“ http://127.0.0.1:3000/project/new ”的 XMLHttpRequest已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

我的 SAM 模板:

我的拉姆达:

PS:我的网址没问题,因为我用邮递员测试过

0 投票
3 回答
1747 浏览

amazon-web-services - AWS SAM 模板 - 定义由 API Gateway 触发的 SQS 队列

尝试通过AWS SAM CLI. 我正在使用我打包和部署的 SAM 简化模板。

我想要的只是创建一个 SQS 队列并隐式创建一个 API 网关,它将仅将有效负载放入队列中。

这是我到目前为止所尝试的(我定义 Queue + Api 的代码):

当我运行时一切都很好sam validatesam package但是当我运行时它失败了sam deploy。获取我使用的错误aws cloudformation describe-stack-events --stack-name myproject-stack

它清楚地表明了这一点Events it's not supported for AWS::SQS::Queue。但这适用于 Lambdas(资源类型AWS::Serverless::Function),这就是我尝试这种方式的原因。

但是,如果可能的话,我想避免在网关和队列之间使用 lambda。

是否可以直接为 SQS 队列定义 API 网关?如何?

谢谢!

0 投票
1 回答
932 浏览

docker - 从本地 Lambda 本地调用 Lambda

我试图在本地调用一个 lambda 函数,该函数调用另一个本地的 lambda 函数。

我在用sam local start-lambda -t notificationServiceTemplate.yml --docker-network lambda-local --host 0.0.0.0

然后我启动我的消费者 lambda,它调用工作人员 lambda,

aws lambda invoke --function-name ImportUsageConsumerLambda --endpoint-url http://127.0.0.1:3001

消费者 lambda 函数使用这些参数进行调用,

它不起作用,因为 lambda 容器无法访问容器外部的 localhost UnknownEndpoint: Inaccessible host: '0.0.0.0\'. This service may not be available in the 'us-west-2\' region.\n,.

我知道使用端点0.0.0.0:3001将不起作用,因为这是start-lambda设置我的主机可访问的 lambda 端点的地方,而不是与 lambda docker 容器中的网络相同的网络。

在此问题和答案之后,我已设法连接到 dynamodb docker容器

有没有一种我想念的简单方法来做到这一点?就像我可以从 lambda 容器内部调用的 lambda 容器的主机名一样,即options.endpoint = "http://lambda:3001/";

0 投票
4 回答
6148 浏览

amazon-web-services - 在本地运行 AWS SAM CLI 时启用 CORS

每当我尝试通过浏览器通过 POST 访问无服务器 lambda 函数时,我都会收到错误消息

对预检请求的响应未通过访问控制检查:请求的资源上不存在 >'Access-Control-Allow-Origin' 标头。

当它/GET工作正常时,我读过它是因为它没有发送飞行前请求。当我把它改成POST这个时,它就失败了。

我正在运行的命令:

sam local start-api

我的 template.yaml 是:

如何在这些端点上启用 CORS?

0 投票
1 回答
3826 浏览

amazon-web-services - 适用于 SSM 获取参数的 AWS SAM 托管策略

是否有任何类似于Lambda 函数权限的DynamoDBReadPolicy托管策略?ssm:GetParameter*我正在使用 aws-sam-cli 并尝试遵循this,但是当我尝试在 using 时获取参数时sam local start-api,出现以下错误:

InvalidAction: The action or operation requested is invalid. Verify that the action is typed correctly.

这是我尝试获取参数的片段:

相关的模板部分如下。谢谢!

0 投票
1 回答
938 浏览

lambda - sam local start-api 无法导入模块

我只是创建了一个包含内容的 lambda 函数(文件名为 check.js):

以及template.yaml的内容

之后我使用命令:sam local start-api

我收到错误:

我记得之前还好。但自从我重新安装 Docker 后就出现了问题。请帮我解决这个问题。