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

데이터 위치

원문 보기 위키 갱신

R2에 저장된 데이터의 위치가 어떻게 결정되는지, 그리고 버킷의 객체가 저장되는 물리적 위치를 제어하는 다양한 입력값들에 대해 배워 보아요.

출처: 문서

본문

R2에 저장된 데이터의 위치가 어떻게 결정되는지, 그리고 버킷의 객체가 저장되는 물리적 위치를 제어할 수 있는 다양한 입력값들이 무엇인지 배워 보아요.

자동(Automatic, 권장)

새 버킷을 만들면 데이터 위치는 기본적으로 자동(Automatic)으로 설정돼요. 현재 이 옵션은 버킷 생성 요청을 보낸 호출자의 위치를 기준으로, 요청에 가장 가까운 이용 가능한 리전에 버킷 위치를 선택해요.

위치 힌트(Location Hints)

위치 힌트(Location Hints)는 버킷 생성 시 제공할 수 있는 선택적 매개변수로, 데이터에 접근할 것으로 예상되는 주요 지리적 위치를 나타내는 거예요.

버킷의 데이터에 대한 접근 대부분이 버킷 생성 요청이 발생한 위치와 다른 위치에서 발생할 것으로 예상될 때 위치 힌트를 사용하는 것이 좋아요. 위치 힌트는 최선의 노력(best effort)이며 보장이 아니라는 점을 기억하세요. 또한 자주 업데이트되는 콘텐츠를 사용자와 더 가깝게 배치해서 성능을 최적화하는 용도로만 사용해야 해요.

Cloudflare 대시보드로 힌트 설정하기

여러분의 위치를 기준으로 가장 가까운 이용 가능한 리전에 버킷을 자동으로 만들거나, 목록에서 특정 위치를 선택할 수 있어요.

  1. Cloudflare 대시보드에서 R2 object storage 페이지로 이동해요. Overview ↗로 이동해요.
  2. Create bucket을 선택해요.
  3. 버킷 이름을 입력해요.
  4. Location 아래에서 자동 선택을 위해 None을 유지하거나 목록에서 리전을 선택해요.
  5. Create bucket을 선택해 버킷 생성 과정을 완료해요.

S3 API로 힌트 설정하기

S3 API의 LocationConstraint 매개변수를 통해 위치 힌트를 설정할 수 있어요.

await S3.send(
	new CreateBucketCommand({
		Bucket: "YOUR_BUCKET_NAME",
		CreateBucketConfiguration: {
			LocationConstraint: "WNAM",
		},
	}),
);

다른 S3 SDK의 추가 예시는 Examples를 참고해요.

사용 가능한 힌트

다음 위치 힌트가 지원돼요.

힌트 힌트 설명
wnam Western North America
enam Eastern North America
weur Western Europe
eeur Eastern Europe
apac Asia-Pacific
oc Oceania

추가 고려 사항

위치 힌트는 특정 이름으로 버킷을 처음 만들 때만 적용돼요. 같은 이름으로 버킷을 삭제하고 다시 만들면 원래 버킷의 위치가 사용돼요.

관할권 제한(Jurisdictional Restrictions)

관할권 제한(Jurisdictional Restrictions)은 버킷의 객체가 특정 관할권 내에서만 저장되도록 보장해요.

데이터가 특정 관할권 내에서 저장·처리되어야 한다고 요구하는 GDPR ↗︎나 FedRAMP ↗︎ 같은 현지 규정 등 데이터 거주 요건(data residency)을 충족해야 할 때 관할권 제한을 사용해요.

Cloudflare 대시보드로 관할권 설정하기

  1. Cloudflare 대시보드에서 R2 object storage 페이지로 이동해요. Overview ↗로 이동해요.
  2. Create bucket을 선택해요.
  3. 버킷 이름을 입력해요.
  4. Location 아래에서 Specify jurisdiction을 선택하고 목록에서 관할권을 선택해요.
  5. Create bucket을 선택해 버킷 생성 과정을 완료해요.

Workers에서 관할권 사용하기

Workers에서 특정 관할권에 속한 R2 버킷에 접근하려면 Wrangler 설정 파일의 바인딩에 관할권과 버킷 이름을 모두 지정해야 해요.

{
	"r2_buckets": [
		{
			"binding": "MY_BUCKET",
			"bucket_name": "<YOUR_BUCKET_NAME>",
			"jurisdiction": "<JURISDICTION>"
		}
	]
}
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "<YOUR_BUCKET_NAME>"
jurisdiction = "<JURISDICTION>"

시작하는 방법에 대한 자세한 내용은 Use R2 from Workers를 참고해요.

S3 API로 관할권 사용하기

정의된 관할권에 속한 R2 리소스를 S3 API나 기존 S3 호환 SDK로 상호작용할 때는 S3 엔드포인트에 관할권을 지정해야 해요.

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

지원되는 모든 S3 API 작업에 관할권별 엔드포인트를 사용할 수 있어요. 관할권 엔드포인트를 사용할 때는 해당 관할권 외부의 R2 리소스에는 접근할 수 없어요.

아래 예시는 JavaScript용 @aws-sdk/client-s3 ↗︎ 패키지를 사용해 eu 관할권에 R2 버킷을 만드는 방법을 보여줘요.

import { S3Client, CreateBucketCommand } from "@aws-sdk/client-s3";
const S3 = new S3Client({
	endpoint: "https://<account_id>.eu.r2.cloudflarestorage.com",
	credentials: {
		accessKeyId: "<access_key_id>",
		secretAccessKey: "<access_key_secret>",
	},
	region: "auto",
});
await S3.send(
	new CreateBucketCommand({
		Bucket: "YOUR_BUCKET_NAME",
	}),
);

다른 S3 SDK의 추가 예시는 Examples를 참고해요.

사용 가능한 관할권

다음 관할권이 지원돼요.

관할권 관할권 설명
eu European Union
fedramp FedRAMP
us United States

참고

Cloudflare Enterprise 고객은 계정 팀이나 Cloudflare Support에 문의해서 FedRAMP 관할권에 대한 접근 권한을 받을 수 있어요.

제한 사항

다음 서비스는 관할권이 지정된 R2 리소스와 상호작용하지 않아요.

추가 고려 사항

R2 버킷이 생성되면 관할권은 변경할 수 없어요.

더 알아보기 (Learn more)