본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

객체 다운로드 (Download objects)

원문 보기 위키 갱신

대시보드, Workers API, S3 API 또는 명령줄 도구를 사용해 R2에서 객체를 다운로드할 수 있어요.

출처: 문서

본문

대시보드로 다운로드 (Download via dashboard)

  • Cloudflare 대시보드에서 R2 객체 스토리지(R2 object storage) 페이지로 이동해요. 개요(Overview)로 이동 ↗
  • 버킷을 선택해요.
  • 다운로드할 객체를 찾아요.
  • 객체의 ... 을 선택하고 다운로드(Download) 를 클릭해요.

Workers API로 다운로드 (Download via Workers API)

Workers에서 R2 바인딩을 사용해 객체를 다운로드해요.

export default {
	async fetch(request: Request, env: Env, ctx: ExecutionContext) {
		const object = await env.MY_BUCKET.get("image.png");
		if (object === null) {
			return new Response("Object not found", { status: 404 });
		}
		return new Response(object.body);
	},
} satisfies ExportedHandler<Env>;

전체 문서는 Workers API를 참고해요.

S3 API로 다운로드 (Download via S3 API)

S3 호환 SDK를 사용해 객체를 다운로드해요. 계정 ID와 R2 API 토큰이 필요해요.

import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";

const S3 = new S3Client({
	region: "auto", // SDK에서 필요하지만 R2에서는 사용되지 않음
	// Cloudflare 계정 ID를 제공합니다
	endpoint: `https://<ACCOUNT_ID>.r2.cloudflarestorage.com`,
	// API 토큰을 통해 R2 버킷의 S3 API 자격 증명을 가져옵니다 (참고: https://developers.cloudflare.com/r2/api/tokens)
	credentials: {
		accessKeyId: '<ACCESS_KEY_ID>',
		secretAccessKey: '<SECRET_ACCESS_KEY>',
	},
});

const response = await S3.send(
	new GetObjectCommand({
		Bucket: "my-bucket",
		Key: "image.png",
	}),
);
import boto3

s3 = boto3.client(
	service_name="s3",
	# Cloudflare 계정 ID를 제공합니다
	endpoint_url=f"https://{ACCOUNT_ID}.r2.cloudflarestorage.com",
	# API 토큰을 통해 R2 버킷의 S3 API 자격 증명을 가져옵니다 (참고: https://developers.cloudflare.com/r2/api/tokens)
	aws_access_key_id=ACCESS_KEY_ID,
	aws_secret_access_key=SECRET_ACCESS_KEY,
	region_name="auto", # SDK에서 필요하지만 R2에서는 사용되지 않음
)

response = s3.get_object(Bucket="my-bucket", Key="image.png")
image_data = response["Body"].read()

모든 S3 API 메서드는 R2의 S3 API 문서를 참고해요.

사전 서명 URL (Presigned URLs)

사용자가 R2에서 직접 다운로드하는 클라이언트 측 다운로드에는 사전 서명 URL(presigned URLs)을 사용해요. 서버가 임시 다운로드 URL을 생성하면 클라이언트는 API 자격 증명을 노출하지 않고 사용할 수 있어요.

  • 애플리케이션이 S3 SDK로 사전 서명 GET URL을 생성해요.
  • URL을 클라이언트에 보내요.
  • 클라이언트가 사전 서명 URL을 사용해 R2에서 직접 다운로드해요.

사전 서명 URL 생성 및 사용에 대한 자세한 내용은 사전 서명 URL(Presigned URLs)을 참고해요.

Wrangler로 다운로드 (Download via Wrangler)

Wrangler를 사용해 객체를 다운로드해요. r2 object get 명령을 실행해요.

wrangler r2 object get test-bucket/image.png

파일은 현재 작업 디렉터리로 다운로드돼요. --file 플래그를 사용해 다운로드되는 객체의 새 이름을 설정할 수도 있고, --pipe 플래그를 사용해 표준 출력(stdout)으로 다운로드를 파이프할 수도 있어요.

더 알아보기 (Learn more)