连接到具有代入角色的 AWS 账户 - 无法找到凭证。您可以通过运行“aws configure”来配置凭证

问题描述 投票:0回答:1

从我的 Jenkins 文件中,我尝试使用假设角色策略连接到我的 aws 帐户。这是代码:

        ROLE_ARN="arn:aws:iam::202533537610:role/terraform-jenkinsrole"
        SESSION_NAME="terraformsession"
            
        # Assume the role
            CREDENTIALS=$(aws sts assume-role --role-arn "$ROLE_ARN" --role-session-name "$SESSION_NAME")
            
        # Extract and export the credentials
            export AWS_ACCESS_KEY_ID=$(echo $CREDENTIALS | jq -r .Credentials.AccessKeyId)
            export AWS_SECRET_ACCESS_KEY=$(echo $CREDENTIALS | jq -r .Credentials.SecretAccessKey)
            export AWS_SESSION_TOKEN=$(echo $CREDENTIALS | jq -r .Credentials.SessionToken)

该角色的信任关系如下:

      {
        "Version": "2012-10-17",
         "Statement": [
      {   
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::202533537610:role/terraform-jenkinsrole"
        },
        "Action": "sts:AssumeRole"
      }
   ]
 }

此角色附加的 2 项策略是:

        Policy 1: AdministratorAccess 
        Policy 2:  
       {
             "Version": "2012-10-17",
              "Statement": [
        {
             "Effect": "Allow",
             "Action": "sts:AssumeRole",
             "Resource": 
              "arn:aws:iam::202533537610:role/terraform-jenkinsrole"
          }
       ]
      }

当我运行詹金斯管道时,我收到此错误:

++ aws sts assume-role --role-arn arn:aws:iam::202533537610:role/terraform-jenkinsrole --role-session-name terraformsession
Unable to locate credentials. You can configure credentials by running "aws configure".

此 IAM 角色具有 ec2 服务的管理员访问权限。为什么无法使用 CLI 命令获取临时凭证?

aws sts assume-role --role-arn "$ROLE_ARN" --role-session-name "$SESSION_NAME"
amazon-web-services amazon-ec2 amazon-iam
1个回答
0
投票

要调用

aws sts assume-role
,您需要一组 AWS 凭证,以便 AWS 知道您是谁并可以验证您是否有权担任该角色。这样,您将被允许担任该角色,但我不会被允许,因为我没有任何允许担任该角色的凭据。

鉴于调用

Unable to locate credentials
时显示
aws sts assume-role
,AWS CLI 似乎无法找到要使用的凭证。

如果代码在 Amazon EC2 实例上运行,则通常通过向 EC2 实例分配 IAM 角色来提供权限。如果您在自己的计算机上运行代码,则需要通过配置文件提供 IAM 用户凭证。您可以使用

aws configure
命令创建配置文件。

© www.soinside.com 2019 - 2024. All rights reserved.