Я пытаюсь загрузить файл в корзину 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
Теперь я не уверен, что передать как ведроимя, префикс и ключ.