【发布时间】:2020-10-28 17:42:35
【问题描述】:
我知道这里还有其他关于此问题的帖子,但我仍在努力寻找正确的解决方案。我正在尝试使用以下 python 脚本在 S3 存储桶(我可以访问)中下载一组特定对象。运行脚本时,第一个对象成功下载,但随后抛出此错误 (403):
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
见下面我的代码:
import csv
import boto3
import re
import logging
from botocore.exceptions import ClientError
prod_number_array_bq = []
prod_number_array_s3 = []
with open('bq-results-20191218-151637-rshujisvqrri.csv') as csv_file:
csv_reader = csv.reader(csv_file,delimiter=',')
line_count = 0
for row in csv_reader:
sliced = re.sub("[^0-9]", "", str(row))
prod_number_array_bq.append(sliced)
s3 = boto3.resource('s3')
bucket = s3.Bucket('********')
for key in bucket.objects.all():
sliced = re.sub("[^0-9]", "", str(key.key))
if((set(sliced) & set(prod_number_array_bq))!=""):
bucket.download_file(key.key,sliced + '.txt')
我们将不胜感激:)
谢谢
【问题讨论】:
-
大概你没有权限去 HEAD 有问题的对象。检查对象的所有权(它是否由另一个 AWS 账户拥有?)如果看起来没问题,您是否有任何 S3 存储桶策略、IAM 策略或 S3 对象 ACL 会限制您对该对象的凭证?
标签: python amazon-web-services amazon-s3 boto3