(使用 CLI)AWS 无法验证提供的访问凭证


执行

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 个变量,并且在默认配置文件下也是如此。

此外,由于会话令牌默认为一小时间隔有效,因此只需检查计算机的时间是否不同步(可能性很小,但值得检查(。

最新更新