Загрузить большие файлы на S3 без аутентификации в Python - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь загрузить большие файлы в Amazon S3 без использования учетных данных. Я создаю плагин для Octoprint с этим, и я не могу вставить какие-либо учетные данные в код из-за его общедоступности. В настоящее время мой код для загрузки выглядит следующим образом:

import boto3
from botocore import UNSIGNED
from botocore.client import Config

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

# Create an S3 client


filename = 'file.txt'
bucket_name = 'BUCKET_HERE'

s3.upload_file(filename, bucket_name, filename)

Однако, это дает мне следующую ошибку:

S3UploadFailedError: Failed to upload largefiletest.mp4 to BUCKETNAMEHERE/largefiletest.mp4: An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Anonymous users cannot initiate multipart uploads.  Please authenticate.

Есть ли способ обойти это или есть предложения по альтернативным библиотекам? Все ценится.

1 Ответ

0 голосов
/ 02 сентября 2018

Вы имеете в виду, что хранилище является общедоступным, но среда выполнения является частной? Если это так, стандартной практикой является установка переменных среды следующим образом:

# first pip install environ
import environ
SOME_KEY = env('SOME_KEY', default='')

Таким образом, вы можете легко обновить свои учетные данные, не меняя код и не ставя под угрозу безопасность.

Edit: Затем на машине будет запущен этот код, вы можете установить переменные среды следующим образом:

...