INTEGRITY Dokumentace

S3

R2 poskytuje podporu pro S3 kompatibilní API, což znamená, že s buckety můžete pracovat pomocí libovolného SDK, knihovny nebo nástroje pro S3. Pokud máte existující kód, který funguje s S3, můžete jej s R2 použít po změně koncového bodu URL.

1. Vytvořte bucket

Bucket ukládá vaše objekty v R2. Nový R2 bucket vytvoříte takto:

  1. Přihlaste se ke svému účtu Cloudflare:

    npx wrangler login
  2. Vytvořte bucket s názvem my-bucket:

    npx wrangler r2 bucket create my-bucket

    Pokud se zobrazí výzva, vyberte účet, ve kterém chcete bucket vytvořit.

  3. Ověřte, že byl bucket vytvořen:

    npx wrangler r2 bucket list
  1. V Cloudflare Dashboard přejděte na Objektové úložiště R2.

    Přejděte na Přehled ↗
  2. Vyberte Vytvořit bucket.

  3. Zadejte název svého bucketu.

  4. Vyberte umístění pro váš bucket a výchozí třída úložiště.

  5. Vyberte Vytvořit bucket.

2. Vygenerujte přihlašovací údaje API

Chcete-li používat S3 API, musíte vygenerovat přihlašovací údaje a získejte Access Key ID a Secret Access Key:

  1. Přejděte na Cloudflare Dashboard.
  2. Vyberte Storage & databases > R2 > Overview.
  3. Vyberte Správa v části API Tokens.
  4. Vyberte Vytvoření API tokenu účtu nebo Vytvoření uživatelského API tokenu
  5. Vyberte Object Read & Write oprávnění a Použít pouze na konkrétní buckety abyste vybrali buckety, ke kterým chcete mít přístup.
  6. Vyberte Create API Token.
  7. Zkopírujte Access Key ID a Secret Access Key. Uložte je bezpečně, protože tajný klíč už znovu neuvidíte.

Budete také potřebovat URL koncového bodu S3 API, který najdete ve spodní části potvrzovací stránky Create API Token po vytvoření tokenu, nebo na stránce R2 Overview:

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

3. Použijte AWS SDK

Následující příklady ukazují použití SDK pro Python a JavaScript. Pro ostatní jazyky se podívejte na Příklady SDK kompatibilních s S3 pro Go, Java, PHP, Ruby, a Rust.

  1. Nainstalujte boto3:

    pip install boto3
  2. Vytvořte testovací soubor k nahrání:

    echo 'Hello, R2!' > myfile.txt
  3. Pomocí svých přihlašovacích údajů vytvořte klienta S3 a pracujte se svým bucketem:

    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. Uložte toto jako example.py a spusťte jej:

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

Viz příklady pro boto3 pro další operace.

  1. Nainstalujte @aws-sdk/client-s3 balíček:

    npm install @aws-sdk/client-s3
  2. Pomocí svých přihlašovacích údajů vytvořte klienta S3 a pracujte se svým bucketem:

    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. Uložte toto jako example.mjs a spusťte jej:

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

Viz Příklady AWS SDK for JavaScript pro další operace.

Další kroky

Presigned URLs

Generujte dočasné URL adresy pro soukromý přístup k objektům.

Veřejné buckety

Poskytujte soubory přímo přes HTTP pomocí veřejného bucketu.

CORS

Nakonfigurujte CORS pro nahrávání souborů z prohlížeče.

Životní cyklus objektů

Nastavte pravidla životního cyklu pro automatické mazání starých objektů.