AWS联邦用户(临时安全凭证)是否存在AWS规范用户ID?

2 投票
1 回答
757 浏览
提问于 2025-04-17 05:46

对于通过STS创建的联邦用户,是否存在一个标准的用户ID?在使用boto时,我需要一个标准的用户ID来给一个存储桶授予权限。

下面是我代码的简单介绍:

  1. 我已经成功使用boto的STS模块创建了临时凭证(使用一个“主”账户),这给我返回了:

    • federated_user_arn(联邦用户的ARN)
    • federated_user_id(联邦用户ID)
    • packed_policy_size(打包策略大小)
    • access_key(访问密钥)
    • secret_key(秘密密钥)
    • session_token(会话令牌)
    • expiration(过期时间)
  2. 然后我使用boto创建了存储桶:

    bucket = self.s3_connection.create_bucket('%s_store' % (app_id))

  3. 现在我想授予权限,我在boto中有两个选择:

    add_email_grant(permission, email_address, recursive=False, headers=None)

    add_user_grant(permission, user_id, recursive=False, headers=None, display_name=None)

第一个方法不适用,因为联邦用户没有绑定邮箱,所以我查看第二个方法。在这里,第二个参数(“user_id”)需要是“与您要授予权限的AWS账户关联的标准用户ID。”但我似乎找不到适合联邦用户的方式。

联邦用户真的存在标准用户ID吗?我是不是忽略了给联邦用户授予权限的更简单方法?

1 个回答

1

联系了boto的作者,了解到:

S3Connection类里面有一个叫get_canonical_user_id()的方法。

这个方法可以让你获取和这个连接相关的用户ID。要注意,这个连接必须之前用来做过一些操作(比如:列出存储桶)。

虽然这个过程有点麻烦,但还是可以做到的。

撰写回答