소프트 삭제된 객체 사용

개요 설정

이 페이지에서는 소프트 삭제된 객체를 나열, 액세스, 복원하는 방법을 설명합니다.

시작하기 전에

이 페이지의 태스크를 완료하려면 버킷이나 버킷이 포함된 프로젝트에 대한 스토리지 관리자(roles/storage.admin) IAM 역할이 있는지 확인합니다. 이 사전 정의된 역할에는 버킷에서 소프트 삭제를 관리하고 복원하는 데 필요한 권한이 포함되어 있습니다.

필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

  • storage.buckets.get
  • storage.buckets.update
  • storage.buckets.list
    • Google Cloud 콘솔을 사용하여 이 페이지의 안내를 수행하려면 이 권한이 필요합니다.
  • storage.objects.restore
  • storage.objects.create
  • storage.objects.delete
    • 객체 복원으로 인해 기존 객체를 덮어쓰는 경우 이 권한이 필요합니다.
  • storage.buckets.restore
    • 버킷에서 소프트 삭제된 객체를 일괄 복원하려면 이 권한이 필요합니다.
  • storage.bucketOperations.*
    • 장기 실행 작업에 이 권한이 필요합니다.

버킷의 역할 부여에 대한 자세한 내용은 버킷에 IAM 사용을 참조하세요. 프로젝트에 대해 역할을 부여하는 방법은 프로젝트에 대한 액세스 관리를 참조하세요.

버킷에서 소프트 삭제된 모든 객체 나열

버킷에서 소프트 삭제된 모든 객체를 나열할 수 있습니다.

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 소프트 삭제된 객체를 보려는 버킷의 이름을 클릭합니다. 객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.

  3. 표시 목록에서 소프트 삭제된 객체만을 선택합니다. 소프트 삭제된 객체 목록이 표시됩니다.

명령줄

버킷의 모든 소프트 삭제된 객체 목록을 표시하려면 --soft-deleted--recursive 플래그와 함께 gcloud storage ls 명령어를 사용합니다.

  gcloud storage ls gs://BUCKET_NAME --soft-deleted --recursive

다음을 바꿉니다.

  • BUCKET_NAME: 버킷의 이름입니다. 예를 들면 my-bucket입니다.

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. cURL을 사용하여 ?softDeleted 쿼리 매개변수를 사용하는 객체 나열 요청으로 JSON API를 호출합니다.

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    여기서 BUCKET_NAME은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

객체의 모든 소프트 삭제된 버전 보기

버킷 내 특정 객체의 모든 소프트 삭제된 버전을 볼 수 있습니다.

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 소프트 삭제된 버전을 보려는 객체가 포함된 버킷의 이름을 클릭합니다. 객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.

  3. 소프트 삭제된 모든 버전을 보려는 객체를 클릭합니다. 객체 세부정보 페이지가 표시됩니다.

  4. 버전 기록 탭을 클릭합니다.

  5. 표시 목록에서 소프트 삭제된 객체만을 선택합니다. 해당 객체의 모든 소프트 삭제된 버전 목록이 표시됩니다.

명령줄

버킷에 있는 객체의 모든 소프트 삭제된 버전 목록을 표시하려면 gcloud storage ls 명령어를 사용합니다.

  gcloud storage ls gs://BUCKET_NAME/OBJECT_NAME --soft-deleted

다음을 바꿉니다.

  • BUCKET_NAME: 버킷의 이름입니다. 예를 들면 my-bucket입니다.
  • OBJECT_NAME: 모든 버전을 보려는 객체의 이름입니다.

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. cURL을 사용하여 ?softDeleted 쿼리 매개변수를 사용하는 객체 나열 요청으로 JSON API를 호출합니다.

    curl -X GET \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o?softDeleted=true"

    여기서 BUCKET_NAME은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

소프트 삭제된 객체 복원

버킷에서 소프트 삭제된 객체의 특정 버전을 복원할 수 있습니다.

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 복원할 소프트 삭제된 객체가 포함된 버킷의 이름을 클릭합니다. 객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.

  3. 표시 목록에서 소프트 삭제된 객체만을 선택합니다.

  4. 객체(폴더에 있을 수 있음)로 이동합니다.

  5. 소프트 삭제된 객체를 클릭합니다. 객체 세부정보 페이지가 표시됩니다.

  6. 표시 목록에서 소프트 삭제된 객체만을 선택합니다. 해당 객체의 모든 소프트 삭제된 버전 목록이 표시됩니다.

  7. 객체의 특정 소프트 삭제된 버전을 복원하려면 해당 객체 버전 옆에 있는 복원을 클릭합니다. 객체 버전 복원 창이 열립니다.

  8. 확인을 클릭합니다.

명령줄

소프트 삭제된 객체 버전을 복원하려면 gcloud storage restore 명령어를 사용합니다.

  gcloud storage restore gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER

다음을 바꿉니다.

  • BUCKET_NAME: 버킷의 이름입니다. 예를 들면 my-bucket입니다.
  • OBJECT_NAME: 모든 버전을 보려는 객체의 이름입니다.
  • GENERATION_NUMBER: 복원할 소프트 삭제된 객체의 세대 번호입니다. 세대 번호를 지정하지 않으면 최신 버전이 복원됩니다. 예를 들면 1560468815691234입니다.

all-versions 플래그를 사용하여 객체의 모든 버전을 복원하는 것을 포함하여 여러 객체를 일괄적으로 복원하는 추가 옵션은 gcloud storage restore 참조를 참조하세요.

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. cURL을 사용하여 POST 객체 요청으로 JSON API를 호출합니다.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/restore?generation=GENERATION_NUMBER"

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.
    • OBJECT_NAME은 복원할 소프트 삭제된 객체의 이름입니다. 예를 들면 cat.jpeg입니다.
    • GENERATION_NUMBER는 복원할 소프트 삭제된 객체의 세대 번호입니다. 세대 번호를 지정하지 않으면 최신 버전이 복원됩니다. 예를 들면 1560468815691234입니다.

버킷의 소프트 삭제된 객체 일괄 복원

많은 수의 객체를 복원하거나 구체적으로 어떤 객체를 복원할지 모르는 경우 일괄 복원 작업을 사용합니다. 일괄 복원 작업은 비동기식으로 진행되며 경우에 따라 시작하는 데 1시간 이상 걸릴 수 있습니다.

일괄 복원 작업은 버킷에서 장기 실행 작업을 시작합니다. Google Cloud CLI를 사용하여 장기 실행 작업을 가져오고 나열할 수 있으므로 진행 중인 일괄 복원 작업의 세부정보와 상태를 볼 수 있습니다.

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 복원할 객체가 포함된 버킷을 찾습니다.

  3. 버킷과 연관된 버킷 오버플로 메뉴()를 클릭하고 복원 작업 만들기를 선택합니다.

    복원 작업 만들기 창이 열립니다.

  4. 복원할 소프트 삭제된 객체 선택 섹션에서 객체를 복원할 삭제 기간을 선택합니다.

  5. (선택사항) glob 패턴으로 필터링을 선택하고 glob 패턴을 입력하여 glob 패턴 기준을 충족하는 객체만 복원합니다.

  6. (선택사항) 복원 옵션 섹션에서 추가 복원 동작을 전환합니다.

  7. 만들기를 클릭합니다.

Google Cloud 콘솔 헤더에 있는 알림 버튼()을 클릭하여 일괄 복원 작업의 진행 상황을 추적할 수 있습니다.

명령줄

일괄 복원 작업을 사용하여 버킷의 모든 객체를 복원하려면 gcloud storage restore 명령어를 사용합니다.

다음 명령어는 일괄 복원 작업을 수행하여 특정 기간 동안 삭제된 버킷의 모든 객체를 비동기식으로 복원합니다.

  gcloud storage restore gs://BUCKET_NAME/** \
      --async --deleted-after-time=DELETED_AFTER_TIME \
      --deleted-before-time=DELETED_BEFORE_TIME

다음을 바꿉니다.

  • BUCKET_NAME: 버킷의 이름입니다. 예를 들면 my-bucket입니다.
  • DELETED_AFTER_TIME: 객체가 복원된 날짜를 지정하는 선택적 인수입니다. 예를 들면 2022-12-01입니다.
  • DELETED_BEFORE_TIME: 객체가 복원되기 전의 날짜를 지정하는 선택적 인수입니다. 예를 들면 2022-12-21입니다.

    성공하면 이 명령어는 일괄 복원 작업 관련 장기 실행 작업의 ID를 반환합니다. 장기 실행 작업에 대한 세부정보를 가져오거나 장기 실행 작업을 취소하여 일괄 복원 작업이 완료되기 전에 중지할 수 있습니다.

REST API

JSON API

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. cURL을 사용하여 POST 객체 요청으로 JSON API를 호출합니다.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/bulkRestore"

    여기서 BUCKET_NAME은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

성공하면 이 명령어는 일괄 복원 작업 관련 장기 실행 작업의 ID를 반환합니다. 장기 실행 작업에 대한 세부정보를 가져오거나 장기 실행 작업을 취소하여 일괄 복원 작업이 완료되기 전에 중지할 수 있습니다.

일괄 복원을 위한 장기 실행 작업 관리

Google Cloud CLI에서 장기 실행 작업은 버킷 이름과 작업 ID의 조합인 작업 이름으로 식별됩니다.

다음 예시에서는 일괄 복원 작업에서 반환된 장기 실행 작업을 보여줍니다.

done: false
{
  "kind": "storage@operation",
  "name": "projects/_/buckets/my-bucket/operations/CiQyODRlMTY0My0wNGExLTQ3MWItOTE2Zi1hZmQ0ZmM4ZDc4MjQQAg",
  "metadata": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsMetadata",
    "commonMetadata": {
      "type": "bulk-restore-objects",
      "createTime": "2023-10-20T21:08:11.289Z",
      "updateTime": "2023-10-20T21:18:37.583Z",
      "endTime": "2023-10-20T21:18:37.583Z",
      "requestedCancellation": false,
      "progressPercent": -1,
    },
    "allow_overwrite": false,
    "matchGlobs": ["*"],
    "succeededCount": "0",
    "failedCount": "0",
    "skippedCount": "0",
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.storage.v2.BulkRestoreObjectsResponse"
  }
}

장기 실행 작업을 관리하는 방법에 대한 일반적인 정보는 gcloud storage operations 문서를 참조하세요.

장기 실행 작업 세부정보 가져오기

gcloud storage operations describe 명령어를 사용합니다.

gcloud storage operations describe projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

다음을 바꿉니다.

  • BUCKET_NAME: 장기 실행 작업이 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

  • OPERATION_ID: 일괄 복원 작업의 응답으로 반환된 장기 실행 작업의 ID입니다.

버킷의 장기 실행 작업 나열

gcloud storage operations list 명령어를 사용합니다.

gcloud storage operations list gs://BUCKET_NAME

다음을 바꿉니다.

  • BUCKET_NAME: 장기 실행 작업이 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

장기 실행 작업 취소

gcloud storage operations cancel 명령어를 사용합니다.

gcloud storage operations cancel projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID

다음을 바꿉니다.

  • BUCKET_NAME: 장기 실행 작업이 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

  • OPERATION_ID: 일괄 복원 작업의 응답으로 반환된 장기 실행 작업의 ID입니다.

오류 처리

장기 실행 작업은 비동기식 API에서 반환되므로 동기식 API와 다른 오류 처리 방법이 필요합니다. 동기식 API와 달리 장기 실행 작업을 반환하는 API는 기본 작업이 실패하더라도 성공합니다. 장기 실행 작업을 반환하는 API를 사용할 경우 실패한 응답에서 반환된 오류 코드에 응답하는 대신 성공 응답으로 반환되는 오류 코드에 응답합니다.

예를 들어 소프트 삭제 일괄 복원 요청을 수행하면 작업 진행 중 오류가 발생하더라도 성공한 HTTP 상태 코드(200 OK)가 반환됩니다. 일괄 복원 작업이 성공했는지 확인하려면 장기 실행 작업의 상태를 쿼리합니다.

장기 실행 작업 API(Get, Create, Cancel)는 동기식이며 일반적인 오류를 반환합니다.

재시도

비동기 소프트 삭제 API는 기본적으로 멱등성입니다. 따라서 의도하지 않게 리소스를 수정할 우려 없이 비동기 소프트 삭제 API 호출을 안전하게 재시도할 수 있습니다.

다음 단계