객체 다운로드 (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)으로 다운로드를 파이프할 수도 있어요.