Skip to content

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

S3

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

R2 は S3 互換 API に対応しています。そのため、任意の S3 SDK、ライブラリ、ツールでバケットを操作できます。既存の S3 向けコードがある場合は、エンドポイント URL を変えるだけで R2 に使えます。

1. バケットを作成する

バケットは R2 上でオブジェクトを保存します。新しい R2 バケットを作成する手順は次のとおりです。

  1. Cloudflare アカウントにログインします。

    npx wrangler login
  2. my-bucket という名前のバケットを作成します。

    npx wrangler r2 bucket create my-bucket

    求められた場合は、バケットを作成するアカウントを選びます。

  3. バケットが作成されたことを確認します。

    npx wrangler r2 bucket list
  1. Cloudflare ダッシュボードで R2 object storage を開きます。

    Overview を開く ↗
  2. Create bucket を選びます。

  3. バケット名を入力します。

  4. バケットの ロケーションデフォルトのストレージクラス を選びます。

  5. Create bucket を選びます。

2. API 認証情報を生成する

S3 API を使うには、認証情報 を生成し、Access Key ID と Secret Access Key を取得します。

  1. Cloudflare ダッシュボード を開きます。
  2. Storage & databases > R2 > Overview を選びます。
  3. API Tokens の Manage を選びます。
  4. Create Account API token または Create User API token を選びます。
  5. Object Read & Write 権限を選び、Apply to specific buckets only でアクセスするバケットを選びます。
  6. Create API Token を選びます。
  7. Access Key IDSecret Access Key をコピーします。シークレットは再表示できないため、安全に保管します。

S3 API のエンドポイント URL も必要です。トークン作成後の Create API Token 確認ページの下部か、R2 Overview ページで確認できます。

https://<ACCOUNT_ID>.r2.cloudflarestorage.com

3. AWS SDK を使う

次の例では、Python と JavaScript の SDK の使い方を示します。ほかの言語は S3 互換 SDK の例 を参照してください。GoJavaPHPRubyRust があります。

  1. boto3 をインストールします。

    pip install boto3
  2. アップロード用のテストファイルを作成します。

    echo 'Hello, R2!' > myfile.txt
  3. 認証情報を使って S3 クライアントを作成し、バケットを操作します。

    import boto3
    
    s3 = boto3.client(
        service_name='s3',
        # Provide your R2 endpoint: https://<ACCOUNT_ID>.r2.cloudflarestorage.com
        endpoint_url='https://<ACCOUNT_ID>.r2.cloudflarestorage.com',
        # Provide your R2 Access Key ID and Secret Access Key
        aws_access_key_id='<ACCESS_KEY_ID>',
        aws_secret_access_key='<SECRET_ACCESS_KEY>',
        region_name='auto',  # Required by boto3, not used by R2
    )
    
    # Upload a file
    s3.upload_file('myfile.txt', 'my-bucket', 'myfile.txt')
    print('Uploaded myfile.txt')
    
    # Download a file
    s3.download_file('my-bucket', 'myfile.txt', 'downloaded.txt')
    print('Downloaded to downloaded.txt')
    
    # List objects
    response = s3.list_objects_v2(Bucket='my-bucket')
    for obj in response.get('Contents', []):
        print(f"Object: {obj['Key']}")
  4. この内容を example.py として保存し、実行します。

    python example.py
    Uploaded myfile.txt
    Downloaded to downloaded.txt
    Object: myfile.txt

ほかの操作は boto3 の例 を参照してください。

  1. @aws-sdk/client-s3 パッケージをインストールします。

    npm install @aws-sdk/client-s3
  2. 認証情報を使って S3 クライアントを作成し、バケットを操作します。

    import {
    	S3Client,
    	PutObjectCommand,
    	GetObjectCommand,
    	ListObjectsV2Command,
    } from "@aws-sdk/client-s3";
    
    const s3 = new S3Client({
    	region: "auto", // Required by AWS SDK, not used by R2
    	// Provide your R2 endpoint: https://<ACCOUNT_ID>.r2.cloudflarestorage.com
    	endpoint: "https://<ACCOUNT_ID>.r2.cloudflarestorage.com",
    	credentials: {
    		// Provide your R2 Access Key ID and Secret Access Key
    		accessKeyId: "<ACCESS_KEY_ID>",
    		secretAccessKey: "<SECRET_ACCESS_KEY>",
    	},
    });
    
    // Upload a file
    await s3.send(
    	new PutObjectCommand({
    		Bucket: "my-bucket",
    		Key: "myfile.txt",
    		Body: "Hello, R2!",
    	}),
    );
    console.log("Uploaded myfile.txt");
    
    // Download a file
    const response = await s3.send(
    	new GetObjectCommand({
    		Bucket: "my-bucket",
    		Key: "myfile.txt",
    	}),
    );
    const content = await response.Body.transformToString();
    console.log("Downloaded:", content);
    
    // List objects
    const list = await s3.send(
    	new ListObjectsV2Command({
    		Bucket: "my-bucket",
    	}),
    );
    console.log(
    	"Objects:",
    	list.Contents.map((obj) => obj.Key),
    );
  3. この内容を example.mjs として保存し、実行します。

    node example.mjs
    Uploaded myfile.txt
    Downloaded: Hello, R2!
    Objects: [ 'myfile.txt' ]

ほかの操作は AWS SDK for JavaScript の例 を参照してください。

次のステップ

署名付き URL

非公開オブジェクトへのアクセス用に、一時 URL を生成します。

公開バケット

公開バケットで、HTTP 経由でファイルを直接配信します。

CORS

ブラウザーからのアップロード向けに CORS を設定します。

役に立ちましたか?