提问人:piano-antinomy 提问时间:2/18/2023 更新时间:2/19/2023 访问量:243
AWS IAM 用户凭证始终以匿名身份进行身份验证
AWS IAM user credential always authenticated as anonymous
问:
我正在创建一个简单的 API 网关并尝试应用其身份验证。我创建了一个 IAM 用户(称为 postman-user)并创建了它的凭证(作为 AccessKeyId 和 SecretAccessKey)。
我的 IAM 用户策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "execute-api:*",
"Resource": "*"
}
]
}
在我的 api 网关中,我应用了资源策略,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<my account id>:root",
"arn:aws:iam::<my account id>:user/postman-user"
]
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:<my account id>:<my api g id>/*"
}
]
}
我在邮递员中应用了密钥 ID 和密钥 ID:在此处输入图像描述
然后问题来了。无论我如何使用此 IAM 用户的 aws 凭证调用 api 终端节点,我总是收到此错误:
User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:******
我以为是邮递员未能签署此AWS sigV4,然后我在python中尝试了这个:
url = 'https://<apig id>.execute-api.us-west-2.amazonaws.com/beta/query/'
auth = AWSRequestsAuth( aws_access_key='<my key id>',
aws_secret_access_key='<my secret key>',
aws_host='ec2.amazonaws.com',
aws_region='us-west-2',
aws_service='api')
response = requests.get(url, auth=auth)
这个错误对我来说是永远的
User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:******
谁能告诉我我错过了什么?我点击了资源中的 deployAPI 来暂存 beta 100 次......
尝试过 python,尝试过邮递员,没有任何效果
答:
0赞
Erik Asplund
2/18/2023
#1
听起来 API 平面上缺少一些东西。可能是您尚未在尝试使用的 http 方法上配置 IAM 身份验证。我也可能是资源策略没有附加到api网关。注意:如果策略已更新并重新附加,则需要重新部署 API 网关。
评论
0赞
piano-antinomy
2/19/2023
每次更新资源策略时,我都会重新部署。我的 IAM 使用 * 作为资源,所以这可能不是问题。
1赞
piano-antinomy
2/19/2023
#2
这是一个 API Gateway 配置问题:
资源 -> 单击方法 -> 方法请求 -> 授权:它曾经是 None,更改为 make this work。AWS IAM
评论
0赞
James Ding
3/5/2023
这是对的!谢谢。。在我看到这个之前,我遇到了同样的问题几个小时......
评论