Загрузка файлов в общедоступную корзину S3 без аутентификации с использованием Python - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь загрузить файл из корзины S3, который является общедоступным и не требует аутентификации (то есть не нужно жестко кодировать ключи доступа и секретные ключи для доступа или сохранения в AWS CLI), но я все еще не могу получить к нему доступ через boto3.

Python-код

import boto3
import botocore
from botocore import UNSIGNED
from botocore.config import Config

BUCKET_NAME = 'converted-parquet-bucket' 
PATH = 'json-to-parquet/names.snappy.parquet' 

s3 = boto3.client('s3', config=Config(signature_version=UNSIGNED))

try:
    s3.Bucket(BUCKET_NAME).download_file(PATH, 'names.snappy.parquet')
except botocore.exceptions.ClientError as e: 
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise

Я получаю этот код ошибки при выполнении кода

AttributeError: у объекта 'S3' нет атрибута 'Bucket'

Если это поможет, вот моя публичная политика:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::converted-parquet-bucket/*"
        }
    ]
}

Если вы предлагаете хранить ключи, пожалуйста, не надо, это не то, что я пытаюсь сделать.

1 Ответ

1 голос
/ 24 октября 2019

попробуйте ресурс s3 = boto3.resource('s3') вместо s3 = boto3.client('s3')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...