python 错误:存储桶名称必须与regex“^[a-zA-Z 0 -9.[2019 - 04 - 25][2019 - 04 - 25]

fykwrbwg  于 2023-04-28  发布在  Python
关注(0)|答案(5)|浏览(263)

当我尝试将图像上传到存储桶时,它会抛出错误"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)
zfciruhq

zfciruhq1#

"Invalid bucket name "thum.images ": Bucket name must match the regex "^[a-zA-Z0-9.\-_]{1,255}$""错误的意思是:存储桶名称必须包含一些错别字或者只是错误的,因为它应该符合以下模式:

存储桶名称中不能有空格。
我经常遇到这个错误,因为在我从S3 Web页面复制/粘贴存储桶名称后,存储桶名称中会有一个额外的斜杠,比如aws s3 sync s3:///my-bucket/folder folder,其中必须只有两个反斜杠而不是三个反斜杠。

zsbz8rwp

zsbz8rwp2#

我收到这个错误,因为我有一个不可见的非打印字符(BOM,又名字节顺序标记,又名U+FEFF)在包含s3路径的csv文件的开头。我可以用下面的Python代码来实现:

print(":".join("{:02x}".format(ord(c)) for c in s3_path))

这导致了feff:。...在一开始的字符串,这提示我了。您可能希望看到类似于6d:79:2d:70:61:74:68(i.即两位十六进制数)。
(更新2022)根据Ben Allred的评论,还有其他非打印字符也可能导致相同的错误并且难以检测。

tvz2xvvm

tvz2xvvm3#

如果你在Jupyter代码中运行代码,请确保不要将bucket名称放置为str,如“bucket_name”,它应该只是bucket_name=name

kqlmhetl

kqlmhetl4#

如果您想在存储桶中创建子文件夹,可以在此File_key变量中添加位置前缀。例如,/subfolder/file_name。文本

gcuhipw9

gcuhipw95#

检查是否已经删除了〈〉字符,只需在引号''之间写入存储桶名称

相关问题