我试图实现的目标是将S3中的对象从一个帐户(A1 - 不受我控制)复制到另一个帐户中的S3(A2 - 受控由我)。 对于A1中的OPS,我提供了一个角色,我可以使用boto3库。AWS提供从另一个帐户访问假定的角色以访问我帐户中的S3
session = boto3.Session()
sts_client = session.client('sts')
assumed_role = sts_client.assume_role(
RoleArn="arn:aws:iam::1234567890123:role/organization",
RoleSessionName="blahblahblah"
)
这部分没有问题。 问题是从S3到S3的直接复制失败,因为假设的角色无法访问我的S3。
s3 = boto3.resource('s3')
copy_source = {
'Bucket': a1_bucket_name,
'Key': key_name
}
bucket = s3.Bucket(a2_bucket_name)
bucket.copy(copy_source, hardcoded_key)
由于这个结果我得到
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
在这行代码:
bucket.copy(copy_source, hardcoded_key)
有没有什么办法可以授予访问我的S3为假定角色? 我真的很想在没有在本地下载文件之前直接上传S3到S3副本。
请告知是否有比这更好的方法。
想法是让此脚本每天在AWS数据管道内运行,例如。