コンテンツにスキップ

aws-sdk-net

You must generate an Access Key before getting started. All examples will utilize access_key_id and access_key_secret variables which represent the Access Key ID and Secret Access Key values you generated.


この例では、aws-sdk-net パッケージのバージョン 3 を使用しています。S3 サービスクライアントをインスタンス化する際には、R2 設定の資格情報を渡す必要があります。

クライアントの設定

この例では、IAmazonS3 の初期化に資格情報を明示的に渡します。必要に応じて、共有 AWS 資格情報ファイルや他の AWS SDK とインラインで SDK ストアを使用してください。詳細については、AWS 資格情報の設定を参照してください。

private static IAmazonS3 s3Client;
public static void Main(string[] args)
{
var accessKey = "<ACCESS_KEY>";
var secretKey = "<SECRET_KEY>";
var credentials = new BasicAWSCredentials(accessKey, secretKey);
s3Client = new AmazonS3Client(credentials, new AmazonS3Config
{
ServiceURL = "https://<ACCOUNT_ID>.r2.cloudflarestorage.com",
});
}

バケットとオブジェクトのリスト

ListBucketsAsync および ListObjectsAsync メソッドを使用して、アカウント内のバケットとそのバケットの内容をリストできます。

static async Task ListBuckets()
{
var response = await s3Client.ListBucketsAsync();
foreach (var s3Bucket in response.Buckets)
{
Console.WriteLine("{0}", s3Bucket.BucketName);
}
}
// sdk-example
// my-bucket-name
static async Task ListObjectsV2()
{
var request = new ListObjectsV2Request
{
BucketName = "sdk-example"
};
var response = await s3Client.ListObjectsV2Async(request);
foreach (var s3Object in response.S3Objects)
{
Console.WriteLine("{0}", s3Object.Key);
}
}
// dog.png
// cat.png

オブジェクトのアップロードと取得

PutObjectAsync および GetObjectAsync メソッドを使用して、R2 バケットにオブジェクトをアップロードおよびダウンロードできます。

static async Task PutObject()
{
var request = new PutObjectRequest
{
FilePath = @"/path/file.txt",
BucketName = "sdk-example",
DisablePayloadSigning = true
};
var response = await s3Client.PutObjectAsync(request);
Console.WriteLine("ETag: {0}", response.ETag);
}
// ETag: "186a71ee365d9686c3b98b6976e1f196"
static async Task GetObject()
{
var bucket = "sdk-example";
var key = "file.txt"
var response = await s3Client.GetObjectAsync(bucket, key);
Console.WriteLine("ETag: {0}", response.ETag);
}
// ETag: "186a71ee365d9686c3b98b6976e1f196"

プレサインされた URL の生成

GetPreSignedURL メソッドを使用すると、特定の操作への一時的なアクセスを提供するために事前に署名できます。この場合、sdk-example/file.txtPutObject リクエストをプレサインします。

static string? GeneratePresignedUrl()
{
AWSConfigsS3.UseSignatureVersion4 = true;
var presign = new GetPreSignedUrlRequest
{
BucketName = "sdk-example",
Key = "file.txt",
Verb = HttpVerb.GET,
Expires = DateTime.Now.AddDays(7),
};
var presignedUrl = s3Client.GetPreSignedURL(presign);
Console.WriteLine(presignedUrl);
return presignedUrl;
}
// URL: https://<accountid>.r2.cloudflarestorage.com/sdk-example/file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<credential>&X-Amz-Date=<timestamp>&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=<signature>