使用 IAM 角色 ID 获取 IAM 角色名称

Kyl*_*ine 11 amazon-s3 amazon-web-services amazon-iam aws-sts

所有 AWS IAM 角色都有关联的角色名称和角色 ID。通常看不到角色 ID,因为 AWS 控制台仅显示角色名称。在 S3 事件的 JSON 消息中,有一个 PrimaryID 值,其中包含用于执行 S3 操作的角色的角色 ID,例如"principalId":"AWS:AROAKJDKSDKF93HSA:123456789

\n\n

这份文件我们看到,

\n\n
\n

每个 IAM 实体(用户、组或角色)都有一个已定义的 aws:userid\n 变量。您将需要在存储桶策略中使用此变量\n,以将角色或用户指定为条件元素中的例外。\n 假定角色\xe2\x80\x99s aws:userId 值定义为\n UNIQUE- ROLE-ID:ROLE-SESSION-NAME(例如,\n AROAEXAMPLEID:userdefinesessionname)。

\n
\n\n

所以我们知道S3事件消息中的PrincipalId是IAM角色的角色ID。如何使用该角色 ID 来获取角色名称?我已经搜索了 IAM 和 STS 库,但没有看到任何允许我传递角色 ID 并获取角色名称的 API。STS GetCallerIdentity没有帮助,IAM GetRole仅接受角色名称作为输入。

\n\n

任何帮助将不胜感激。我只是使用S3 Events ,从S3 Event 的消息 json 中读取PrincipalID 值,从PrincipalID 中提取IAM 角色ID,并且我需要一种使用IAM 角色ID 获取IAM 角色名称的方法。

\n

小智 18

以下是通过 AWS CLI 获取它的快速方法:

aws iam list-roles --query 'Roles[?RoleId==`AROAEXAMPLEID`]'
Run Code Online (Sandbox Code Playgroud)

如果您在 Windows 中使用cmd,请尝试以下操作:

aws iam list-roles --query "Roles[?RoleId=='AROAEXAMPLEID']"
Run Code Online (Sandbox Code Playgroud)


Azi*_*ize 1

例如,使用 python 您可以使用list_roles.
输出将为您提供每个角色的角色 ID。只需循环播放并搜索RoleId您想要的即可。

{
    'Roles': [
        {
            'Path': 'string',
            'RoleName': 'string',
            'RoleId': 'string',
            'Arn': 'string',
            'CreateDate': datetime(2015, 1, 1),
            'AssumeRolePolicyDocument': 'string',
            'Description': 'string',
            'MaxSessionDuration': 123,
            'PermissionsBoundary': {
                'PermissionsBoundaryType': 'PermissionsBoundaryPolicy',
                'PermissionsBoundaryArn': 'string'
            },
            'Tags': [
                {
                    'Key': 'string',
                    'Value': 'string'
                },
            ],
            'RoleLastUsed': {
                'LastUsedDate': datetime(2015, 1, 1),
                'Region': 'string'
            }
        },
    ],
    'IsTruncated': True|False,
    'Marker': 'string'
}
Run Code Online (Sandbox Code Playgroud)

RoleId(字符串)
标识角色的稳定且唯一的字符串。有关 ID 的更多信息,请参阅 IAM 用户指南中的 IAM 标识符。

参考: https: //boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.list_roles

我还建议您使用Paginator.

某些 AWS 操作返回不完整的结果,需要后续请求才能获取整个结果集。发送后续请求以在前一个请求停止处继续的过程称为分页

参考:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html