AWS联邦用户(临时安全凭证)是否存在AWS规范用户ID?
对于通过STS创建的联邦用户,是否存在一个标准的用户ID?在使用boto时,我需要一个标准的用户ID来给一个存储桶授予权限。
下面是我代码的简单介绍:
我已经成功使用boto的STS模块创建了临时凭证(使用一个“主”账户),这给我返回了:
- federated_user_arn(联邦用户的ARN)
- federated_user_id(联邦用户ID)
- packed_policy_size(打包策略大小)
- access_key(访问密钥)
- secret_key(秘密密钥)
- session_token(会话令牌)
- expiration(过期时间)
然后我使用boto创建了存储桶:
bucket = self.s3_connection.create_bucket('%s_store' % (app_id))
现在我想授予权限,我在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。要注意,这个连接必须之前用来做过一些操作(比如:列出存储桶)。
虽然这个过程有点麻烦,但还是可以做到的。