问题标签 [amazon-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 投票
1 回答
45 浏览

python-3.x - 如何使用公共 DNS 或 IP 地址将值传递给 EC2 实例中的 Flask 应用程序?

我在 Ubuntu EC2 实例中有一个烧瓶应用程序。在本地我可以传递参数 例如:'''http://0.0.0.0:8888/createcm?summary=VVV&change=Feauure ''' 其中summary 和change 是参数。如何使用公共 DNS 或 IP 地址从 EC2 外部(即)传递相同的值。还有其他方法可以在 EC2 实例之外传递参数吗?

0 投票
1 回答
61 浏览

amazon-web-services - 与 AWS Service CloudWatch 集成时,如何设置 API Gateway 中调用的 api 版本?

在 API Gateway 中为 CloudWatch 调用操作时收到以下错误消息。

我一直在使用 DescribeAlarms 进行测试。我的设置如下。

  • 集成类型 = AWS 服务
  • AWS 服务 = CloudWatch
  • HTTP 方法 = POST
  • 行动 = 描述警报

该错误引用了 API 版本 2009-05-15,根据第 54 页的文档,它只有 ListMetrics 和 GetMetricStatistics。ListMetrics在我的设置中确实按预期工作。

当前版本是 2010-08-01,但无论如何我都看不到在 API Gateway 中引用它。在文档中的 POST 请求示例中,它显示了一个标有 x-amz-target 的标头,其值为 GraniteServiceVersion20100801.API_Name。

我的解释是我可以将 Name = x-amz-target 和 value 'GraniteServiceVersion20100801.DescribeAlarms' 放在我的 http 标头中,用于 API 网关中的集成请求。

这不会改变响应并给出相同的错误消息。

在调用 describe-alarms 时,我还在 CLI 中使用了 --debug,它在正文中显示...

因此,我还设置了 http 标头以包含值为 'application/x-amz-json-1.1' 的 Content-Type,然后放入

但也没有任何改变。

任何帮助或指导将不胜感激。

0 投票
1 回答
212 浏览

c# - 使用 Rest API 进行 AWS API 身份验证 - AWS 无法验证提供的访问凭证

我正在尝试创建一个简单的 C# 或 VB 程序来连接到 AWS API 并返回一个提供 EC2 实例数据的 JSON 字符串。相反,我收到错误“AWS 无法验证提供的访问凭证”

我尝试在PostmanVB 程序中连接,如下所示:

邮递员的输出是

邮递员输出

我根据邮递员代码编写了vb:

类似的问题之前已经被问过很多次,但我能看到的唯一答案是 PC 时钟是错误的,所以我已经更正了我的问题,使其在真实互联网时间的 0.2 秒内。

我也找不到另一个同样简单的 VB 或 C# 程序成功连接到 EC2,所以这个线程将来可能会帮助其他人。

我想知道签名是否必须用 base64 或其他算法编码?否则我怎样才能让这个在邮递员或 vb/c# 中工作?TIA

0 投票
1 回答
967 浏览

javascript - 如何通过云开发工具包 (CDK) 在 API 网关上为“集成请求”定义“URL 查询字符串参数”

我在查找有关如何通过云开发工具包 (CDK) 在 API 网关上为“集成请求”创建“URL 查询字符串参数”的示例时遇到问题。我发现的大多数示例都是针对 lambda(我不需要这个)而不是 REST(我需要这个),甚至那些不涵盖集成请求。

我正在通过 aws-apigateway.SpecRestAPI 创建 api 定义。

我不确定我是否将集成绑定到 API。

如何将集成与 API 联系起来,如何通过 GUI 映射集成请求?

我尝试导出手动配置的 API 网关,但它不包含有关在何处执行翻译的任何信息。

让我知道是否需要添加更多信息并提前致谢!

0 投票
0 回答
27 浏览

amazon-web-services - API Gateway 更改 url 调用和 api 密钥

我在网关 api 中实现的一个 api 的调用 url 和 api 键在我没有询问的情况下发生了变化。我不希望他们一直在变化。我没有在 aws 文档中找到我的问题的答案。也许问题是使用计划?

这里是 serverless.yml

0 投票
1 回答
175 浏览

amazon-web-services - 具有 Cognito 授权的 AWS API 网关即使使用无效的 id 令牌也不会阻止请求

我遵循此 AWS API Gateway 文档并使用cognito identity token. 我在控制台中测试了我的 cognito id 令牌API Gateway,它有效:它给了我正确的值,从令牌中正确检索 sub 和 email 值:

测试 id 令牌的工作原理

然后我将 Authorizo​​r 添加到我的方法中:

我的方法请求

但是当我现在测试我的方法时,当我从 API Gateway 中的测试表单(方法内部)发送它们时,所有请求仍然通过(提供或不提供身份令牌):

没有令牌或无效令牌的测试

我本来希望得到“未经授权”或“拒绝访问”的响应,但我得到了 200。我还尝试将方法请求中的“需要 API 密钥”设置为 true 并需要 Autorization 标头,但即便如此,上面的请求也会通过状态 200:

将 API Key Required 设置为 true

我还添加了

到我的映射模板,所以完整的模板现在看起来像这样:

但是 sub 和 email 的日志总是空的(并且响应状态仍然是 200):

我在这里做错了什么?

0 投票
2 回答
184 浏览

javascript - 关于 API 网关 URL 错误(SES、API 网关、Lambda 与 javascript/html 集成)的任何想法?

我之前使用 php web 表单创建了网站,但我正在尝试在 AWS 中使用 Lambda / API Gateway / SES 组合,同时从 S3 启动网站,以创建动态提交表单。如果您想快速查看提交表单(和错误),请访问:https ://precious-gemstones.com/about.html

这是我的 javascript,我已将其存储在 S3 存储桶的根级别:

这是我的 Lambda 函数:

这是我的 html 代码片段:

有任何想法吗?

从我的 Lambda 触发器中看到的我的 API 网关信息如下: API 端点:https ://ryj32uh9ki.execute-api.us-east-1.amazonaws.com/email/email API 类型:REST 授权:NONE 方法:POST资源路径:/email 阶段:email

当我从 Lambda 测试时,不需要密钥或授权,并且设置有效(我收到了电子邮件)。API Gateway post 方法的测试也成功。但是,它在我的网站上不起作用,这让我相信这是我的 html/JavaScript 代码中的内容,我将很快对其进行审查/修改。

0 投票
1 回答
648 浏览

aws-lambda - Lambda 函数与 Api 网关(反向代理)使用无服务器和 Express

我对 lambda 函数如何与 API Gateway 一起工作感到困惑。有很多框架可供使用,我经常听到的一个是serverlessand serverless-express. 无服务器是否像ExpressAPI 网关的 Lambda 函数?

例如,如果我想在我的 lambda 中定义多个路由,就像在 Express 应用程序中那样?

有人可以解释一下在 node.js 中为 api 网关调用创建路由的最佳方法是什么,也许这最好用某个框架来完成,还是像 lambda 中那样简单?

0 投票
1 回答
172 浏览

amazon-web-services - 将 Open API 3.0 导入 Amazon API Gateway - 强制 API 密钥

我在这里完成了 OpenAPI 3.0 扩展的大多数(全部?)文档,但我找不到如何在方法上强制使用 api 密钥的示例。基本上我想镜像此处显示的内容(在“方法上需要 API 密钥”部分),但使用 OpenAPI.yaml文件(将其导入 API 网关时)。

有任何想法吗?

Cognito 的这个例子有一个简短的type: "apiKey"地方,但我不确定这是否与我的问题有关。

0 投票
1 回答
92 浏览

jwt - 在 HTTP API 网关中使用授权方时将 JWT 令牌替换为另一个 JWT 令牌

在我的项目中,我目前有一个以这种方式工作的旧式身份验证:

  1. 有一个客户端(独立)与API service运行在容器中的自定义应用程序对话。
  2. 使用支持 OAuth 和 PKCE 的云身份提供程序 (IdP)。当用户进入登录页面然后被重定向到回调时,它通过通常的登录过程提供其令牌。
  3. API service 充当回调的接收者。因此,它获取身份提供者token-1并将其存储在缓存中。基于此,它向客户端返回一个经过修改但不同的token-2“计算” 。token-1
  4. 一旦客户端需要进行 REST 调用,它就会用token-2JWT 令牌装饰它。调用转到与其匹配的 API 服务,token-1然后可以针对 IdP 进行验证。

我需要摆脱API service云原生机制。我假设 AWS HTTP API 网关可以使用其JWT Authorizer 功能直接与 IdP 集成。遗憾的是,我无法影响必须保持功能的当前遗留流程。

但是,我想在 JWT Authorizer 和客户端端点之间插入一个 Lambda,它将面向客户端的令牌交换为 IdP 令牌(执行API service正在执行的操作)。这可能吗?我该如何处理?