Как загрузить файлы в Amazon S3 с помощью пакета boto3, если в имени корзины указан символ / delimiter - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь загрузить файл в корзину Amazon S3, настроенную провайдером.Проблема в том, что имя нашего сегмента --- / provider-folder / my-company-name --- и мне нужно загрузить следующий ключ

/ provider-folder / company-name / date/ file-path

Я пытался использовать префикс и objects.filter для решения проблемы с разделителями, но ни одна из комбинаций, которые я пробовал, не работает.

import boto3
from boto.s3.key import Key
session = boto3.Session(aws_access_key_id=AWS_ACCESS_KEY_ID, 
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
bucket_name = 'provider-folder'
prefix = 'company-name'
s3 = session.resource('s3')
bucket = s3.Bucket(bucket_name)
objs = bucket.objects.filter(Prefix=prefix, delimiter = '/')

s3.meta.client.upload_file('file-path', 
                           objs, 'date/file-path')

Я такжепопробовал следующее:


import boto3
from boto.s3.key import Key
session = boto3.Session(aws_access_key_id=AWS_ACCESS_KEY_ID, 
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
bucket_name = 'company-name'
prefix = 'provider-folder/date'
s3 = session.resource('s3')
bucket = s3.Bucket(bucket_name)
objs = bucket.objects.filter(Prefix=prefix, delimiter = '/')

s3.meta.client.upload_file('file-path', 
                           bucket, 'prefix/file-path')

И это тоже:


import boto3
from boto.s3.key import Key
session = boto3.Session(aws_access_key_id=AWS_ACCESS_KEY_ID, 
aws_secret_access_key=AWS_SECRET_ACCESS_KEY)
bucket_name = 'provider-folder/company-name'
prefix = 'date'
s3 = session.resource('s3')
bucket = s3.Bucket(bucket_name)
objs = bucket.objects.filter(Prefix=prefix, delimiter = '/')

s3.meta.client.upload_file('file-path', 
                           objs, 'file-path')

Все возвращают ту же ошибку

 220             'Invalid bucket name "%s": Bucket name must match '

TypeError: expected string or bytes-like object

Теперь я не уверен, что передать как ведроимя, префикс и ключ.

...