使用boto3访问其他aws用户s3存储桶

时间:2017-11-10 17:42:04

标签: amazon-web-services amazon-s3 boto3

我正在创建一个Django Web应用程序,它可以列出用户s3存储桶,还允许我访问s3存储桶中的其他用户文件。 有没有办法可以使用boto3访问其他用户帐户,如一些临时凭证?

1 个答案:

答案 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'
)