스토리지 객체 업로드 및 다운로드

에어 갭이 적용된 Google Distributed Cloud (GDC)의 객체 스토리지를 사용하면 프로젝트 범위 버킷 간에 파일, 디렉터리, 버전이 지정된 데이터를 전송하고 검색할 수 있습니다. GDC 콘솔 또는 gdcloud CLI를 통해 단일 파일 또는 멀티파트 작업을 실행하고 커스텀 AEADKey 암호화로 객체를 보호할 수 있습니다.

시작하기 전에

스토리지 버킷은 특정 프로젝트로 범위가 지정된 리소스입니다. 프로젝트는 컨테이너 역할을 하며, 버킷을 그룹화하고 Management API 서버를 통해 버킷을 관리할 수 있도록 합니다. 이 페이지에서 작업을 수행하려면 먼저 새 프로젝트를 만들거나 충분한 권한이 있는 기존 프로젝트를 선택해야 합니다.

필요한 IAM 역할

IAM 프로젝트 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 요청하세요.

  • 프로젝트 버킷 관리자 (project-bucket-admin): 스토리지 버킷을 만들고, 업데이트하고, 삭제합니다.
  • 프로젝트 버킷 객체 뷰어 (project-bucket-object-viewer): 스토리지 버킷 및 객체의 세부정보를 보고 확인합니다.

자세한 내용은 버킷 액세스 권한 부여를 참조하세요.

개발 환경 준비

관리 API 서버 또는 전역 API 서버에 대해 명령어를 실행하려면 다음을 수행합니다.

  1. kubeconfig 파일이 없는 경우 영역 관리 API 서버의 kubeconfig 파일을 로그인하고 생성합니다.
  2. 이중 영역 버킷의 경우 다음을 수행합니다.
    • 인프라 운영자 (IO)에게 페어링된 영역에 BucketLocationConfig 커스텀 리소스가 생성되었는지 확인합니다.
    • 전역 API 서버의 kubeconfig 파일을 생성합니다.

객체 이름 지정 가이드라인

다음 가이드라인에 따라 객체 이름을 지정합니다.

  • 객체 이름을 지정할 때 UTF-8 문자를 사용합니다.
  • 1~55자(영문 기준)여야 합니다.
  • 개인 식별 정보 (PII)를 포함하지 마세요.

스토리지 버킷에 객체 업로드

콘솔

  1. 탐색 메뉴에서 객체 스토리지를 클릭합니다.
  2. 객체를 업로드할 버킷의 이름을 클릭합니다.
  3. 선택사항: 객체를 저장할 폴더를 만들려면 폴더 만들기를 클릭하고 폴더 이름을 입력한 후 만들기를 클릭합니다.
  4. 파일 업로드를 직접 클릭하거나 방금 만든 폴더로 이동한 다음 파일 업로드를 클릭합니다.
  5. 원하는 파일을 선택하고 열기를 클릭합니다.
  6. 업로드가 완료되었다는 확인 메시지가 표시될 때까지 기다립니다.

gdcloud

객체를 업로드하려면 다음 명령어를 실행합니다.

gdcloud storage cp LOCAL_PATH s3://REMOTE_PATH
gdcloud storage cp s3://FULLY_QUALIFIED_SOURCE_BUCKET_NAME s3://FULLY_QUALIFIED_DESTINATION_BUCKET_NAME
gdcloud storage mv s3://FULLY_QUALIFIED_SOURCE_BUCKET_NAME s3://FULLY_QUALIFIED_DESTINATION_BUCKET_NAME

다음 명령어에는 FULLY_QUALIFIED_BUCKET_NAME가 필요합니다. 버킷 구성 보기 섹션의 GET 또는 DESCRIBE 명령어를 사용하여 정규화된 버킷 이름을 가져옵니다.

다음 명령어는 로컬 디렉터리의 모든 텍스트 파일을 버킷에 업로드합니다.

gdcloud storage cp *.txt s3://FULLY_QUALIFIED_BUCKET_NAME

다음 명령어는 로컬 디렉터리에서 버킷으로 여러 파일을 업로드합니다.

gdcloud storage cp abc1.txt abc2.txt s3://FULLY_QUALIFIED_BUCKET_NAME

버킷에 폴더를 업로드하려면 --recursive 옵션을 사용하여 전체 디렉터리 트리를 복사합니다. 다음 명령어는 디렉터리 트리 dir을 업로드합니다.

gdcloud storage cp DIRECTORY_NAME s3://FULLY_QUALIFIED_BUCKET_NAME --recursive

대형 객체에 멀티파트 업로드를 수행하거나 업로드할 파일이 15MB보다 큰 경우 멀티파트 업로드를 자동으로 사용합니다. 이 경우 파일은 여러 부분으로 분할되며 각 부분의 크기는 15MB입니다. 마지막 부분은 더 작습니다. 각 부분은 개별적으로 업로드되며 전송이 완료되면 대상에서 재구성됩니다.

한 부분의 업로드가 실패하면 이미 업로드된 다른 부분에 영향을 주지 않고 업로드를 다시 시작할 수 있습니다.

멀티파트 업로드와 관련된 두 가지 옵션이 있습니다.

  • --disable-multipart: 모든 파일에 대해 멀티파트 업로드를 사용 중지합니다.
  • --multipart-chunk-size-mb=SIZE: 멀티파트 업로드의 각 청크 크기를 설정합니다.

SIZE보다 큰 파일은 멀티스레드 멀티파트로 자동 업로드됩니다. 작은 파일은 기존 방법을 사용하여 업로드됩니다. SIZE은 메가바이트 단위입니다. 기본 청크 크기는 15MB입니다. 허용되는 최소 청크 크기는 5MB이고 최대 크기는 5GB입니다.

스토리지 버킷에서 객체 다운로드

콘솔

  1. 탐색 메뉴에서 객체 스토리지를 클릭합니다.
  2. 객체가 포함된 버킷의 이름을 클릭합니다.
  3. 다운로드할 객체 이름 옆에 있는 체크박스를 선택합니다.
  4. 다운로드를 클릭합니다.

gdcloud

버킷에서 객체를 가져오려면 다음 안내를 따르세요.

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/OBJECT LOCAL_FILE_TO_SAVE

버킷의 모든 텍스트 파일을 현재 디렉터리에 다운로드하려면 다음 안내를 따르세요.

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/*.txt .

버킷에서 현재 디렉터리로 텍스트 파일 abc.txt을 다운로드하려면 다음 명령어를 실행합니다.

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt .

이전 버전의 파일을 다운로드하려면 먼저 파일의 모든 버전을 나열합니다.

gdcloud storage ls s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt --all-versions

출력 예시:

s3://my-bucket/abc.txt#OEQxNTk4MUEtMzEzRS0xMUVFLTk2N0UtQkM4MjAwQkJENjND
s3://my-bucket/abc.txt#ODgzNEYzQ0MtMzEzRS0xMUVFLTk2NEItMjI1MTAwQkJENjND
s3://my-bucket/abc.txt#ODNCNDEzNzgtMzEzRS0xMUVFLTlDOUMtQzRDOTAwQjg3RTg3

그런 다음 버킷에서 현재 디렉터리로 특정 버전의 텍스트 파일 abc.txt을 다운로드합니다.

gdcloud storage cp s3://FULLY_QUALIFIED_BUCKET_NAME/abc.txt#OEQxNTk4MUEtMzEzRS0xMUVFLTk2N0UtQkM4MjAwQkJENjND .

커스텀 AEADKey 사용

더 세부적인 맞춤설정을 위해 자체 AEADKey를 만들고 버킷의 객체를 암호화할 때 직접 사용할 수 있습니다. 이렇게 하면 기본값을 우회하여 암호화 키를 완전히 제어할 수 있습니다. 키 만들기에 따라 새 AEADKey를 만들고 사용하려는 버킷과 동일한 Namespace에 있는지 확인합니다. 그런 다음 요청을 보낼 때마다 HEADER가 x-amz-server-side-encryption: SSE-KMS 및 x-amz-server-side-encryption-aws-kms-key-id: NAMESPACE_NAME/AEADKey_NAME로 구성되어 있는지 확인합니다.