Lew*_*ers 5 python amazon-s3 amazon-web-services boto3
我知道这里还有其他关于此问题的帖子,但我仍在努力寻找正确的解决方案。我正在尝试使用以下 python 脚本下载 S3 存储桶(我有权访问)中的一组特定对象。运行脚本时,第一个对象成功下载,但随后抛出此错误 (403):
botocore.exceptions.ClientError: An error occurred (403) when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
请参阅下面我的代码:
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')
Run Code Online (Sandbox Code Playgroud)
如有帮助,将不胜感激:)
谢谢
HeadObject通常,当您在拥有权限的情况下看到 403 时s3:GetObject,这是因为s3:ListObjects未为存储桶提供权限并且您的密钥不存在。这是一项安全措施,旨在防止泄露有关存储桶中存在或不存在哪些对象的信息。当您同时拥有s3:GetObject存储桶中对象的权限和s3:ListObjects存储桶本身的权限时,对不存在的密钥的响应是 404“无此密钥”响应。如果您只有s3:GetObject权限并请求不存在的对象,则响应为 403“访问被拒绝”。
| 归档时间: |
|
| 查看次数: |
8235 次 |
| 最近记录: |