由于您的问题缺乏详细信息(缺少实例角色详细信息、API 网关策略、未知headers
,或者是否iam_auth
已启用)我只能提供并评论给定的 python 代码。
使用角色的Python代码应该是(这是我曾经使用过的示例)verify代码):
import boto3
import requests
from aws_requests_auth.aws_auth import AWSRequestsAuth
session = boto3.Session()
credentials = session.get_credentials()
auth = AWSRequestsAuth(aws_access_key=credentials.access_key,
aws_secret_access_key=credentials.secret_key,
aws_token=credentials.token,
aws_host='fzoskzctgd.execute-api.us-east-1.amazonaws.com',
aws_region='us-east-1',
aws_service='execute-api')
response = requests.get('https://fzoskzctgd.execute-api.us-east-1.amazonaws.com/test', auth=auth)
print(response.content)
我测试了这个authorizationType
set to AWS_IAM
对于已测试的资源。
API资源政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456:role/instance-role"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-east-1:170576413884:fzoskzctgd/test/*"
}
]
}
实例角色
不需要任何 API 调用权限,因为它们是通过 API 资源策略提供的。实例角色必须仅存在并附加到实例。