객체 수명 주기 관리

개념으로 이동

이 페이지에서는 객체 수명 주기 관리를 사용 설정하는 방법을 설명하고 수명 주기 정책의 예시를 제공합니다.

버킷에 수명 주기 관리 설정

수명 주기 관리 사용 설정하기

버킷의 수명 주기 관리를 사용 설정하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 목록에서 사용 설정할 버킷을 찾고 수명 주기 열에서 없음을 클릭합니다.

    수명 주기 규칙 페이지가 나타납니다.

  3. 규칙 추가를 클릭합니다.

  4. 나타나는 페이지에서 구성을 지정합니다.

    1. 작업이 수행되는 조건을 선택합니다.

    2. 계속을 클릭합니다.

    3. 객체가 조건을 충족할 때 수행할 작업을 선택합니다.

    4. 계속을 클릭합니다.

    5. 저장을 클릭합니다.

Cloud Storage 브라우저에서 실패한 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제해결을 참조하세요.

gsutil

  1. 적용하려는 수명 주기 구성 규칙으로 .json 파일을 만듭니다. 샘플 .json 파일은 구성 예시를 참조하세요.

  2. lifecycle set 명령어를 사용하여 구성을 적용합니다.

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

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

    • [LIFECYCLE_CONFIG_FILE]은 1단계에서 만든 파일의 이름입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

코드 샘플

C++

자세한 내용은 Cloud Storage C++ API 참조 문서를 확인하세요.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  gcs::BucketLifecycle bucket_lifecycle_rules = gcs::BucketLifecycle{
      {gcs::LifecycleRule(gcs::LifecycleRule::ConditionConjunction(
                              gcs::LifecycleRule::MaxAge(30),
                              gcs::LifecycleRule::IsLive(true)),
                          gcs::LifecycleRule::Delete())}};

  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name,
      gcs::BucketMetadataPatchBuilder().SetLifecycle(bucket_lifecycle_rules));

  if (!updated_metadata) {
    throw std::runtime_error(updated_metadata.status().message());
  }

  if (!updated_metadata->has_lifecycle() ||
      updated_metadata->lifecycle().rule.empty()) {
    std::cout << "Bucket lifecycle management is not enabled for bucket "
              << updated_metadata->name() << ".\n";
    return;
  }
  std::cout << "Successfully enabled bucket lifecycle management for bucket "
            << updated_metadata->name() << ".\n";
  std::cout << "The bucket lifecycle rules are";
  for (auto const& kv : updated_metadata->lifecycle().rule) {
    std::cout << "\n " << kv.condition() << ", " << kv.action();
  }
  std::cout << "\n";
}

자바

자세한 내용은 Cloud Storage 자바 API 참조 문서를 확인하세요.

import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.BucketInfo.LifecycleRule;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.common.collect.ImmutableList;

public class EnableLifecycleManagement {
  public static void enableLifecycleManagement(String projectId, String bucketName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String bucketName = "your-unique-bucket-name";

    Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();
    Bucket bucket = storage.get(bucketName);

    // See the LifecycleRule documentation for additional info on what you can do with lifecycle
    // management rules. This one deletes objects that are over 100 days old.
    // https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/BucketInfo.LifecycleRule.html
    bucket
        .toBuilder()
        .setLifecycleRules(
            ImmutableList.of(
                new LifecycleRule(
                    LifecycleRule.LifecycleAction.newDeleteAction(),
                    LifecycleRule.LifecycleCondition.newBuilder().setAge(100).build())))
        .build()
        .update();

    System.out.println("Lifecycle management was enabled and configured for bucket " + bucketName);
  }
}

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. 적용하려는 수명 주기 구성 규칙으로 .json 파일을 만듭니다. 샘플 .json 파일은 구성 예시를 참조하세요.

  3. cURL을 사용하여 PATCH 버킷 요청으로 JSON API를 호출합니다.

    curl -X PATCH --data-binary @[LIFECYCLE_CONFIG_FILE].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

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

    • [LIFECYCLE_CONFIG_FILE]은 2단계에서 만든 파일의 이름입니다.
    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. 적용하려는 수명 주기 구성 규칙으로 .xml 파일을 만듭니다. 샘플 .xml 파일은 구성 예시를 참조하세요.

  3. cURL을 사용하여 PUT 버킷 요청으로 XML API를 호출합니다.

    curl -X PUT --data-binary @[XML_FILE].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

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

    • [XML_FILE]은 2단계에서 만든 파일의 이름입니다.
    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

수명 주기 관리 중지

버킷의 수명 주기 관리를 중지하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 목록에서 중지할 버킷을 찾고 수명 주기 열에서 사용 설정됨을 클릭합니다.

    수명 주기 규칙 페이지가 나타납니다.

  3. 모두 삭제를 클릭합니다.

  4. 확인 창이 나타나면 삭제를 클릭합니다.

Cloud Storage 브라우저에서 실패한 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제해결을 참조하세요.

gsutil

  1. 빈 수명 주기 구성으로 .json 파일을 만듭니다.

    {
      "lifecycle": {
        "rule": []
      }
    }
  2. lifecycle set 명령어를 사용합니다.

    gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]

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

    • [LIFECYCLE_CONFIG_FILE]은 1단계에서 만든 파일의 이름입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. 빈 수명 주기 구성으로 .json 파일을 만듭니다.

    {
      "lifecycle": {
        "rule": []
      }
    }
  3. cURL을 사용하여 PATCH 버킷 요청으로 JSON API를 호출합니다.

    curl -X PATCH --data-binary @[LIFECYCLE_CONFIG_FILE].json \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

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

    • [LIFECYCLE_CONFIG_FILE]은 2단계에서 만든 파일의 이름입니다.
    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. 빈 수명 주기 구성으로 .xml 파일을 만듭니다.

    <LifecycleConfiguration/>
  3. cURL을 사용하여 PUT 버킷 요청으로 XML API를 호출합니다.

    curl -X PUT --data-binary @[XML_FILE].xml \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

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

    • [XML_FILE]은 2단계에서 만든 파일의 이름입니다.
    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

수명 주기 구성 확인하기

버킷에 설정된 수명 주기 구성을 확인하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 목록에서 수명 주기 열에 각 버킷의 수명 주기 상태가 표시됩니다.

    이 상태를 클릭하여 규칙을 추가, 확인, 수정, 삭제할 수 있습니다.

Cloud Storage 브라우저에서 실패한 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제해결을 참조하세요.

gsutil

  1. lifecycle get 명령어를 사용합니다.

    gsutil lifecycle get gs://[BUCKET_NAME]

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

REST API

JSON API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. cURL을 사용하여 GET 버킷 요청으로 JSON API를 호출합니다.

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/storage/v1/b/[BUCKET_NAME]?fields=lifecycle"

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

    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

XML API

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 플레이그라운드를 구성합니다.
  2. cURL을 사용하여 GET 버킷 요청으로 XML API를 호출합니다.

    curl -X GET \
      -H "Authorization: Bearer [OAUTH2_TOKEN]" \
      "https://storage.googleapis.com/[BUCKET_NAME]?lifecycle"

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

    • [OAUTH2_TOKEN]은 1단계에서 생성한 액세스 토큰입니다.
    • [BUCKET_NAME]은 관련 버킷의 이름입니다. 예를 들면 my-bucket입니다.

객체 수명 주기 구성 예시

다음 예시에서는 공통 수명 주기 조건이 충족될 때 수명 주기 작업을 수행하는 특정 수명 주기 구성을 보여줍니다.

객체 삭제

다음 수명 주기 구성은 두 가지 규칙을 정의합니다.

  1. 30일이 지난 객체의 실시간 버전을 삭제합니다. 객체 버전 관리를 사용하지 않는 한 모든 객체가 실시간 객체로 고려됩니다.
  2. 10일이 지난 객체의 현재가 아닌 버전을 삭제합니다. 이 규칙은 현재까지 또는 이전에 객체 버전 관리를 사용한 버킷의 경우에만 충족됩니다.

Console

다음 규칙은 30일이 지난 객체의 실시간 버전을 삭제합니다.

30일이 지난 실시간 객체 삭제

다음 규칙은 10일이 지난 객체의 현재가 아닌 버전을 삭제합니다.

10일이 지난 현재가 아닌 객체를 삭제합니다.

gsutil

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

일반적인 형식의 수명 주기 구성 파일은 JSON의 버킷 리소스 표현을 참조하세요.

REST API

JSON API

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

{
"lifecycle": {
  "rule": [
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 30,
      "isLive": true
    }
  },
  {
    "action": {"type": "Delete"},
    "condition": {
      "age": 10,
      "isLive": false
    }
  }
]
}
}

일반적인 형식의 수명 주기 구성 파일은 JSON의 버킷 리소스 표현을 참조하세요.

XML API

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>true</IsLive>
            <Age>30</Age>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <Delete/>
        </Action>
        <Condition>
            <IsLive>false</IsLive>
            <Age>10</Age>
        </Condition>
    </Rule>
</LifecycleConfiguration>

일반적인 형식의 수명 주기 구성 파일은 XML의 수명 주기 구성 형식을 참조하세요.

객체의 스토리지 클래스 변경

다음 수명 주기 구성은 두 가지 규칙을 정의합니다.

  1. 경과 기간이 365일(1년)을 넘었고 현재 스토리지 클래스가 Standard Storage, Multi-Regional Storage 또는 Durable Reduced Availability(DRA)인 경우 객체의 스토리지 클래스를 Nearline Storage로 변경합니다.
  2. 경과 기간이 1,095일(3년)을 넘었고 현재 스토리지 클래스가 Nearline Storage인 경우 객체의 스토리지 클래스를 Coldline Storage로 변경합니다.

Console

다음 규칙은 객체 생성 후 365일이 지나면 객체를 Nearline으로 이동합니다.

365일 후 객체를 Nearline로 설정

다음 규칙은 객체 생성 후 1095일이 지나면 객체를 Coldline으로 이동합니다.

1095일 후 객체를 Coldline으로 설정

gsutil

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

일반적인 형식의 수명 주기 구성 파일은 JSON의 버킷 리소스 표현을 참조하세요.

REST API

JSON API

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

{
"lifecycle": {
  "rule": [
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "NEARLINE"
    },
    "condition": {
      "age": 365,
      "matchesStorageClass": ["MULTI_REGIONAL", "STANDARD", "DURABLE_REDUCED_AVAILABILITY"]
    }
  },
  {
    "action": {
      "type": "SetStorageClass",
      "storageClass": "COLDLINE"
    },
    "condition": {
      "age": 1095,
      "matchesStorageClass": ["NEARLINE"]
    }
  }
]
}
}

일반적인 형식의 수명 주기 구성 파일은 JSON의 버킷 리소스 표현을 참조하세요.

XML API

수명 주기 관리를 사용 설정하여 다음 수명 주기 구성을 버킷에 적용할 수 있습니다.

<?xml version="1.0" encoding="UTF-8" ?>
<LifecycleConfiguration>
    <Rule>
        <Action>
            <SetStorageClass>NEARLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>365</Age>
            <MatchesStorageClass>MULTI_REGIONAL</MatchesStorageClass>
            <MatchesStorageClass>STANDARD</MatchesStorageClass>
            <MatchesStorageClass>DURABLE_REDUCED_AVAILABILITY</MatchesStorageClass>
        </Condition>
    </Rule>
    <Rule>
        <Action>
            <SetStorageClass>COLDLINE</SetStorageClass>
        </Action>
        <Condition>
            <Age>1095</Age>
            <MatchesStorageClass>NEARLINE</MatchesStorageClass>
        </Condition>
    </Rule>
</LifecycleConfiguration>

일반적인 형식의 수명 주기 구성 파일은 XML의 수명 주기 구성 형식을 참조하세요.

다음 단계

  • 사용 가능한 수명 주기 작업 및 수명 주기 조건을 포함한 객체 수명 주기 관리에 대해 자세히 알아보세요.