【问题标题】:How to MAP AWS_IAM Credentials via HTTP Proxy to Actual HTTP EndPoint in API Gateway of AWS?如何通过 HTTP 代理将 AWS_IAM 凭证映射到 AWS API 网关中的实际 HTTP 端点?
【发布时间】:2016-10-30 13:25:08
【问题描述】:

我有一个 http-endpoint - A.

我们可以通过另一个 http-endpoint-B 调用这个端点。

所以 B-->A

我们正在使用 AWS API Gateway 来执行上述操作。现在 - A 受 AWS_IAM 保护,B 没有保护。所以 A 需要 x-amz-security-token、AccessKey、SecretKey、X-Amz-Date、Authorization。我使用 API Gateway 的 API 资源功能 - 方法请求和集成请求来进行适当的映射。

完成了各种其他方式,但最后我收到以下错误:

{ "message": "我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS Secret Access Key 和签名方式......" }

我可以知道我在这里遗漏了什么吗?我已经查看了文档和其他几个参考资料,但没有找到合适的内容。

【问题讨论】:

  • 现在 - A 受 AWS_IAM 保护,... 所以 A 需要 x-amz-security-token、AccessKey、SecretKey 什么? 没有 AWS 服务要求您通过请求传递您的密钥。这是一个秘钥
  • @Michael-sqlbot 我正在使用 Amazon Cognito(围绕它编写的 lambda/auth 代码),它返回临时凭证(x-amz-security-token、AccessKey、SecretKey)来访问预期的资源.
  • 啊,是的,这确实更有意义。

标签: amazon-web-services amazon-iam aws-api-gateway


【解决方案1】:

您收到的错误表明端点 A 期望使用 sigV4 对请求进行签名。目前,API Gateway 只会在使用“AWS 服务代理”集成类型时对后端集成端点的请求进行签名。这是默认隐藏的。设置方法时,在“集成类型”下单击“显示高级”。这使得“AWS 服务代理”可见。当您选择它时,集成字段将更改为与调用 AWS 服务相关的新集。一个example of using the AWS Service Proxy can be found here

请注意,API Gateway 目前不支持调用所有 AWS 服务。更具体地说,它不支持调用其他 API Gateway API 作为集成端点。因此,如果端点 A 是另一个 API Gateway API,那么这将不起作用。如果您需要调用 API Gateway 当前不支持的 AWS 服务,则可以通过创建 Lambda 函数来调用您的终端节点并从 API Gateway 调用 Lambda 函数来解决此问题。

【讨论】:

  • 让我处理它,然后我会在这里更新状态。
  • 请您分享我们如何从 Java 中的 Lambda 函数调用端点的任何示例(代码 sn-p)。我找到了这个:github.com/awslabs/aws-apigateway-sdk-java,但我没有找到任何示例,例如如何设置具有必要端点值的结构并调用?,或者我们应该使用任何标准的 http 库来调用端点?
猜你喜欢
  • 1970-01-01
  • 2021-11-30
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 2018-01-27
  • 2021-05-02
  • 2019-08-19
相关资源
最近更新 更多