2.3.9. AWS CLI를 사용하여 Ceph Object Gateway에 액세스
S3 액세스를 위해 AWS CLI를 사용할 수 있습니다. 이 절차에서는 AWS CLI 및 MFA-Delete 활성화된 버킷에서 오브젝트 삭제와 같은 다양한 작업을 수행하는 몇 가지 예제 명령을 제공합니다.
사전 요구 사항
- Ceph Object Gateway에 대한 사용자 수준 액세스.
- 개발 워크스테이션에 대한 루트 수준 액세스.
-
Multi-factor authentication (MFA) TOTP 토큰은
radosgw-admin mfa create
를 사용하여 생성되었습니다.
절차
awscli
패키지를 설치합니다.[user@dev]$ pip3 install --user awscli
AWS CLI를 사용하여 Ceph Object Storage에 액세스하도록
awscli
를 구성합니다.구문
aws configure --profile=MY_PROFILE_NAME AWS Access Key ID [None]: MY_ACCESS_KEY AWS Secret Access Key [None]: MY_SECRET_KEY Default region name [None]: Default output format [None]:
MY_PROFILE_NAME
을 이 프로필을 식별하는 데 사용할 이름으로 교체합니다.MY_ACCESS_KEY
및MY_SECRET_KEY
를 Red Hat Ceph Storage 오브젝트 게이트웨이 구성 및 관리 가이드에서 언급한 대로S3
액세스용radosgw
사용자를 생성할 때 생성된access_key
및secret_key
로 바꿉니다.예제
[user@dev]$ aws configure --profile=ceph AWS Access Key ID [None]: 12345 AWS Secret Access Key [None]: 67890 Default region name [None]: Default output format [None]:
Ceph Object Gateway 노드의 FQDN을 가리키는 별칭을 생성합니다.
구문
alias aws="aws --endpoint-url=http://FQDN_OF_GATEWAY_NODE:8080"
FQDN_OF_GATEWAY_NODE
를 Ceph Object Gateway 노드의 FQDN으로 바꿉니다.예제
[user@dev]$ alias aws="aws --endpoint-url=http://testclient.englab.pnq.redhat.com:8080"
새 버킷을 생성합니다.
구문
aws --profile=MY_PROFILE_NAME s3api create-bucket --bucket BUCKET_NAME
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다.BUCKET_NAME
을 새 버킷의 이름으로 바꿉니다.예제
[user@dev]$ aws --profile=ceph s3api create-bucket --bucket mybucket
보유 버킷을 나열합니다.
구문
aws --profile=MY_PROFILE_NAME s3api list-buckets
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다.예제
[user@dev]$ aws --profile=ceph s3api list-buckets { "Buckets": [ { "Name": "mybucket", "CreationDate": "2021-08-31T16:46:15.257Z" } ], "Owner": { "DisplayName": "User", "ID": "user" } }
MFA-Delete에 대한 버킷을 구성합니다.
구문
aws --profile=MY_PROFILE_NAME s3api put-bucket-versioning --bucket BUCKET_NAME --versioning-configuration '{"Status":"Enabled","MFADelete":"Enabled"}' --mfa 'TOTP_SERIAL TOTP_PIN'
-
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다. -
BUCKET_NAME
을 새 버킷 이름으로 교체합니다. -
TOTP_SERIAL
을 문자열로 바꾸고TOTP_PIN
을 MFA 인증 장치에 표시된 현재 핀으로 바꿉니다. -
TOTP_SERIAL
은 S3에 대해 radosgw 사용자를 만들 때 지정된 문자열입니다. - MFA TOTP 토큰 생성에 대한 자세한 내용은 Red Hat Ceph Storage Object Gateway 구성 및 관리 가이드 의 새로운 다단계 인증 TOTP 토큰 생성 섹션을 참조하십시오.
oathtool을 사용하여 MFA 유기 생성에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드 의 oathtool을 사용하여 다단계 인증 생성 섹션을 참조하십시오.
예제
[user@dev]$ aws --profile=ceph s3api put-bucket-versioning --bucket mybucket --versioning-configuration '{"Status":"Enabled","MFADelete":"Enabled"}' --mfa 'MFAtest 232009'
-
버킷 버전 관리 상태의 MFA-Delete 상태를 확인합니다.
구문
aws --profile=MY_PROFILE_NAME s3api get-bucket-versioning --bucket BUCKET_NAME
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다.BUCKET_NAME
을 새 버킷 이름으로 교체합니다.예제
[user@dev]$ aws --profile=ceph s3api get-bucket-versioning --bucket mybucket { "Status": "Enabled", "MFADelete": "Enabled" }
MFA-Delete 활성화된 버킷에 오브젝트를 추가합니다.
구문
aws --profile=MY_PROFILE_NAME s3api put-object --bucket BUCKET_NAME --key OBJECT_KEY --body LOCAL_FILE
-
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다. -
BUCKET_NAME
을 새 버킷 이름으로 교체합니다. -
OBJECT_KEY
를 버킷의 오브젝트를 고유하게 식별하는 이름으로 교체합니다. LOCAL_FILE
을 업로드할 로컬 파일 이름으로 바꿉니다.예제
[user@dev]$ aws --profile=ceph s3api put-object --bucket mybucket --key example --body testfile { "ETag": "\"5679b828547a4b44cfb24a23fd9bb9d5\"", "VersionId": "3VyyYPTEuIofdvMPWbr1znlOu7lJE3r" }
-
특정 오브젝트의 오브젝트 버전을 나열합니다.
구문
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJEC_KEY]
-
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다. -
BUCKET_NAME
을 새 버킷 이름으로 교체합니다. OBJECT_KEY
를 버킷의 오브젝트를 고유하게 식별하기 위해 지정된 이름으로 교체합니다.예제
[user@dev]$ aws --profile=ceph s3api list-object-versions --bucket mybucket --key example { "IsTruncated": false, "KeyMarker": "example", "VersionIdMarker": "", "Versions": [ { "ETag": "\"5679b828547a4b44cfb24a23fd9bb9d5\"", "Size": 196, "StorageClass": "STANDARD", "Key": "example", "VersionId": "3VyyYPTEuIofdvMPWbr1znlOu7lJE3r", "IsLatest": true, "LastModified": "2021-08-31T17:48:45.484Z", "Owner": { "DisplayName": "User", "ID": "user" } } ], "Name": "mybucket", "Prefix": "", "MaxKeys": 1000, "EncodingType": "url" }
-
MFA-Delete 활성화된 버킷에서 오브젝트를 삭제합니다.
구문
aws --profile=MY_PROFILE_NAME s3api delete-object --bucket BUCKET_NAME --key OBJECT_KEY --version-id VERSION_ID --mfa 'TOTP_SERIAL TOTP_PIN'
-
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다. -
BUCKET_NAME
을 삭제할 오브젝트가 포함된 버킷 이름으로 바꿉니다. -
OBJECT_KEY
를 버킷에서 오브젝트를 고유하게 식별하는 이름으로 교체합니다. -
VERSION_ID
를 삭제하려는 특정 버전의 버전ID로 바꿉니다. TOTP_SERIAL
을 TOTP 토큰의 ID를 나타내는 문자열로 바꾸고TOTP_PIN
을 MFA 인증 장치에 표시되는 현재 핀으로 바꿉니다.예제
[user@dev]$ aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r --mfa 'MFAtest 420797' { "VersionId": "3VyyYPTEuIofdvMPWbr1znlOu7lJE3r" }
MFA 토큰이 포함되어 있지 않으면 아래에 표시된 오류와 함께 요청이 실패합니다.
예제
[user@dev]$ aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r An error occurred (AccessDenied) when calling the DeleteObject operation: Unknown
-
MFA-Delete 활성화된 버킷에서 오브젝트가 삭제되었는지 확인하기 위해 오브젝트 버전을 나열합니다.
구문
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJECT_KEY
-
MY_PROFILE_NAME
을 이 프로필을 사용하도록 생성한 이름으로 교체합니다. -
BUCKET_NAME
을 버킷 이름으로 교체합니다. OBJECT_KEY
를 버킷에서 오브젝트를 고유하게 식별하는 이름으로 교체합니다.예제
[user@dev]$ aws --profile=ceph s3api list-object-versions --bucket mybucket --key example { "IsTruncated": false, "KeyMarker": "example", "VersionIdMarker": "", "Name": "mybucket", "Prefix": "", "MaxKeys": 1000, "EncodingType": "url" }
-