在使用boto3进行文件的跨帐户复制时,获取“ ClientError:调用HeadObject操作:禁止时发生错误(403)”

时间:2019-12-13 11:37:31

标签: python-2.7 amazon-s3 boto3

将文件从一个AWS账户中的s3存储桶复制到另一个账户的s3存储桶。 该任务所需的角色/策略是由IAM团队创建的,这超出了我的范围。 此lambda将在目标帐户中运行,并且必须从源存储桶中复制对象。

在运行lambda时,出现以下错误:

ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden

我想知道我的代码中是否要解决某些问题,或者只是权限问题?

这是我的lambda。

import boto3

ID_list=['123456789101']

def lambda_handler(event, context):
    for entry in ID_list:
        sts_client = boto3.client('sts')
        assumed_role_object=sts_client.assume_role(
            RoleArn="arn:aws:iam::" + entry[0] + ":role/requiredrole",
            RoleSessionName="SampleSession"
        )
        credentials=assumed_role_object['Credentials']
        s3_resource=boto3.resource(
            's3',
            aws_access_key_id=credentials['AccessKeyId'],
            aws_secret_access_key=credentials['SecretAccessKey'],
            aws_session_token=credentials['SessionToken'],
        )

##performing copy from one bucket to other

        s3 = boto3.resource('s3')
        source= { 'Bucket' : 'my-bucket' + entry[0], 'Key': 'test.csv'}   ##source bucket,file details
        dest_bucket = s3.Bucket('dest-bucket')     #bucket in destination account
        dest_bucket.copy(source, 'test1.csv')

1 个答案:

答案 0 :(得分:0)

我认为这是一个权限问题,您无法访问源存储桶或目标存储桶。