【发布时间】:2020-09-03 23:05:27
【问题描述】:
使用客户端会话delete_object方法和obj.delete方法删除s3对象有什么区别?
打电话时
import boto3
session = boto3.Session(aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key_emr,
region_name=region_name)
s3_client = session.client('s3')
s3_client.delete_object(Bucket=bucket_name, Key='input/df.parquet')
代码运行没有任何错误。
但是下面的代码
s3 = boto3.resource('s3')
obj = s3.Object(bucket_name, "input/df.parquet")
obj.delete()
导致ClientError;调用 DeleteObject 操作时发生错误(AccessDenied):访问被拒绝
在使用 aws 数据管理员库时也会发生类似的情况。以下代码的运行
import awswrangler as wr
wr.s3.delete_objects(f"s3://{bucket_name}/input/df.parquet")
不删除任何内容,也不显示任何错误。
【问题讨论】: