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
所以我们知道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)
例如,使用 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
归档时间: |
|
查看次数: |
15457 次 |
最近记录: |