검색

9.7. 버킷 관리

download PDF

스토리지 관리자는 Ceph Object Gateway를 사용할 때 사용자 간에 이동하고 이름을 변경하여 버킷을 관리할 수 있습니다. 특정 이벤트에서 트리거하도록 버킷 알림을 생성할 수 있습니다. 또한 스토리지 클러스터의 수명 동안 발생할 수 있는 Ceph Object Gateway 내에서 고립되거나 누출된 오브젝트도 찾을 수 있습니다.

참고

수집 속도가 높은 수백만 개의 오브젝트가 Ceph Object Gateway 버킷에 업로드되면 radosgw-admin 버킷 통계 명령을 사용하여 잘못된 num_objects 가 보고됩니다. radosgw-admin 버킷 목록 명령을 사용하면 num_objects 매개변수 값을 수정할 수 있습니다.

참고

다중 사이트 클러스터에서 보조 사이트에서 버킷을 삭제해도 메타데이터 변경 사항이 기본 사이트와 동기화되지 않습니다. 따라서 Red Hat은 보조 사이트에서가 아닌 기본 사이트에서만 버킷을 삭제하는 것이 좋습니다.

9.7.1. 버킷 이름 변경

버킷의 이름을 바꿀 수 있습니다. 버킷 이름에 밑줄을 허용하려면 rgw_relaxed_s3_bucket_names 옵션을 true 로 설정합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • 기존 버킷입니다.

프로세스

  1. 버킷을 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "s3bucket1",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]

  2. 버킷의 이름을 변경합니다.

    구문

    radosgw-admin bucket link --bucket=ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=USER_ID

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=s3bucket1 --bucket-new-name=s3newb --uid=testuser

    버킷이 테넌트 내에 있는 경우 테넌트도 지정합니다.

    구문

    radosgw-admin bucket link --bucket=tenant/ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=TENANT$USER_ID

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/s3bucket1 --bucket-new-name=s3newb --uid=test$testuser

  3. 버킷의 이름이 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "s3newb",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]

9.7.2. 버킷 제거

Ceph Object Gateway 구성을 사용하여 Red Hat Ceph Storage 클러스터에서 버킷을 제거합니다.

버킷에 오브젝트가 없는 경우 radosgw-admin bucket rm 명령을 실행할 수 있습니다. 버킷에 오브젝트가 있는 경우 --purge-objects 옵션을 사용할 수 있습니다.

다중 사이트 구성의 경우 Red Hat은 기본 사이트에서 버킷을 삭제하는 것이 좋습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • 기존 버킷입니다.

프로세스

  1. 버킷을 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "s3bucket1",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]

  2. 버킷을 제거합니다.

    구문

    radosgw-admin bucket rm --bucket=BUCKET_NAME

    예제

    [ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1

  3. 버킷에 오브젝트가 있는 경우 다음 명령을 실행합니다.

    구문

    radosgw-admin bucket rm --bucket=BUCKET --purge-objects --bypass-gc

    예제

    [ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1 --purge-objects --bypass-gc

    --purge-objects 옵션은 objects를 제거하고 --bypass-gc 옵션은 가비지 수집기 없이 오브젝트 삭제를 트리거하여 프로세스를 보다 효율적으로 만듭니다.

  4. 버킷이 제거되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]

9.7.3. 버킷 이동

radosgw-admin 버킷 유틸리티는 사용자 간에 버킷을 이동하는 기능을 제공합니다. 이렇게 하려면 버킷을 새 사용자에게 연결하고 버킷의 소유권을 새 사용자로 변경합니다.

버킷을 이동할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • S3 버킷입니다.
  • 테넌트 및 테넌트가 아닌 다양한 사용자.

9.7.3.1. 테넌트가 아닌 사용자 간에 버킷 이동

radosgw-admin 버킷 chown 명령은 버킷과 포함된 모든 오브젝트의 소유권을 한 사용자의 다른 사용자로 변경할 수 있는 기능을 제공합니다. 이를 수행하려면 현재 사용자의 버킷을 연결 해제하고 새 사용자에게 연결한 다음 버킷의 소유권을 새 사용자로 변경합니다.

프로세스

  1. 버킷을 새 사용자에게 연결합니다.

    구문

    radosgw-admin bucket link --uid=USER --bucket=BUCKET

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --uid=user2 --bucket=data

  2. 버킷이 user2 에 성공적으로 연결되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --uid=user2
    [
        "data"
    ]

  3. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --uid=user --bucket=bucket

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --uid=user2 --bucket=data

  4. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=data

9.7.3.2. 테넌트 사용자 간에 버킷 이동

테넌트된 사용자와 다른 사용자 간에 버킷을 이동할 수 있습니다.

프로세스

  1. 버킷을 새 사용자에게 연결합니다.

    구문

    radosgw-admin bucket link --bucket=CURRENT_TENANT/BUCKET --uid=NEW_TENANT$USER

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/data --uid=test2$user2

  2. 버킷이 user2 에 성공적으로 연결되었는지 확인합니다.

    [ceph: root@host01 /]# radosgw-admin bucket list --uid=test$user2
    [
        "data"
    ]
  3. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --bucket=NEW_TENANT/BUCKET --uid=NEW_TENANT$USER

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test2/data' --uid='test$tuser2'

  4. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=test2/data

9.7.3.3. 테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동

테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동할 수 있습니다.

프로세스

  1. 선택 사항: 테넌트가 여러 개 없는 경우 rgw_keystone_implicit_tenants 를 활성화하고 외부 테넌트에서 Ceph Object Gateway에 액세스하여 생성할 수 있습니다.

    rgw_keystone_implicit_tenants 옵션을 활성화합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_implicit_tenants true

    s3cmd 또는 swift 명령을 사용하여 테넌트에서 Ceph Object Gateway에 액세스합니다.

    예제

    [ceph: root@host01 /]# swift list

    또는 s3cmd 를 사용하십시오.

    예제

    [ceph: root@host01 /]# s3cmd ls

    외부 테넌트에서 첫 번째 액세스 권한은 동일한 Ceph Object Gateway 사용자를 생성합니다.

  2. 버킷을 테넌트 사용자로 이동합니다.

    구문

    radosgw-admin bucket link --bucket=/BUCKET --uid='TENANT$USER'

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=/data --uid='test$tenanted-user'

  3. 데이터 버킷이 tenanted-user 에 성공적으로 연결되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --uid='test$tenanted-user'
    [
        "data"
    ]

  4. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --bucket='tenant/bucket name' --uid='tenant$user'

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test/data' --uid='test$tenanted-user'

  5. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=test/data

9.7.3.4. 고립 및 누출 오브젝트 찾기

정상적인 스토리지 클러스터에는 고립되거나 누출된 오브젝트가 없지만 경우에 따라 고립되거나 누출된 오브젝트가 발생할 수 있습니다.

스토리지 클러스터에 고립된 오브젝트가 있으며 RADOS 오브젝트와 연결된 오브젝트 ID가 있습니다. 그러나 버킷 인덱스 참조에 S3 개체가 있는 RADOS 오브젝트에 대한 참조는 없습니다. 예를 들어 작업 중간에 Ceph Object Gateway가 다운되면 일부 개체가 고립될 수 있습니다. 또한 발견되지 않은 버그로 인해 고립된 오브젝트가 발생할 수 있습니다.

Ceph Object Gateway 오브젝트가 RADOS 오브젝트에 매핑되는 방법을 확인할 수 있습니다. radosgw-admin 명령은 이러한 잠재적인 고립 또는 누출 오브젝트 목록을 검색하고 생성하는 툴을 제공합니다. radoslist 하위 명령을 사용하면 버킷 또는 스토리지 클러스터의 모든 버킷에 저장된 오브젝트가 표시됩니다. rgw-orphan-list 스크립트는 풀 내에 고립된 오브젝트를 표시합니다.

참고

radoslist 하위 명령은 더 이상 사용되지 않는 orphans findorphans finish 하위 명령을 대체합니다.

중요

모든 오브젝트가 고립된 상태로 표시될 때 Indexless 버킷이 사용 중인 이 명령을 사용하지 마십시오.

고립된 오브젝트를 식별하는 또 다른 방법은 rados -p <pool> ls | grep BUCKET_ID 명령을 실행하는 것입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph Object Gateway입니다.

프로세스

  1. 버킷 내에 데이터를 보관하는 오브젝트 목록을 생성합니다.

    구문

    radosgw-admin bucket radoslist --bucket BUCKET_NAME

    예제

    [root@host01 ~]# radosgw-admin bucket radoslist --bucket mybucket

    참고

    BUCKET_NAME 을 생략하면 모든 버킷의 모든 오브젝트가 표시됩니다.

  2. rgw-orphan-list 의 버전을 확인합니다.

    예제

    [root@host01 ~]# head /usr/bin/rgw-orphan-list

    버전은 2023-01-11 이상이어야 합니다.

  3. 고립 목록을 생성해야 하는 디렉토리를 만듭니다.

    예제

    [root@host01 ~]# mkdir orphans

  4. 이전에 만든 디렉터리로 이동합니다.

    예제

    [root@host01 ~]# cd orphans

  5. 풀 목록에서 고립을 찾을 풀을 선택합니다. 이 스크립트는 클러스터의 오브젝트에 따라 오랫동안 실행될 수 있습니다.

    예제

    [root@host01 orphans]# rgw-orphan-list

    예제

    Available pools:
        .rgw.root
        default.rgw.control
        default.rgw.meta
        default.rgw.log
        default.rgw.buckets.index
        default.rgw.buckets.data
        rbd
        default.rgw.buckets.non-ec
        ma.rgw.control
        ma.rgw.meta
        ma.rgw.log
        ma.rgw.buckets.index
        ma.rgw.buckets.data
        ma.rgw.buckets.non-ec
    Which pool do you want to search for orphans?

    고립을 검색할 풀 이름을 입력합니다.

    중요

    메타데이터 풀이 아닌 rgw-orphan-list 명령을 사용할 때 데이터 풀을 지정해야 합니다.

  6. rgw-orphan-list 툴 사용량의 세부 정보를 확인합니다.

    Synatx

    rgw-orphan-list -h
    rgw-orphan-list POOL_NAME /DIRECTORY

    예제

    [root@host01 orphans]# rgw-orphan-list default.rgw.buckets.data /orphans
    
    2023-09-12 08:41:14 ceph-host01 Computing delta...
    2023-09-12 08:41:14 ceph-host01 Computing results...
    10 potential orphans found out of a possible 2412 (0%).         <<<<<<< orphans detected
    The results can be found in './orphan-list-20230912124113.out'.
        Intermediate files are './rados-20230912124113.intermediate' and './radosgw-admin-20230912124113.intermediate'.
    ***
    *** WARNING: This is EXPERIMENTAL code and the results should be used
    ***          only with CAUTION!
    ***
    Done at 2023-09-12 08:41:14.

  7. ls -l 명령을 실행하여 오류로 끝나는 파일이 문제 없이 실행되었음을 나타내는 0 길이여야 하는지 확인합니다.

    예제

    [root@host01 orphans]# ls -l
    
    -rw-r--r--. 1 root root    770 Sep 12 03:59 orphan-list-20230912075939.out
    -rw-r--r--. 1 root root      0 Sep 12 03:59 rados-20230912075939.error
    -rw-r--r--. 1 root root 248508 Sep 12 03:59 rados-20230912075939.intermediate
    -rw-r--r--. 1 root root      0 Sep 12 03:59 rados-20230912075939.issues
    -rw-r--r--. 1 root root      0 Sep 12 03:59 radosgw-admin-20230912075939.error
    -rw-r--r--. 1 root root 247738 Sep 12 03:59 radosgw-admin-20230912075939.intermediate

  8. 나열된 고립 오브젝트를 검토합니다.

    예제

    [root@host01 orphans]# cat ./orphan-list-20230912124113.out
    
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.0
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.1
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.2
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.3
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.4
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.5
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.6
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.7
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.8
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.9

  9. 고립 오브젝트를 제거합니다.

    구문

    rados -p POOL_NAME rm OBJECT_NAME

    예제

    [root@host01 orphans]# rados -p default.rgw.buckets.data rm myobject

    주의

    올바른 오브젝트를 제거 중인지 확인합니다. rados rm 명령을 실행하면 스토리지 클러스터에서 데이터가 제거됩니다.

9.7.3.5. 버킷 인덱스 항목 관리

radosgw-admin 버킷 검사 하위 명령을 사용하여 Red Hat Ceph Storage 클러스터에서 Ceph Object Gateway의 버킷 인덱스 항목을 관리할 수 있습니다.

multipart 업로드 오브젝트 조각과 관련된 각 버킷 인덱스 항목은 해당 .meta 인덱스 항목과 일치합니다. 지정된 다중 파트 업로드에 대해 하나의 .meta 항목이 있어야 합니다. 조각에 대한 해당 .meta 항목을 찾지 못하면 출력의 섹션에 "orphaned" 조각 항목이 나열됩니다.

버킷의 통계는 버킷 인덱스 헤더에 저장됩니다. 이 단계에서는 해당 헤더를 로드하고 버킷 인덱스의 모든 일반 오브젝트 항목을 반복하고 통계를 다시 계산합니다. 그런 다음 "existing_header" 및 "calculated_header"라는 섹션에 실제 및 계산된 통계를 각각 표시하여 비교할 수 있습니다.

버킷 검사 하위 명령과 함께 --fix 옵션을 사용하는 경우 버킷 인덱스에서 "orphaned" 항목을 제거하고 계산된 헤더의 기존 통계도 덮어씁니다. 이 경우 버전 관리에 사용되는 여러 항목을 포함한 모든 항목이 출력에 나열됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph Object Gateway입니다.
  • 새로 생성된 버킷입니다.

프로세스

  1. 특정 버킷의 버킷 인덱스를 확인합니다.

    구문

    radosgw-admin bucket check --bucket=BUCKET_NAME

    예제

    [root@rgw ~]# radosgw-admin bucket check --bucket=mybucket

  2. 분리된 오브젝트 제거를 포함하여 버킷 인덱스의 불일치를 수정합니다.

    구문

    radosgw-admin bucket check --fix --bucket=BUCKET_NAME

    예제

    [root@rgw ~]# radosgw-admin bucket check --fix --bucket=mybucket

9.7.3.6. 버킷 알림

버킷 알림은 버킷에서 특정 이벤트가 발생할 때 Ceph Object Gateway에서 정보를 보내는 방법을 제공합니다. 버킷 알림은 HTTP, AMQP0.9.1 및 Kafka 끝점으로 보낼 수 있습니다. 특정 버킷 및 특정 주제의 이벤트에 대한 버킷 알림을 보내려면 알림 항목을 생성해야 합니다. 버킷 알림은 이벤트 유형의 서브 세트에서 또는 기본적으로 모든 이벤트 유형에 대해 생성할 수 있습니다. 버킷 알림은 키 접두사 또는 접미사, 키와 일치하는 정규식, 오브젝트에 연결된 메타데이터 속성 또는 오브젝트 태그를 기반으로 이벤트를 필터링할 수 있습니다. 버킷 알림에는 버킷 알림 메커니즘에 대한 구성 및 제어 인터페이스를 제공하는 REST API가 있습니다.

참고

버킷 알림 API는 기본적으로 활성화되어 있습니다. rgw_enable_apis 구성 매개 변수가 명시적으로 설정된 경우 s3알림이 포함되어 있는지 확인합니다. 이를 확인하려면 ceph --admin-daemon /var/run/ceph/ceph-client.rgw.NAME.asok config get rgw_enable_apis 명령을 실행합니다. NAME 을 Ceph Object Gateway 인스턴스 이름으로 바꿉니다.

CLI를 사용한 주제 관리

Ceph Object Gateway 버킷에 대한 목록, 가져오기 및 제거를 관리할 수 있습니다.

  • 항목 나열: 다음 명령을 실행하여 모든 주제의 구성을 나열합니다.

    예제

    [ceph: host01 /]# radosgw-admin topic list

  • 주제 가져오기: 다음 명령을 실행하여 특정 주제의 구성을 가져옵니다.

    예제

    [ceph: host01 /]# radosgw-admin topic get --topic=topic1

  • Remove topics: 다음 명령을 실행하여 특정 주제의 구성을 제거합니다.

    예제

    [ceph: host01 /]# radosgw-admin topic rm --topic=topic1

    참고

    Ceph Object Gateway 버킷이 해당 주제로 구성된 경우에도 항목이 제거됩니다.

9.7.3.7. 버킷 알림 생성

버킷 수준에서 버킷 알림을 생성합니다. 알림 구성에는 Red Hat Ceph Storage Object Gateway S3 이벤트, ObjectCreated,ObjectRemoved, ObjectLifecycle:Expiration 이 있습니다. 버킷 알림을 보내려면 대상과 게시해야 합니다. 버킷 알림은 S3 작업입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 HTTP 서버, RabbitMQ 서버 또는 Kafka 서버.
  • 루트 수준 액세스.
  • Red Hat Ceph Storage Object Gateway 설치
  • 사용자 액세스 키 및 시크릿 키.
  • 엔드포인트 매개 변수.
중요

Red Hat은 put,post,multipartUpload 와 같은 ObjectCreate 이벤트를 지원합니다. Red Hat은 object_deletes3_multi_object_delete 와 같은 ObjectRemove 이벤트도 지원합니다.

프로세스

  1. S3 버킷을 생성합니다.
  2. http,amqp 또는 kafka 프로토콜에 대한 Cryostat 주제를 만듭니다.
  3. s3:objectCreate,s3:objectRemove, s3:ObjectLifecycle:Expiration 이벤트에 대한 S3 버킷 알림을 생성합니다.

    예제

    client.put_bucket_notification_configuration(
       Bucket=bucket_name,
       NotificationConfiguration={
           'TopicConfigurations': [
               {
                   'Id': notification_name,
                   'TopicArn': topic_arn,
                   'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*', 's3:ObjectLifecycle:Expiration:*']
               }]})

  4. 버킷에 S3 오브젝트를 생성합니다.
  5. http,rabbitmq 또는 kafka 수신자에서 오브젝트 생성 이벤트를 확인합니다.
  6. 오브젝트를 삭제합니다.
  7. http,rabbitmq 또는 kafka 수신자에서 오브젝트 삭제 이벤트를 확인합니다.

9.7.4. S3 버킷 복제 API

S3 버킷 복제 API가 구현되고 사용자가 다양한 버킷 간에 복제 규칙을 생성할 수 있습니다. AWS 복제 기능은 동일한 영역 내에서 버킷 복제를 허용하지만 Ceph Object Gateway에서는 현재 이를 허용하지 않습니다. 그러나 Ceph Object Gateway API에는 사용자가 특정 버킷을 동기화할 영역을 선택할 수 있는 Zone 배열도 추가되었습니다.

9.7.4.1. S3 버킷 복제 생성

버킷에 대한 복제 구성을 생성하거나 기존 구성을 교체합니다.

복제 구성에는 하나 이상의 규칙이 포함되어야 합니다. 각 규칙은 소스 버킷의 오브젝트를 필터링하여 복제할 오브젝트 서브 세트를 식별합니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.

프로세스

  1. 복제의 세부 정보가 포함된 복제 구성 파일을 만듭니다.

    구문

    {
    "Role": "arn:aws:iam::account-id:role/role-name",
        "Rules": [
            {
                "ID": "String",
                "Status": "Enabled",
                "Priority": 1,
                "DeleteMarkerReplication": { "Status": "Enabled"|"Disabled" },
                "Destination": {
                    "Bucket": "BUCKET_NAME"
                }
            }
        ]
    }

    예제

    [root@host01 ~]# cat replication.json
    {
        "Role": "arn:aws:iam::account-id:role/role-name",
        "Rules": [
            {
                "ID": "pipe-bkt",
                "Status": "Enabled",
                "Priority": 1,
                "DeleteMarkerReplication": { "Status": "Disabled" },
                "Destination": {
                    "Bucket": "testbucket"
                }
            }
        ]
    }

  2. S3 API put bucket 복제를 생성합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL s3api put-bucket-replication --bucket BUCKET_NAME --replication-configuration file://REPLICATION_CONFIIRATION_FILE.json

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 s3api put-bucket-replication --bucket testbucket --replication-configuration file://replication.json

검증

  1. 동기화 정책 get 명령을 사용하여 동기화 정책을 확인합니다.

    구문

    radosgw-admin sync policy get --bucket BUCKET_NAME

    참고

    복제 정책을 적용할 때 규칙은 파이프 라고 하는 sync-policy 규칙으로 변환되며 활성화 및 비활성화 됨으로 분류됩니다.

    • enabled: 이 파이프는 활성화되고 활성 상태이며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어s3-bucket-replication:enabled.
    • disabled: 이 세트의 파이프는 활성 상태가 아니며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어 s3-bucket-replication:disabled.

    복제 정책의 일부로 구성할 수 있는 규칙이 여러 개 있을 수 있으므로 각 그룹의 정확한 매핑을 위해 두 개의 개별 그룹('enabled' 및 '허용됨' 상태의 다른 그룹)이 있습니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket testbucket
    {
        "groups": [
            {
                "id": "s3-bucket-replication:disabled",
                "data_flow": {},
                "pipes": [],
                "status": "allowed"
            },
            {
                "id": "s3-bucket-replication:enabled",
                "data_flow": {},
                "pipes": [
                    {
                        "id": "",
                        "source": {
                            "bucket": "*",
                            "zones": [
                                "*"
                            ]
                        },
                        "dest": {
                            "bucket": "testbucket",
                            "zones": [
                                "*"
                            ]
                        },
                        "params": {
                            "source": {},
                            "dest": {},
                            "priority": 1,
                            "mode": "user",
                            "user": "s3cmd"
                        }
                    }
                ],
                "status": "enabled"
            }
        ]
    }

추가 리소스

9.7.4.2. S3 버킷 복제 가져오기

버킷의 복제 구성을 검색할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
  • S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.

프로세스

  • S3 API put 버킷 복제를 가져옵니다.

    구문

    aws s3api get-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL

    예제

    [root@host01 ~]# aws s3api get-bucket-replication --bucket testbucket --endpoint-url=http://host01:80
    {
    
    "ReplicationConfiguration": {
        "Role": "",
        "Rules": [
            {
                "ID": "pipe-bkt",
                "Status": "Enabled",
                "Priority": 1,
                "Destination": {
                    Bucket": "testbucket"
                }
            }
        ]
      }
    
    }

9.7.4.3. S3 버킷 복제 삭제

버킷에서 복제 구성을 삭제합니다.

버킷 소유자는 다른 사용자에게 복제 구성을 제거할 수 있는 권한을 부여할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
  • S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.

프로세스

  1. S3 API put 버킷 복제를 삭제합니다.

    구문

    aws s3api delete-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL

    예제

    [root@host01 ~]# aws s3api delete-bucket-replication --bucket testbucket --endpoint-url=http://host01:80

검증

  • 기존 복제 규칙이 삭제되었는지 확인합니다.

    구문

    radosgw-admin sync policy get --bucket=BUCKET_NAME

    예제

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket=testbucket

9.7.4.4. 사용자의 S3 버킷 복제 비활성화

관리자는 다른 사용자가 해당 특정 사용자/사용자 아래에 있는 버킷에서 s3 복제 API 작업 수행을 제한하도록 사용자 정책을 설정할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.

프로세스

  1. S3 버킷 복제 API에 대한 액세스를 거부하려면 사용자 정책 구성 파일을 생성합니다.

    예제

    [root@host01 ~]# cat user_policy.json
    {
    	"Version":"2012-10-17",
    	"Statement":
    	{
    		"Effect":"Deny",
    		"Action":
    		[
    			"s3:PutReplicationConfiguration",
    			"s3:GetReplicationConfiguration",
    			"s3:DeleteReplicationConfiguration"
    		],
    		"Resource": "arn:aws:s3:::*",
    	}
    }

  2. 관리자 권한으로 S3 API에 대한 사용자 액세스를 비활성화하려면 사용자 정책을 user로 설정합니다.

    구문

    aws --endpoint-url=ENDPOINT_URL iam put-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --policy-document POLICY_DOCUMENT_PATH

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 iam put-user-policy --user-name newuser1 --policy-name userpolicy --policy-document file://user_policy.json

검증

  • 관리자로서 사용자 정책이 설정되었는지 확인합니다.

    구문

    aws --endpoint-url=ENDPOINT_URL iam get-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --region us

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 iam get-user-policy --user-name newuser1 --policy-name userpolicy --region us

  • admin 사용자가 사용자 정책을 설정하는 사용자로 S3 버킷 복제 API 작업 아래 작업을 수행하여 작업이 예상대로 거부되는지 확인합니다.

추가 리소스

  • 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드S3 버킷 복제 API 섹션을 참조하십시오.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.