2.3.9. 使用 AWS CLI 访问 Ceph 对象网关
您可以使用 AWS CLI 进行 S3 访问。此流程提供安装 AWS CLI 和一些示例命令来执行各种任务的步骤,如从 MFA-Delete 启用了存储桶中删除对象。
先决条件
- Ceph 对象网关用户级访问权限.
- 根级访问开发工作站。
-
使用
radosgw-admin mfa create创建多因素身份验证(MFA) TOTP 令牌
流程
安装
awscli软件包:pip3 install --user awscli
[user@dev]$ pip3 install --user awscliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
awscli以使用 AWS CLI 访问 Ceph 对象存储:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MY_PROFILE_NAME替换为您要用来识别此配置集的名称。按照 Red Hat Ceph Storage Object Gateway Configuration 和 Administration Guide 所述,将MY_ACCESS_KEY和MY_SECRET_KEY替换为创建S3访问时生成的access_key和secret_key。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个别名以指向 Ceph 对象网关节点的 FQDN:
语法
alias aws="aws --endpoint-url=http://FQDN_OF_GATEWAY_NODE:8080"
alias aws="aws --endpoint-url=http://FQDN_OF_GATEWAY_NODE:8080"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
FQDN_OF_GATEWAY_NODE替换为 Ceph 对象网关节点的 FQDN。示例
alias aws="aws --endpoint-url=http://testclient.englab.pnq.redhat.com:8080"
[user@dev]$ alias aws="aws --endpoint-url=http://testclient.englab.pnq.redhat.com:8080"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新存储桶:
语法
aws --profile=MY_PROFILE_NAME s3api create-bucket --bucket BUCKET_NAME
aws --profile=MY_PROFILE_NAME s3api create-bucket --bucket BUCKET_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。将BUCKET_NAME替换为新存储桶的名称。示例
aws --profile=ceph s3api create-bucket --bucket mybucket
[user@dev]$ aws --profile=ceph s3api create-bucket --bucket mybucketCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出拥有的存储桶:
语法
aws --profile=MY_PROFILE_NAME s3api list-buckets
aws --profile=MY_PROFILE_NAME s3api list-bucketsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 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'aws --profile=MY_PROFILE_NAME s3api put-bucket-versioning --bucket BUCKET_NAME --versioning-configuration '{"Status":"Enabled","MFADelete":"Enabled"}' --mfa 'TOTP_SERIAL TOTP_PIN'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。 -
将
BUCKET_NAME替换为新存储桶的名称。 -
将
TOTP_SERIAL替换为 TOTP 令牌的 ID,并将TOTP_PIN替换为 MFA 身份验证设备上的当前 pin。 -
TOTP_SERIAL是为 S3 创建 radosgw 用户时指定的字符串。 - 有关创建 MFA TOTP 令牌的详情,请参阅 Red Hat Ceph Storage Object Gateway Configuration 和 Administration Guide 中创建新的多因素身份验证 TOTP 令牌 部分。
有关使用 oathtool 创建 MFA seed for multi-factor authentication 部分,请参阅 Red Hat Ceph Storage Developer Guide 中的 oathtool 部分。
示例
aws --profile=ceph s3api put-bucket-versioning --bucket mybucket --versioning-configuration '{"Status":"Enabled","MFADelete":"Enabled"}' --mfa 'MFAtest 232009'[user@dev]$ aws --profile=ceph s3api put-bucket-versioning --bucket mybucket --versioning-configuration '{"Status":"Enabled","MFADelete":"Enabled"}' --mfa 'MFAtest 232009'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
查看存储桶版本状态的 MFA-Delete 状态:
语法
aws --profile=MY_PROFILE_NAME s3api get-bucket-versioning --bucket BUCKET_NAME
aws --profile=MY_PROFILE_NAME s3api get-bucket-versioning --bucket BUCKET_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。将BUCKET_NAME替换为新存储桶的名称。示例
aws --profile=ceph s3api get-bucket-versioning --bucket mybucket
[user@dev]$ aws --profile=ceph s3api get-bucket-versioning --bucket mybucket { "Status": "Enabled", "MFADelete": "Enabled" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在启用了 MFA-Delete 的存储桶中添加对象:
语法
aws --profile=MY_PROFILE_NAME s3api put-object --bucket BUCKET_NAME --key OBJECT_KEY --body LOCAL_FILE
aws --profile=MY_PROFILE_NAME s3api put-object --bucket BUCKET_NAME --key OBJECT_KEY --body LOCAL_FILECopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。 -
将
BUCKET_NAME替换为新存储桶的名称。 -
将
OBJECT_KEY替换为将唯一标识存储桶中对象的名称。 将
LOCAL_FILE替换为要上传的本地文件的名称。示例
aws --profile=ceph s3api put-object --bucket mybucket --key example --body testfile
[user@dev]$ aws --profile=ceph s3api put-object --bucket mybucket --key example --body testfile { "ETag": "\"5679b828547a4b44cfb24a23fd9bb9d5\"", "VersionId": "3VyyYPTEuIofdvMPWbr1znlOu7lJE3r" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
列出特定对象的对象版本:
语法
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJEC_KEY]
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJEC_KEY]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。 -
将
BUCKET_NAME替换为新存储桶的名称。 将
OBJECT_KEY替换为在存储桶中唯一标识对象的名称。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
在启用了 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'
aws --profile=MY_PROFILE_NAME s3api delete-object --bucket BUCKET_NAME --key OBJECT_KEY --version-id VERSION_ID --mfa 'TOTP_SERIAL TOTP_PIN'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。 -
将
BUCKET_NAME替换为包含要删除的对象的存储桶的名称。 -
将
OBJECT_KEY替换为唯一标识 bucket 中对象的名称。 -
将
VERSION_ID替换为您要删除的对象的特定版本的 VersionID。 将
TOTP_SERIAL替换为代表 TOTP 令牌的 ID 和TOTP_PIN的字符串,在您的 MFA 身份验证设备上显示当前的 pin。示例
aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r --mfa 'MFAtest 420797'
[user@dev]$ aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r --mfa 'MFAtest 420797' { "VersionId": "3VyyYPTEuIofdvMPWbr1znlOu7lJE3r" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有包含 MFA 令牌,则请求会失败并显示以下错误。
示例
aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r
[user@dev]$ aws --profile=ceph s3api delete-object --bucket mybucket --key example --version-id 3VyyYPTEuIofdvMPWbr1znlOu7lJE3r An error occurred (AccessDenied) when calling the DeleteObject operation: UnknownCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
列出对象版本以验证是否已从 MFA-Delete 启用存储桶中删除:
语法
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJECT_KEY
aws --profile=MY_PROFILE_NAME s3api list-object-versions --bucket BUCKET_NAME --key OBJECT_KEYCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
MY_PROFILE_NAME替换为您创建使用此配置集的名称。 -
将
BUCKET_NAME替换为存储桶的名称。 将
OBJECT_KEY替换为唯一标识 bucket 中对象的名称。示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将