我将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
。
感谢任何帮助。谢谢。
答案 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网关示例。