错误:存储桶名称必须匹配正则表达式“^\[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)

原文由 joey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

"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 ,其中必须只有两个反斜杠而不是三重反斜杠。

原文由 Wiktor Stribiżew 发布,翻译遵循 CC BY-SA 4.0 许可协议

我收到此错误是因为我在包含 s3 路径的 csv 文件的开头有一个不可见的非打印字符(BOM,又名字节顺序标记,又名 U+FEFF)。我能够用这个 python 代码找到它:

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

这导致 feff: … 在字符串的开头让我失望。您会期望看到类似 6d:79:2d:70:61:74:68 的输出(即两位十六进制数)。

(更新 2022)根据 Ben Allred 的评论,还有其他非打印字符也可能导致相同的错误并且难以检测。

原文由 Mark Chackerian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题