执行
aws cli 命令时出现以下错误:aws ec2 describe-instances --filters "Name=instance-type,Values=m1.small"
:
A client error (AuthFailure) occurred when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials
凭据来自以下脚本:
import boto3
sts_client = boto3.client('sts')
assumedRoleObject = sts_client.assume_role(
RoleArn="arn:aws:iam::<>:role/service-role/Test-Project",
RoleSessionName="AssumeRoleSession2"
)
credentials = assumedRoleObject['Credentials']
print credentials['AccessKeyId']
print "#"*100
print credentials['SecretAccessKey']
print "#"*100
print credentials['SessionToken']
print "#"*100
我也测试过在角色上启用管理员访问权限。仍然不工作。
角色的信任关系如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*",
"arn:aws:iam::<>:user/<username>"
],
"Service": [
"lambda.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
我只能想到 2 个原因,因为它不起作用,只需检查它是否适合您的情况。
为了确保,您正在导出会话中的所有 3 个变量,即
export AWS_ACCESS_KEY_ID="ASIAI******JQ"
export AWS_SECRET_ACCESS_KEY="n******u1pRocjL"
export AWS_SESSION_TOKEN="FQ*****vKJKTisUF"
或者,如果您在本地机器中使用凭据文件,则其中有所有 3 个变量,并且在默认配置文件下也是如此。
此外,由于会话令牌默认为一小时间隔有效,因此只需检查计算机的时间是否不同步(可能性很小,但值得检查(。