我試圖實現的目標是將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數據管道內運行,例如。