我正在创建一个Django Web应用程序,它可以列出用户s3存储桶,还允许我访问s3存储桶中的其他用户文件。 有没有办法可以使用boto3访问其他用户帐户,如一些临时凭证?
答案 0 :(得分:2)
boto3具有assume_role方法,该方法返回角色的临时凭证。
为了使其正常工作,您正在访问的帐户必须具有允许访问S3存储桶的策略的角色,并且角色本身必须与您正在呼叫的帐户具有信任关系。
运行django应用程序的实例也应该具有允许AssumeRole权限的实例角色。
代码看起来像
import boto3
sts = boto3.client('sts')
response = sts.assume_role(
RoleArn='aws:arn:iam::OTHERACCOUNTID:role/role-that-allows-s3-access',
RoleSessionName='my-random-session-name',
DurationSeconds=900 # how many seconds these credentials will work
)
s3 = boto3.client(
's3',
aws_access_key_id=response['Credentials']['AccessKeyId'],
aws_secret_access_key=response['Credentials']['SecretAccessKey'],
aws_session_token=response['Credentials']['SessionToken']
)
response = s3.list_objects(
Bucket='bucket-in-other-account'
)