AWSSDK,S3 CopyObjectRequest 返回有效密钥的 NoSuchKey 错误
AWSSDK, S3 CopyObjectRequest returning NoSuchKey error for valid key
我正在尝试使用有效密钥复制 S3 对象,但 CopyObject() 保持 returning "The specified key does not exist."
但是,GetObject 和 ListObjects return 对象没有问题。
这是一个示例:
var copyReq = new CopyObjectRequest
{
SourceBucket = bucketName,
SourceKey = key,
DestinationBucket = bucketName,
DestinationKey = ("/UserImages/mynewkeyname.jpg"),
StorageClass = S3StorageClass.StandardInfrequentAccess,
CannedACL = Amazon.S3.S3CannedACL.PublicRead
};
s3.CopyObject(copyReq);
ListObjectsResponse listResponse = s3.ListObjects(new ListObjectsRequest
{
BucketName = bucketName,
MaxKeys = 1,
Prefix = key
});
var request = new Amazon.S3.Model.GetObjectRequest()
{
BucketName = bucketName,
Key = key,
};
var getResponse = s3.GetObject(request);
key 和 bucketname 在其他地方定义,但它们是从其他 API 响应中提取的。
基于这条线:
DestinationKey = ("/UserImages/mynewkeyname.jpg"),
这似乎是一个合理的假设,即您对源犯了与对目标相同的错误。
存储桶的根是空字符串,而不是 /
,因此 S3 对象键不以前导斜杠开头。
澄清一下,https://example.s3.amazonaws.com/test.jpg
的对象键是 test.jpg
而不是 /test.jpg
。
您还可以使用 S3FileInfo.CopyTo、S3FileInfo.CopyToLocal 或 S3FileInfo.CopyFromLocal 方法执行复制,这是使用 AWS SDK 3.1.0 C#[=10 执行此操作的更优雅的方法=]
我正在尝试使用有效密钥复制 S3 对象,但 CopyObject() 保持 returning "The specified key does not exist."
但是,GetObject 和 ListObjects return 对象没有问题。
这是一个示例:
var copyReq = new CopyObjectRequest
{
SourceBucket = bucketName,
SourceKey = key,
DestinationBucket = bucketName,
DestinationKey = ("/UserImages/mynewkeyname.jpg"),
StorageClass = S3StorageClass.StandardInfrequentAccess,
CannedACL = Amazon.S3.S3CannedACL.PublicRead
};
s3.CopyObject(copyReq);
ListObjectsResponse listResponse = s3.ListObjects(new ListObjectsRequest
{
BucketName = bucketName,
MaxKeys = 1,
Prefix = key
});
var request = new Amazon.S3.Model.GetObjectRequest()
{
BucketName = bucketName,
Key = key,
};
var getResponse = s3.GetObject(request);
key 和 bucketname 在其他地方定义,但它们是从其他 API 响应中提取的。
基于这条线:
DestinationKey = ("/UserImages/mynewkeyname.jpg"),
这似乎是一个合理的假设,即您对源犯了与对目标相同的错误。
存储桶的根是空字符串,而不是 /
,因此 S3 对象键不以前导斜杠开头。
澄清一下,https://example.s3.amazonaws.com/test.jpg
的对象键是 test.jpg
而不是 /test.jpg
。
您还可以使用 S3FileInfo.CopyTo、S3FileInfo.CopyToLocal 或 S3FileInfo.CopyFromLocal 方法执行复制,这是使用 AWS SDK 3.1.0 C#[=10 执行此操作的更优雅的方法=]