amazon-web-services - 区域之间的 S3 CopyObjectRequest
问题描述
我正在尝试在不同区域的 2 个 S3 存储桶之间复制一些对象。
我有这个:
static void PutToDestination(string filename)
{
var credentials = new Amazon.Runtime.BasicAWSCredentials(awsAccessKeyId, awsSecretKey);
var client = new Amazon.S3.AmazonS3Client(credentials, Amazon.RegionEndpoint.GetBySystemName(awsS3RegionNameSource));
CopyObjectRequest request = new CopyObjectRequest();
request.SourceKey = filename;
request.DestinationKey = filename;
request.SourceBucket = awsS3BucketNameSource;
request.DestinationBucket = awsS3BucketNameDest;
try
{
CopyObjectResponse response = client.CopyObject(request);
}
catch (AmazonS3Exception x)
{
Console.WriteLine(x);
}
}
我得到“您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来的请求发送到此端点。”
似乎没有办法为源和目标设置单独的端点。
我应该看看其他方法吗?
谢谢
解决方案
我认为,如果您没有明确指定区域,那么跨区域之间的复制应该可以工作。
但是,加速不起作用,复制将是
复制=获取+放置
这是文档的解释摘录,其中说-
重要的
Amazon S3 Transfer Acceleration 不支持跨区域复制。
在您的代码中,您指定的区域如下所示。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider())
.withRegion(clientRegion)
.build();
而是在没有区域的情况下初始化 S3client,如下所示。
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider()).build();
推荐阅读
- wordpress - WordPress REST API - 搜索媒体文件时的搜索参数
- google-chrome-extension - 从浏览器扩展访问网站本地存储
- php - 注册后重定向问题
- java - 如何优雅地更新java中的字段?
- database - 为什么 Prometheus 不适合长期存储?
- html - rxweb 根据 Angular 中的 formArray 验证重复输入
- raster - 导入后 QGIS 会更改栅格的颜色
- jquery - 动态添加具有动态子输入字段的输入字段组
- postgresql - pgloader 中 SQL 加载器的 'WHEN' 等价物
- c# - Jquery datatables 在我的应用程序中不起作用,我似乎无法找出问题所在