ClientError:调用 HeadObject 操作时发生错误(403):尝试跨帐户复制时禁止
Posted
技术标签:
【中文标题】ClientError:调用 HeadObject 操作时发生错误(403):尝试跨帐户复制时禁止【英文标题】:ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden when trying cross account copy 【发布时间】:2021-02-13 11:48:37 【问题描述】:我正在做 s3 对象的跨帐户副本。当我尝试将文件从源存储桶复制到目标存储桶时,我收到错误 ClientError: An error occurred (403) when calling HeadObject operation: Forbidden 我在 s3_object.download_fileobj(buffer)
行遇到错误 final_df=pd.DataFrame()
for file in files1:
# file=file.split('/')[-1]
bucket = 'source bucket'
buffer = io.BytesIO()
s3 = boto3.resource('s3')
s3_object = s3.Object(bucket,file)
s3_object.download_fileobj(buffer)
df = pd.read_parquet(buffer)
print(file)
s3 = boto3.client('s3')
file=file.split('/')[-1]
print(file)
final_df=pd.concat([final_df,df],sort=False)
Files1 是存储桶中所有 parquet 文件的列表
【问题讨论】:
【参考方案1】:这里的问题可能在于这是一个跨帐户副本。您可能需要设置一个 IAM 角色以确保两个账户都有权限。
如 https://aws.amazon.com/premiumsupport/knowledge-center/s3-troubleshoot-403/ 中所述,以及其他故障排除选项,
对于持续的跨账户权限,请在您的 对您的存储桶具有权限的帐户。然后,授予另一个 AWS account 承担该 IAM 角色的权限。了解更多信息, 请参阅教程:使用 IAM 角色跨 AWS 账户委派访问。 (https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html)
【讨论】:
是的,我已经设置了一个 IAM 角色,并且源存储桶和目标存储桶已将其添加到信任关系中。源存储桶具有列表、获取和解密权限。目标存储桶已添加 put 权限。以上是关于ClientError:调用 HeadObject 操作时发生错误(403):尝试跨帐户复制时禁止的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:调用 HeadObject 操作时发生错误(404):键“”不存在
AWS BOTO3 S3 python - 调用 HeadObject 操作时发生错误(404):未找到
Django/AWS - 调用 HeadObject 操作时发生错误(403):禁止
我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?