ОШИБКА: имя сегмента должно соответствовать регулярному выражению "^[a-zA-Z0-9.\-_]{1,255}$"
Когда я пытаюсь загрузить изображения в корзину, выдается ошибка. "Invalid bucket name "thum.images ": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$""
,
Я думаю, что нет ничего плохого в названии ведра.
Это мой код для загрузки изображения:
def upload_thumbnail_image(image_key, thumbnail_image):
thumbnail_image_bucket = os.environ['thumbnail_bucket']
thumbnail_image = #image path
image_key = EFE3-27C8-EEB3-4987/3612d0bc-bdfd-49de-82ee-3e66cbb06807.jpg
try:
new_object = client.upload_file(thumbnail_image, thumbnail_image_bucket, image_key)
return new_object
except Exception as Exc:
set_log(Exc.args[0],True)
6 ответов
В "Invalid bucket name "thum.images ": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$""
ошибка означает именно то, что написано: имя сегмента должно содержать опечатку или просто неверно, поскольку должно соответствовать следующему шаблону:
^
- начало строки[a-zA-Z0-9.\-_]{1,255}
- от 1 до 255 букв ASCII, цифр, точек,-
или_
символы$
- конец строки.
Вы можете проверить свои названия корзин онлайн здесь.
В имени сегмента не должно быть пробелов.
Я часто получаю эту ошибку, потому что лишняя косая черта попадает в имя корзины после того, как я копирую / вставляю имя корзины с веб-страницы S3, например aws s3 sync s3:///my-bucket/folder folder
, где вместо тройной обратной косой черты должно быть только две.
Я получил эту ошибку, потому что у меня был невидимый непечатаемый символ (BOM, он же Byte Order Mark, он же U+FEFF) в начале файла csv, содержащего путь s3. Мне удалось найти его с помощью этого кода Python:
print(":".join("{:02x}".format(ord(c)) for c in s3_path))
что привело к
feff:
... в начале строки, которая меня предупредила. Вы ожидаете увидеть результат вроде
6d:79:2d:70:61:74:68
(т.е. двухзначные шестнадцатеричные числа).
У меня была та же проблема, и произошла ошибка, когда я сохранил некоторый путь в файле констант.
PATH = 'gs://same_bucket/same_folder/some_file.csv'
а в другом скрипте пытался прочитать его с доп.gs://
df = spark.read.csv(f"gs://{PATH})
Если вы хотите создать подпапки внутри ведра, вы можете добавить к ним префикс в этой переменной File_key. Например, /подпапка/имя_файла.txt
Проверьте, удалены ли уже символы <>, и просто напишите имя корзины в кавычках ''
Если вы запускаете код в коде Jupyter, убедитесь, что вы не разместили имена своих корзин как str, например "bucket_name", это должно быть просто bucket_name = name.