스토리지 버킷의 객체 수명 주기 정책 설정

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 스토리지 버킷의 객체 수명 주기 정책을 설정하는 방법을 보여줍니다.

시작하기 전에

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

필요한 IAM 역할

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

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

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

개발 환경 준비

관리 API 서버 또는 전역 API 서버에 대해 명령어를 실행하려면 다음 단계를 따르세요.

  1. 로그인하고 생성합니다. 영역 관리 API 서버의 kubeconfig 파일이 없는 경우 kubeconfig 파일을 생성합니다.
  2. 이중 영역 버킷의 경우 다음 단계를 따르세요.

버킷에 객체 수명 주기 정책 설정

객체 수명 주기 정책을 사용하여 버킷의 객체를 자동으로 관리할 수 있습니다. 이를 통해 수명 주기 전반에 걸쳐 데이터를 더 효율적으로 저장할 수 있습니다. 수명 주기 구성은 특정 일치 기준에 따라 객체 그룹을 만료시키는 규칙 목록입니다.

객체 수명 주기 정책이 있거나 없는 버킷을 만들 수 있습니다. 버킷이 생성된 후 새 수명 주기 정책을 적용하거나 기존 수명 주기 정책을 업데이트하거나 삭제할 수 있습니다.

버전 관리가 사용 설정되지 않은 버킷의 경우 만료는 객체를 비동기식으로 영구적으로 삭제하는 것을 의미합니다.

버전 관리가 사용 설정된 버킷의 경우 현재 객체 버전이 삭제 마커가 아니면 만료로 인해 현재 버전이 이전 버전이 되고 현재 버전에 삭제 마커가 추가됩니다.

객체 수명 주기 정책을 설정하고 수정하려면 Bucket.spec.bucketPolicy.lifecyclePolicy 필드를 업데이트합니다.

CLI

다음은 객체 수명 주기 정책이 다르게 구성된 버킷 리소스의 몇 가지 예입니다.

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire all objects after 365 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 365
        id: expire-all-after-365-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-logs-dir-after-30-days
        status: Enabled
        filter:
          prefixFilter: "logs/"
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          days: 30
        id: expire-tagged-objects-after-30-days
        status: Enabled
        filter:
          tagFilters:
          - key: environment
            value: dev
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - noncurrentExpiration:
          noncurrentDays: 90
        id: expire-noncurrent-after-90-days
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with lifecycle rule to expire objects on a specific date"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      - expiration:
          date: "2027-01-01T00:00:00Z"
        id: expire-on-specific-date
        status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: "Bucket with multiple lifecycle rules and advanced filters"
  storageClass: Standard
  bucketPolicy:
    lifecyclePolicy:
      enable: true
      lifecycleRules:
      # Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
      - expiration:
          days: 7
        id: expire-ready-tmp-objects
        status: Enabled
        filter:
          prefixFilter: "tmp/"
          tagFilters:
          - key: status
            value: ready
      # Rule 2: Expire all objects in 'logs/' directory after 90 days
      - expiration:
          days: 90
        id: expire-logs-after-90-days
        status: Enabled
        filter:
          prefixFilter: "logs/"

수명 주기 정책에 대한 업데이트는 기존 객체와 업데이트 후에 업로드된 객체에 적용됩니다.

버킷에 객체 잠금도 구성된 경우 보관 기간이 끝나기 전에 객체가 만료로부터 보호됩니다.