Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

aws-sdk-net

最終更新 Markdown で表示Agent セットアップ

開始する前に、Access Key を生成 する必要があります。以降の例では、生成した Access Key IDSecret Access Key の値を表す access_key_idaccess_key_secret 変数を使います。


この例では、aws-sdk-net パッケージのバージョン 3 を使います。S3 サービスクライアントを生成するときに、R2 の設定と認証情報を渡します。

クライアントのセットアップ

この例では、IAmazonS3 の初期化に認証情報を明示的に渡します。必要なら、ほかの AWS SDK と同様に、共有 AWS 認証情報ファイルまたは SDK ストアも使えます。詳細は AWS 認証情報の設定 を参照してください。

private static IAmazonS3 s3Client;

public static void Main(string[] args)
{
	// Retrieve your S3 API credentials for your R2 bucket via API tokens (see: https://developers.cloudflare.com/r2/api/tokens)
	var accessKey = "<ACCESS_KEY_ID>";
	var secretKey = "<SECRET_ACCESS_KEY>";
	var credentials = new BasicAWSCredentials(accessKey, secretKey);
	s3Client = new AmazonS3Client(credentials, new AmazonS3Config
		{
			// Provide your Cloudflare account ID
			ServiceURL = "https://<ACCOUNT_ID>.r2.cloudflarestorage.com",
		});
}

バケットとオブジェクトの一覧

ListBucketsAsyncListObjectsAsync で、アカウント配下のバケットと、各バケットの内容をそれぞれ一覧できます。

static async Task ListBuckets()
{
	var response = await s3Client.ListBucketsAsync();

	foreach (var s3Bucket in response.Buckets)
	{
		Console.WriteLine("{0}", s3Bucket.BucketName);
	}
}
sdk-example
my-bucket
static async Task ListObjectsV2()
{
	var request = new ListObjectsV2Request
	{
		BucketName = "my-bucket"
	};

	var response = await s3Client.ListObjectsV2Async(request);

	foreach (var s3Object in response.S3Objects)
	{
		Console.WriteLine("{0}", s3Object.Key);
	}
}
dog.png
cat.png

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

PutObjectAsyncGetObjectAsync で、R2 バケットへのオブジェクトのアップロードとダウンロードができます。

static async Task PutObject()
{
	var request = new PutObjectRequest
	{
		FilePath = @"/path/file.txt",
		BucketName = "my-bucket",
		DisablePayloadSigning = true,
		DisableDefaultChecksumValidation = true
	};

	var response = await s3Client.PutObjectAsync(request);

	Console.WriteLine("ETag: {0}", response.ETag);
}
ETag: "186a71ee365d9686c3b98b6976e1f196"
static async Task GetObject()
{
	var bucket = "my-bucket";
	var key = "file.txt";

	var response = await s3Client.GetObjectAsync(bucket, key);

	Console.WriteLine("ETag: {0}", response.ETag);
}
ETag: "186a71ee365d9686c3b98b6976e1f196"

署名付き URL を生成する

GetPreSignedURL を使うと、特定の操作への一時アクセスを事前に署名できます。この例では、sdk-example/file.txt 向けの PutObject リクエストを事前署名します。

static string? GeneratePresignedUrl()
{
	AWSConfigsS3.UseSignatureVersion4 = true;
	var presign = new GetPreSignedUrlRequest
	{
		BucketName = "my-bucket",
		Key = "file.txt",
		Verb = HttpVerb.GET,
		Expires = DateTime.Now.AddDays(7),
	};

	var presignedUrl = s3Client.GetPreSignedURL(presign);

	Console.WriteLine(presignedUrl);

	return presignedUrl;
}
https://<ACCOUNT_ID>.r2.cloudflarestorage.com/my-bucket/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>

役に立ちましたか?