Rua*_*ien 6 c# asp.net amazon-s3
我最近一直在尝试编写代码来添加和删除Amazon S3存储桶中的内容.我是Amazon S3和AmazonWS .Net SDK的新手.
桶区域端点是http://sqs.eu-west-1.amazonaws.com所以我构建了我的客户端:
_s3Client = AWSClientFactory.CreateAmazonS3Client(accessKey, awsSecretKey, new AmazonS3Config().WithServiceURL("http://sqs.eu-west-1.amazonaws.com"));
Run Code Online (Sandbox Code Playgroud)
如果我遗漏了AmazonS3Config位,我会收到此错误:
在没有新位置的情况下返回重定向.这可能是由于尝试访问具有名称在不同区域中的句点的桶,然后配置客户端.
当我输入AmazonS3Config位时,我不再收到该错误,但我似乎无法访问此存储桶或我通常可以访问的任何其他存储桶.我发送的任何请求都返回null.
我已经使用配置到标准美国区域的其他存储桶测试了我的代码,这一切都运行良好.唯一的区别在于CreateAmazonS3Client方法,我在其中设置了具有EU端点的配置.
有人可以给我一些指导,说明我应该如何让我的客户在欧盟(爱尔兰)地区工作.我一直在寻找几个小时,我所遵循的每个教程或文档到目前为止都没有工作.
Geo*_*ord 15
只需使用标准端点 - s3.amazonaws.com
AmazonS3Config S3Config = new AmazonS3Config {
ServiceURL = "s3.amazonaws.com",
CommunicationProtocol = Amazon.S3.Model.Protocol.HTTP
};
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWS_Key, AWS_SecretKey, S3Config);
PutObjectRequest UploadToS3Request = new PutObjectRequest();
UploadToS3Request.WithFilePath(localPath)
.WithBucketName(bucket)
.WithKey(key);
client.PutObject(UploadToS3Request);
Run Code Online (Sandbox Code Playgroud)
它可能仍然与谁有关..
使用旧的 AWS 开发工具包(版本 1),您可以简单地创建 S3 客户端,而无需区域或AmazonS3Config. 无需指定服务 URL,它为您使用上面提到的默认值。您真正需要该区域来使用 S3 的唯一时间是当您创建一个存储桶时,这可能很少是应用程序的要求。这对我有用,我与 S3 执行的所有通信都是通过 https 进行的。
使用适用于 .Net 的新 AWS 开发工具包(版本 2 及更高版本),似乎区域参数是必需的,实际上,AmazonS3Client如果没有给出,则会引发异常。我尝试通过指定通用https://s3.amazonaws.comURL来解决此限制,但失败了,因为新 SDK 没有遵循来自默认(我认为是 US-EAST-1)端点的 301 重定向。
所以总而言之,最好指定区域,即使是在旧 API 上,以避免将来中断。如果您的应用程序进行跨区域调用,并且速度较慢(可能)且成本较高,那么您的代码最好能证明这一点。
| 归档时间: |
|
| 查看次数: |
9996 次 |
| 最近记录: |