用于.NET自定义区域端点配置的Aws-sdk



我正在尝试为.net配置aws-sdk,以便使用提供aws兼容api的云服务提供商。下面使用aws-sdk for php上传的代码是有效的,但如何为aws-sdk.net正确配置它,特别是区域部分:此代码在php:中工作

$bucketName = 'big_bucket';
$filePath = './img33.png';
$keyName = basename($filePath);
$IAM_KEY = 'top_secret_key';
$IAM_SECRET = 'top_secret_secret';

use AwsS3S3Client;
use AwsS3ExceptionS3Exception;

// Set Amazon S3 Credentials
$s3 = S3Client::factory(
array(
'endpoint' => 'https://s3-kna1.citycloud.com:8080',
'credentials' => array(
'key' => $IAM_KEY,
'secret' => $IAM_SECRET
),
'version' => 'latest',
'region'  => 's3-kna1',
'use_path_style_endpoint' => true
)
);
$s3->putObject(
array(
'Bucket'=>$bucketName,
'Key' =>  $keyName,
'SourceFile' => $keyName,
'StorageClass' => 'REDUCED_REDUNDANCY',
'ACL' => 'public-read'
)
);

下面的.net代码还不起作用:

using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Transfer;

public class CityCloudFileHandler
{
private string _accessKey;
private string _secretKey;
private string _mediaBucket;
private string _serviceUrl;
private S3CannedACL _s3CannedAcl;
private AmazonS3Config _s3Config;
public CityCloudFileHandler(string accessKey, string secretKey, string mediaBucket, string serviceUrl,
S3CannedACL s3CannedAcl = null)
{
_accessKey = accessKey;
_secretKey = secretKey;
_mediaBucket = mediaBucket;
_serviceUrl = serviceUrl;
_s3CannedAcl = s3CannedAcl;
_s3Config = new AmazonS3Config
{
ServiceURL = "https://s3-kna1.citycloud.com:8080",
ForcePathStyle = true
};
}

private IAmazonS3 MediaS3()
{
return new AmazonS3Client(_accessKey, _secretKey, _s3Config);
}
}

AmazonS3Client的许多构造函数都接受RegionEndpoint示例。值如下所示:

RegionEndpoint.USWest2或RegionEndpoint.USEast1

以下是AmazonS3Client API文档的链接:AmazonS3Client

此外,如果您使用AWS CLI通过创建两个文件(存储在Windows上的C:\Users\user_NAME.AWS\中(来设置默认用户,则

文件凭据应包含以下信息:

[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key

第二个名为config的文件将(至少(包含以下行:

[default]
region = us-east-2

一旦设置了该用户,只要bucket与默认用户位于同一区域,就可以在不带参数的情况下调用客户端构造函数。

这里有一个将对象上传到S3 bucket的示例:UploadObjectExample

最新更新