我将接口的授权类型修改为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实例,然后尝试访问这个接口(curl URL)时,它给了我Missing Authentication token。
任何帮助都是非常感谢的。谢谢。
发布于 2018-03-02 01:18:52
当您的应用编程接口网关使用AWS_IAM身份验证时,您必须向您的应用编程接口端点发送一个经过亚马逊网络服务SigV4认证的请求(就像亚马逊网络服务软件开发工具包发送给亚马逊网络服务应用编程接口一样)。
Postman有一个内置的SigV4身份验证模式,使其易于测试。但是,curl不需要。curl不是AWS CLI的一部分,所以它不会关心您使用aws configure做了什么。这就是为什么它在curl上失败了。在EC2实例上执行该命令不会神奇地使身份验证工作。
为了使用curl发出请求,您需要计算和计算您自己的SigV4签名参数和头部,以便与请求一起进行。
我刚刚找到(看起来像是)一个很好的curl-alternative来为您处理这个问题:
https://github.com/okigan/awscurl
它包含一个API网关示例。
https://stackoverflow.com/questions/49051310
复制相似问题