객체 수명 주기 관리

개요 구성 샘플

이 페이지에서는 버킷에서 객체 수명 주기 관리를 설정하는 방법과 버킷의 현재 수명 주기 구성을 보는 방법을 설명합니다. 수명 주기 구성은 버킷의 모든 현재 개체와 미래 객체에 적용됩니다.

필요한 역할

버킷의 객체 수명 주기 관리를 설정하고 관리하는 데 필요한 권한을 얻으려면 관리자에게 버킷에 대한 스토리지 관리자(roles/storage.admin) 역할을 부여해 달라고 요청하세요. 이 사전 정의된 역할에는 버킷에 대한 객체 수명 주기 관리를 설정하고 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 권한을 정확하게 확인하려면 필수 권한 섹션을 확장하세요.

필수 권한

  • storage.buckets.get
  • storage.buckets.list
    • 이 권한은Google Cloud 콘솔을 사용하여 이 페이지의 안내를 수행하려는 경우에만 필요합니다.
  • storage.buckets.update

커스텀 역할을 사용하여 이러한 권한을 부여받을 수도 있습니다.

버킷에 대한 역할 부여에 대한 자세한 내용은 버킷에 IAM 정책 설정 및 관리를 참조하세요.

버킷의 수명 주기 구성 설정

콘솔

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

    버킷으로 이동

  2. 버킷 목록에서 사용 설정하려는 버킷을 찾고 버킷 이름을 클릭합니다.

  3. 수명 주기 탭을 클릭합니다.

    수명 주기 규칙 페이지가 나타납니다. 여기에서 기존 규칙을 수정하거나 삭제할 수 있습니다. 새 규칙을 추가하려면 다음 안내를 따르세요.

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

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

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

    2. 계속을 클릭합니다.

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

    4. 계속을 클릭합니다.

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

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

명령줄

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

  2. gcloud storage buckets update 명령어를 --lifecycle-file 플래그와 함께 사용합니다.

    gcloud storage buckets update gs://BUCKET_NAME --lifecycle-file=LIFECYCLE_CONFIG_FILE

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

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

클라이언트 라이브러리

C++

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

다음 샘플에서는 버킷에 수명 주기 구성을 설정합니다.

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::move(updated_metadata).status();

  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";
}

다음 샘플에서는 버킷에서 모든 기존 수명 주기 구성을 삭제합니다.

namespace gcs = ::google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string const& bucket_name) {
  StatusOr<gcs::BucketMetadata> updated_metadata = client.PatchBucket(
      bucket_name, gcs::BucketMetadataPatchBuilder().ResetLifecycle());
  if (!updated_metadata) throw std::move(updated_metadata).status();

  std::cout << "Successfully disabled bucket lifecycle management for bucket "
            << updated_metadata->name() << ".\n";
}

C#

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

Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

다음 샘플에서는 버킷에 수명 주기 구성을 설정합니다.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;
using System.Collections.Generic;

public class EnableBucketLifecycleManagementSample
{
    public Bucket EnableBucketLifecycleManagement(string bucketName = "your-unique-bucket-name")
    {
        var storage = StorageClient.Create();
        var bucket = storage.GetBucket(bucketName);
        bucket.Lifecycle = new Bucket.LifecycleData
        {
            Rule = new List<Bucket.LifecycleData.RuleData>
            {
                new Bucket.LifecycleData.RuleData
                {
                    Condition = new Bucket.LifecycleData.RuleData.ConditionData { Age = 100 },
                    Action = new Bucket.LifecycleData.RuleData.ActionData { Type = "Delete" }
                }
            }
        };
        bucket = storage.UpdateBucket(bucket);

        Console.WriteLine($"Lifecycle management is enabled for bucket {bucketName} and the rules are:");
        foreach (var rule in bucket.Lifecycle.Rule)
        {
            Console.WriteLine("Action:");
            Console.WriteLine($"Type: {rule.Action.Type}");
            Console.WriteLine($"Storage Class: {rule.Action.StorageClass}");

            Console.WriteLine("Condition:");
            Console.WriteLine($"Age: \t{rule.Condition.Age}");
            Console.WriteLine($"Created Before: \t{rule.Condition.CreatedBefore}");
            Console.WriteLine($"Time Before: \t{rule.Condition.CustomTimeBefore}");
            Console.WriteLine($"Days Since Custom Time: \t{rule.Condition.DaysSinceCustomTime}");
            Console.WriteLine($"Days Since Non-current Time: \t{rule.Condition.DaysSinceNoncurrentTime}");
            Console.WriteLine($"IsLive: \t{rule.Condition.IsLive}");
            Console.WriteLine($"Storage Class: \t{rule.Condition.MatchesStorageClass}");
            Console.WriteLine($"Noncurrent Time Before: \t{rule.Condition.NoncurrentTimeBefore}");
            Console.WriteLine($"Newer Versions: \t{rule.Condition.NumNewerVersions}");
        }
        return bucket;
    }
}

다음 샘플에서는 버킷에서 모든 기존 수명 주기 구성을 삭제합니다.


using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using System;

public class DisableBucketLifecycleManagementSample
{
    public Bucket DisableBucketLifecycleManagement(string bucketName = "your-unique-bucket-name")