我正试图从S3删除对象,并尝试em DO空间。我的代码做上传像一个魅力。
当我删除对象时,响应是CODE 204,但文件永远不会删除。我做的第一个测试是24小时,文件仍然在S3和空间中。有人能帮助我或测试代码吗?
感谢import boto3
from botocore.exceptions import NoCredentialsError
client = boto3.client('s3', aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
def upload_to_aws(local_file, bucket, s3_file):
try:
result = client.upload_file(local_file, bucket, s3_file)
print("Upload Successful")
print(result)
return True
except FileNotFoundError:
print("The file was not found")
return False
except NoCredentialsError:
print("Credentials not available")
return False
def delete_from_aws(bucket_name, item_key):
result = client.delete_object(Bucket=bucket_name, Key=item_key)
print(result)
return True
这是我从S3得到的响应。
{'ResponseMetadata': {' requesttid ': 'K3BW68X0PSD7M2Z0', 'HostId': 'o/dL7zixtNQStfxg2ENNdQvTf11vullraC6t8ZLeIA3esT/pQLwPgd0Gtn3SQYqWRVxYBHmDjjs=', 'x-amz-request-id': 'K3BW68X0PSD7M2Z0', 'date': 'Mon, 30 Aug 2021 18:10:41 GMT', 'server': 'AmazonS3'}, 'RetryAttempts': 0}}
你也会得到2xx响应,如果你指定一个有效的桶,你可以访问,但你指定了错误的键,例如一个不存在的对象的键。这也将报告为成功。
检查您是否使用正确的密钥(例如cats/persian.png
)。此外,要确保没有多余的、不可打印的字符,例如空格或换行符。这样做的一个好方法是打印/log类似"AAA" + filename + "BBB"
的东西,它将显示文件名中的前导/尾随空白。