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

时间:2018-03-01 13:59:59

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

我将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

感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

https://github.com/okigan/awscurl

它包含一个API网关示例。