如何在API网关中配置API以仅接受来自指定EC2实例的流量

问题描述 投票:0回答:1

我将API的授权类型更改为AWS_IAM,然后我创建了一个具有以下策略的用户:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-east-1:account_id:api-id/stage/GET/*" ] } ] }

并尝试通过邮递员访问此API,并且它有效。但是当我通过aws configure将此用户的access_key_id和secret_access_key提供给EC2实例然后尝试访问API(curl URL)时,它给了我Missing Authentication token

任何帮助表示赞赏。谢谢。

amazon-web-services amazon-ec2 aws-api-gateway amazon-iam
1个回答
0
投票

当您的API网关使用AWS_IAM身份验证时,您必须向您的API端点发送AWS SigV4身份验证请求(就像AWS SDK对AWS API一样)。

Postman具有内置的SigV4身份验证模式,可以轻松进行测试。但是,curl没有。 curl不是AWS CLI的一部分,所以它不会关心你用aws configure做什么。这就是它与curl失败的原因。在您的EC2实例上执行命令不会神奇地使身份验证工作。

为了使用curl发出请求,您需要计算并计算自己的SigV4签名参数和标题以与请求一起使用。

我刚刚找到(看起来很像)一个很好的curl替代方案来处理这个问题:

https://github.com/okigan/awscurl

它包括一个API网关示例。

© www.soinside.com 2019 - 2024. All rights reserved.