仅当此文件不存在时,我才尝试从s3中的旧文件恢复文件。 我当前的代码是这样的:
import botocore
import os
s3 = boto3.resource('s3')
def checkFile(filename, buckett="selfmarkett"):
try:
s3.Object(buckett, filename).load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
try:
_filename, _extension = os.path.splitext(filename)
oldFilename = _filename + ".p_up" + _extension
s3.Object(buckett, filename).copy_from(CopySource=oldFilename)
except Exception as error:
print("Error2:", error)
我的问题是,当脚本尝试使用功能copy_from时,返回此错误:
NoSuchBucket: An error occurred (NoSuchBucket) when calling the CopyObject operation: The specified bucket does not exist
存储桶已在对象中指定,我该如何解决此错误?
答案 0 :(得分:0)
我不熟悉您使用的编码语言,但是是否可以为copy_from提供第二个参数?我怀疑您需要在对copy_from
的调用中指定存储区和文件名/密钥答案 1 :(得分:0)
我遇到了同样的问题,并通过在CopySource的路径内添加存储桶名称来解决此问题,如下所示:
n
答案 2 :(得分:0)
nodeJS api 有同样的问题,它可能与此处相同:https://stackoverflow.com/a/66492490/2083748(您需要对复制源进行 URL 编码)