问题标签 [aws-api-gateway]

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

aws-lambda - AWS API Gateway:如何将 IAM 身份传递给 Lambda 函数?

我已使用 AWS API Gateway 前端成功配置了对我的 Lambda 函数的 IAM 身份验证访问,但无法找到如何将 IAM 用户身份传递给我的 Lambda 函数。

我完全需要 IAM 用户身份,并且无法在调用 IAM 用户凭证下运行 Lambda 函数。我所需要的只是在我的 Lambda 函数中调用 IAM 用户身份。

有选择吗?

0 投票
1 回答
3103 浏览

javascript - Amazon API Gateway IAM 使用生成的 JS 开发工具包进行身份验证的示例

我按照官方文档在 Amazon API Gateway 上创建了示例 GET 和 POST API。我已经为这些 API 生成了 JS SDK,我用它来从托管在 S3 上的客户端 JS 文件调用这些 API。无需任何“授权类型”即可完美运行。

现在,当我将 GET 方法的“授权类型”设置为“IAM”时,我需要传递 IAM 凭证才能使其工作。尽管传递了我的 AWS 账户的根凭证,但我在响应标头中得到了这个:

最后它返回一个403错误代码。

我的问题是:有没有人成功地尝试使用从 Amazon API Gateway 生成的 JavaScript 开发工具包和 IAM 身份验证?你能指出我可能出错的地方吗?

谢谢。

0 投票
18 回答
238962 浏览

node.js - AWS Lambda 函数可以调用另一个函数吗

我有 2 个 Lambda 函数 - 一个产生报价,另一个将报价转化为订单。我希望 Order lambda 函数调用 Quote 函数来重新生成报价,而不是仅仅从不受信任的客户端接收它。

我已经看过我能想到的所有地方 - 但看不到我将如何链接或调用函数......当然这存在!

0 投票
5 回答
6914 浏览

aws-lambda - 将 Lambda 输出映射到 API Gateway 标头

我正在尝试将来自 Lambda 函数的 JSON 输出映射到 API Gateway 调用的标头。作为此处的示例,我们可以考虑重定向场景。所以我想Location在我的 API Gateway 调用的响应中添加一个标头。

来自 Lambda 函数的 JSON 输出:

在“方法响应”->“响应标头”中,我可以将Location标头添加到所需的 HTTP 状态代码。

然后在“Integration Response”->“Header Mappings”中,我可以将标头的映射添加Locationsomething

现在我的问题是这应该是什么

注意:我已经尝试过integration.response.header.Location,或使用“映射模板”,但到目前为止还没有运气。

目前可能无法实现(https://forums.aws.amazon.com/thread.jspa?messageID=651482),但由于 API Gateway/Lambda 目前发展如此之快,我会无论如何问。

0 投票
3 回答
5792 浏览

amazon-web-services - AWS Lambda 向 API Gateway 发送响应

我有一个生成一些文本的 lambda 函数。这是一个简单的 Twilio 应用程序

当我使用邮递员发出 POST 请求时,它会准确输出。但我有两个问题:

  1. 标头返回到 application/json,我需要它作为 text/xml。
  2. 当我从 Twilio 发出 POST 请求时,我得到 502 Bad Gateway

我知道它必须对传入的参数映射做一些事情,并将来自 Lambda 的响应作为 text/xml 映射回 API Gateway。但我无法弄清楚如何做到这一点。

在此处输入图像描述在此处输入图像描述

0 投票
1 回答
702 浏览

amazon-web-services - Twilio 在指向连接到 Lambda 的 AWS API Gateway 时返回 502

我有一个指向 AWS API 网关的 twilio 数字,该网关连接到返回 XML 的 AWS lambda 函数。经过多次尝试,我终于能够将 Lambda 的响应映射到 API 网关,现在它正在为 twilio 返回有效的 XML。如果我尝试转到 URL 或尝试对 URL 进行卷曲,我会得到预期的结果:一些 XML。但是,当我从 twilio 尝试此操作时,我得到 502 Bad gateway。不知道为什么?我也从多个 IP 地址尝试过这个,所以我不认为这是一个安全问题,因为我没有在 API 网关上启用任何安全性或身份验证。我需要帮助...

0 投票
1 回答
5280 浏览

amazon-web-services - 处理 AWS API Gateway 阶段的不同端点

我希望能够更改在每个 API Gateway 方法中定义的端点,以便名为“Dev”的登台环境指向我的内部开发 API,而 Prod 阶段当然会路由到我的生产 API。

现在我必须手动更改每种方法,然后部署到 prod stag,但现在要进行任何测试,我必须再次将它们全部更改为开发阶段。

我正在通过 DNS 切换将 Dev 转移到 Prod,但未来的开发仍然需要对每种方法进行更改。

例子:

我有一个名为 User 的资源和一个映射到端点(HTTP 代理)的 GET 方法 - > http://dev.mytestapp.com/api/v1/user

然后我部署到一个名为 Dev 的阶段 - Dev 阶段给了我一个 URL 来调用来请求这个资源,例如。https://xxxobl.execute-api.us-east-1.amazonaws.com/dev/user

现在我进行了测试,它按预期工作,所以我想把它移到生产阶段,称为阶段。当我部署到 prod 时,我的调用 url 现在是https://xxxxobl.execute-api.us-east-1.amazonaws.com/prod/user

但问题是 API 仍在将端点映射到http://dev.mytestapp.com/api/v1/user而不是http://prod.mytestapp.com/api/v1/user

所以我的舞台和网址已经改变,但实际调用的 API 被硬编码为 dev。

有任何想法吗?谢谢

0 投票
5 回答
12916 浏览

aws-api-gateway - 如何将数组查询参数传递给 AWS API Gateway?

Rails API 通常喜欢这样的数组查询参数:

example.com?colors[]=cyan&colors[]=magenta&colors[]=yellow&colors[]=black

我如何将其映射到 lambda 函数?

0 投票
4 回答
11601 浏览

amazon-web-services - 使用 http 端点访问 lambda 中的 HTTP 请求(标头、查询字符串、cookie、正文)对象

我正在尝试查看如何从 lambda 代码中访问请求标头和正文值。如果请求正文是 JSON 格式,它似乎会自动被解析并在事件对象中可用。

如何访问 Lambda 内任何类型的传入“Content-Type”请求的完整查询字符串、请求正文、请求标头 (cookie)?


下面的编辑是我收集的信息,以帮助解决可能相关或不相关的问题。如果您愿意,请忽略它们。


编辑:

我在这里这里浏览了关于 SE 的现有问题。根据这个线程,使用$input.json('$')应该可以解决问题。我猜上面这些链接的答案已经过时了,因为默认情况下 API 网关似乎可以识别请求中的 JSON,如果是这样,它可以在event对象中使用而无需配置任何映射模板。

按照建议设置映射对我不起作用。它不包含请求头信息。

这是有关如何配置的屏幕截图。

在此处输入图像描述


在此处输入图像描述

“headers”键返回一个空白值。使用$input.params('$')还是"$input.params('$')"出错了。


编辑 2

尝试在方法请求中定义标头。仍然没有在 lambda 中获取 User-Agent 值。

在此处输入图像描述


编辑 3

我在 API Gateway 上使用了以下模板映射

以及下面的 lambda 代码

API 网关生成的响应显示了这一点 在此处输入图像描述

查看响应中的“标头”值,AWS-SDK/API 网关/cloudfront 似乎剥离了从 HTTP 客户端接收到的所有标头?这是 $input.params().header 返回的 JSON 的全文

它的标头中没有 User-Agent 字符串,尽管如上面的屏幕截图所示,它是由 REST 客户端发送的。有趣的是,整个查询字符串都可用。不确定这是否是访问它的预期方式。

0 投票
4 回答
2352 浏览

amazon-web-services - Amazon API Gateway - 删除 API 密钥

您能否删除已通过 AWS 管理控制台的 Amazon API Gateway 页面创建的 API 密钥?也许我们只能打开关闭“启用”复选框?