ОШИБКА: имя сегмента должно соответствовать регулярному выражению "^[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.

Другие вопросы по тегам