2.15. bucket 通知
作为存储管理员,您可以使用这些 API 为存储桶通知机制提供配置和部署接口。API 主题是命名的对象,其中包含特定端点的定义。bucket 通知将主题与特定 bucket 关联。S3 bucket operations 部分提供有关存储桶通知的更多详情。
在所有主题操作中,参数都是 URL 编码,并使用 application/x-www-form-urlencoded
内容类型在消息正文中发送。
需要重新创建与这个主题相关联的任何存储桶通知,以使主题更新生效。
先决条件
- 在 Ceph 对象网关上创建 bucket 通知。
2.15.1. 存储桶通知概述
bucket 通知提供了一种方式,可以在 bucket 中发生特定事件时从 Ceph 对象网关发送信息。bucket 通知可以发送到 HTTP、AMQP0.9.1 和 Kafka 端点。必须创建一个通知条目,以便为特定存储桶上的事件和特定主题发送存储桶通知。可以在事件类型的子集上创建 bucket 通知,也可以默认为所有事件类型创建 bucket 通知。bucket 通知可以根据密钥前缀或后缀、匹配键的正则表达式以及附加到对象或对象标签的元数据属性过滤出事件。bucket 通知具有 REST API,用于为 bucket 通知机制提供配置和控制接口。
当对象同步到区域时,发送存储桶通知可让外部系统在对象级别获取信息到区域同步状态。当通过存储桶通知机制配置时,当通过存储桶通知机制配置时,存储桶通知事件类型
,在成功同步对象时从同步 RGW 中发送通知事件。在发送通知事件的每个区域中,应单独执行主题和通知配置。
s3:ObjectSynced
:Created
2.15.2. 持久性通知
永久通知支持可靠和异步将通知从 Ceph 对象网关传输到主题中配置的端点。常规通知也可靠,因为发送到端点的发送是在请求期间同步执行的。使用持久通知时,Ceph 对象网关即使端点停机或操作过程中存在网络问题,即使未成功传送到端点,也会重试发送通知。只有在与通知的操作相关的所有其他操作成功后,才会发送通知。如果端点在较长时间内停机,通知队列会填充,并且为这些端点配置了通知的 S3 操作将失败。
使用 kafka-ack-level=none
时,没有指示消息失败,因此当代理再次上线时,发送的消息不会重试。再次设置代理后,只会看到新的通知。
2.15.3. 创建主题
您可以在创建存储桶通知前创建主题。主题是 Simple Notification Service (SNS)实体和所有主题操作,即 创建
、删除
、列出
和 get
是 SNS 操作。主题需要具有创建存储桶通知时使用的端点参数。请求成功后,响应中包含稍后可用来在存储桶通知请求中引用此主题的 Amazon Resource Name(ARN)主题。
topic_arn
提供存储桶通知配置,并在创建主题后生成。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根级别访问权限.
- 安装 Ceph 对象网关.
- 用户 access key 和 secret key。
- 端点参数.
流程
创建带有请求格式的主题:
语法
POST Action=CreateTopic &Name=TOPIC_NAME [&Attributes.entry.1.key=amqp-exchange&Attributes.entry.1.value=EXCHANGE] [&Attributes.entry.2.key=amqp-ack-level&Attributes.entry.2.value=none|broker|routable] [&Attributes.entry.3.key=verify-ssl&Attributes.entry.3.value=true|false] [&Attributes.entry.4.key=kafka-ack-level&Attributes.entry.4.value=none|broker] [&Attributes.entry.5.key=use-ssl&Attributes.entry.5.value=true|false] [&Attributes.entry.6.key=ca-location&Attributes.entry.6.value=FILE_PATH] [&Attributes.entry.7.key=OpaqueData&Attributes.entry.7.value=OPAQUE_DATA] [&Attributes.entry.8.key=push-endpoint&Attributes.entry.8.value=ENDPOINT] [&Attributes.entry.9.key=persistent&Attributes.entry.9.value=true|false]
以下是请求参数:
-
端点
:要将通知发送到的端点的 URL。 -
OpaqueData
: 不透明数据在主题配置中设置,并添加到该主题触发的所有通知。 -
persistent
:指示对此端点的通知是否是持久的,是否为异步的。默认值为false
。 HTTP 端点:
-
URL
: https://FQDN:PORT -
port defaults to
: 分别为 HTTP[S] 使用 80/443。 -
verify-ssl
:指示服务器证书是否由客户端验证。默认情况下,它是true
。
-
AMQP0.9.1 端点:
-
URL
: amqp://USER:PASSWORD@FQDN:PORT[/VHOST]. -
用户和密码分别默认为:
guest
和guest
。 - 应当通过 HTTPS 提供用户和密码详细信息,否则主题创建请求将被拒绝。
-
端口默认为
: 5672。 -
vhost
默认为:"/" -
amqp-exchange
:该交换必须存在,并且能够根据主题路由消息。这是用于 AMQP0.9.1 的强制参数。指向同一端点的不同主题必须使用相同的交换。 AMQP-ack 级别
: 不需要端到端确认,因为消息可能会在代理中被传送到最终目的地前保留。有三个确认方法:-
none
:当发送到代理,则消息被视为已发送
。 -
代理
:默认情况下,如果代理确认,则消息被视为已发送
。 routable
:如果代理可路由到使用者,则消息被视为已发送
。注意特定参数的键和值不必驻留在同一行中,或者以任何特定顺序使用,但必须使用相同的索引。属性索引不需要是连续的,或从任何特定值开始。
注意topic-name
用于 AMQP 主题。
-
-
Kafka 端点:
-
URL
: kafka://USER:PASSWORD@FQDN:PORT. -
use-ssl
默认被设置为false
。如果将use-ssl
设置为true
,则与代理的连接会使用安全的连接。 -
如果提供了
ca-location
,并且使用安全连接,则会使用指定的 CA 而不是默认的端口来验证代理。 - 用户和密码只能通过 HTTP[S] 提供。否则,主题创建请求将被拒绝。
-
用户和密码只能与
use-ssl
一起提供,否则与代理的连接将失败。 -
端口默认为
: 9092。 Kafka-ack 级别
:不需要结束确认,因为消息可能会在代理中被传送到最终目的地前保留。存在两种确认方法:-
none
:当发送到代理,则消息被视为已发送
。 -
代理
:默认情况下,如果代理确认,则消息被视为已发送
。
-
-
-
以下是响应格式的示例:
示例
<CreateTopicResponse xmlns="https://sns.amazonaws.com/doc/2010-03-31/"> <CreateTopicResult> <TopicArn></TopicArn> </CreateTopicResult> <ResponseMetadata> <RequestId></RequestId> </ResponseMetadata> </CreateTopicResponse>
响应中的 Amazon 资源名称(ARN)将具有以下格式: arn:aws:sns:ZONE_GROUP:TENANT:TOPIC
以下是一个 AMQP0.9.1 端点的示例:
示例
client.create_topic(Name='my-topic' , Attributes={'push-endpoint': 'amqp://127.0.0.1:5672', 'amqp-exchange': 'ex1', 'amqp-ack-level': 'broker'}) "
2.15.4. 获取主题信息
返回有关特定主题的信息。如果提供,这可包括端点信息。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根级别访问权限.
- 安装 Ceph 对象网关.
- 用户 access key 和 secret key。
- 端点参数.
流程
使用以下请求格式获取主题信息:
语法
POST Action=GetTopic &TopicArn=TOPIC_ARN
以下是响应格式的示例:
<GetTopicResponse> <GetTopicRersult> <Topic> <User></User> <Name></Name> <EndPoint> <EndpointAddress></EndpointAddress> <EndpointArgs></EndpointArgs> <EndpointTopic></EndpointTopic> <HasStoredSecret></HasStoredSecret> <Persistent></Persistent> </EndPoint> <TopicArn></TopicArn> <OpaqueData></OpaqueData> </Topic> </GetTopicResult> <ResponseMetadata> <RequestId></RequestId> </ResponseMetadata> </GetTopicResponse>
以下是标签和定义:
-
User
:创建该主题的用户的名称。 -
Name
:主题的名称. JSON 格式的端点包括:
EndpointAddress
:端点 URL。如果端点 URL 包含用户和密码信息,则必须通过 HTTPS 进行请求。otheriwse,主题 get 请求将被拒绝。-
EndPointArgs
:端点参数。 -
EndpointTopic
:发送到端点的主题名称可以与上例主题名称不同。 -
HasStoredSecret
:当端点 URL 包含用户和密码信息时为true
。 -
Persistent
: 当主题是持久的则为true
。
-
-
TopicArn
: Topic ARN。 -
OpaqueData
:这是在主题上设置的不透明数据。
-
2.15.5. 列出主题
列出用户已定义的主题。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根级别访问权限.
- 安装 Ceph 对象网关.
- 用户 access key 和 secret key。
- 端点参数.
流程
使用以下请求格式列出主题信息:
语法
POST Action=ListTopics
以下是响应格式的示例:
<ListTopicdResponse xmlns="https://sns.amazonaws.com/doc/2020-03-31/"> <ListTopicsRersult> <Topics> <member> <User></User> <Name></Name> <EndPoint> <EndpointAddress></EndpointAddress> <EndpointArgs></EndpointArgs> <EndpointTopic></EndpointTopic> </EndPoint> <TopicArn></TopicArn> <OpaqueData></OpaqueData> </member> </Topics> </ListTopicsResult> <ResponseMetadata> <RequestId></RequestId> </ResponseMetadata> </ListTopicsResponse>
注意如果端点 URL 包含用户和密码信息,在任何主题中,则必须通过 HTTPS 进行请求。否则,主题列表请求将被拒绝。
2.15.6. 删除主题
删除删除的主题会导致没有操作,且不是失败。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 根级别访问权限.
- 安装 Ceph 对象网关.
- 用户 access key 和 secret key。
- 端点参数.
流程
使用以下请求格式删除主题:
语法
POST Action=DeleteTopic &TopicArn=TOPIC_ARN
以下是响应格式的示例:
<DeleteTopicResponse xmlns="https://sns.amazonaws.com/doc/2020-03-31/"> <ResponseMetadata> <RequestId></RequestId> </ResponseMetadata> </DeleteTopicResponse>
2.15.7. 使用命令行界面进行主题管理
您可以使用命令行界面列出、获取和删除主题。
先决条件
- Ceph 对象网关节点的根级别访问权限.
流程
获取用户的所有主题的列表:
语法
radosgw-admin topic list --uid=USER_ID
示例
[root@rgw ~]# radosgw-admin topic list --uid=example
获取特定主题的配置:
语法
radosgw-admin topic get --uid=USER_ID --topic=TOPIC_NAME
示例
[root@rgw ~]# radosgw-admin topic get --uid=example --topic=example-topic
删除特定主题:
语法
radosgw-admin topic rm --uid=USER_ID --topic=TOPIC_NAME
示例
[root@rgw ~]# radosgw-admin topic rm --uid=example --topic=example-topic
2.15.8. 管理通知配置
您可以使用命令行界面列出、获取和删除存储桶的通知配置。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 配置 Ceph 对象网关。
流程
列出所有存储桶通知配置:
语法
radosgw-admin notification list --bucket=BUCKET_NAME
示例
[root@host04 ~]# radosgw-admin notification list --bucket bkt2 { "notifications": [ { "TopicArn": "arn:aws:sns:default::topic1", "Id": "notif1", "Events": [ "s3:ObjectCreated:*", "s3:ObjectRemoved:*" ], "Filter": { "S3Key": {}, "S3Metadata": {}, "S3Tags": {} } }, { "TopicArn": "arn:aws:sns:default::topic1", "Id": "notif2", "Events": [ "s3:ObjectSynced:*" ], "Filter": { "S3Key": {}, "S3Metadata": {}, "S3Tags": {} } } ] }
获取存储桶通知配置:
语法
radosgw-admin notification get --bucket BUCKET_NAME --notification-id NOTIFICATION_ID
示例
[root@host04 ~]# radosgw-admin notification get --bucket bkt2 --notification-id notif2 { "TopicArn": "arn:aws:sns:default::topic1", "Id": "notif2", "Events": [ "s3:ObjectSynced:*" ], "Filter": { "S3Key": {}, "S3Metadata": {}, "S3Tags": {} } }
删除特定的存储桶通知配置:
语法
radosgw-admin notification rm --bucket BUCKET_NAME [--notification-id NOTIFICATION_ID]
在这里,NOTIFICATION_ID 是可选的。如果没有指定,该命令会删除该存储桶的所有通知配置。
示例
[root@host04 ~]# radosgw-admin notification rm --bucket bkt2 --notification-id notif1
2.15.9. 事件记录
事件包含有关 Ceph 对象网关完成的操作的信息,并通过所选端点(如 HTTP、HTTPS、Kafka 或 AMQ0.9.1)作为有效负载发送。事件记录采用 JSON 格式。
支持以下 ObjectLifecycle:Expiration
事件:
-
ObjectLifecycle:Expiration:Current
-
ObjectLifecycle:Expiration:NonCurrent
-
ObjectLifecycle:Expiration:DeleteMarker
-
ObjectLifecycle:Expiration:AbortMultipartUpload
示例
{"Records":[ { "eventVersion":"2.1", "eventSource":"ceph:s3", "awsRegion":"us-east-1", "eventTime":"2019-11-22T13:47:35.124724Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"tester" }, "requestParameters":{ "sourceIPAddress":"" }, "responseElements":{ "x-amz-request-id":"503a4c37-85eb-47cd-8681-2817e80b4281.5330.903595", "x-amz-id-2":"14d2-zone1-zonegroup1" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"mynotif1", "bucket":{ "name":"mybucket1", "ownerIdentity":{ "principalId":"tester" }, "arn":"arn:aws:s3:us-east-1::mybucket1", "id":"503a4c37-85eb-47cd-8681-2817e80b4281.5332.38" }, "object":{ "key":"myimage1.jpg", "size":"1024", "eTag":"37b51d194a7513e45b56f6524f2d51f2", "versionId":"", "sequencer": "F7E6D75DC742D108", "metadata":[], "tags":[] } }, "eventId":"", "opaqueData":"me@example.com" } ]}
以下是事件记录密钥及其定义:
-
awsRegion
: Zonegroup。 -
eventTime
: 指示触发事件的时间的时间戳。 -
eventName
:事件类型。它可以是ObjectCreated
、ObjectRemoved
或ObjectLifecycle:Expiration
-
userIdentity.principalId
:触发该事件的用户的身份。 -
requestParameters.sourceIPAddress
:触发该事件的客户端的 IP 地址。不支持此字段。 -
responseElements.x-amz-request-id
:触发事件的请求 ID。 -
responseElements.x_amz_id_2
:触发事件的 Ceph 对象网关的身份。身份格式为 RGWID-ZONE-ZONEGROUP。 -
s3.configurationId
:创建事件的通知 ID。 -
s3.bucket.name
:存储桶的名称。 -
s3.bucket.ownerIdentity.principalId
:存储桶的所有者。 -
s3.bucket.arn
: bucket 的 Amazon Resource Name(ARN)。 -
s3.bucket.id
:存储桶的身份。 -
s3.object.key
:对象键。 -
s3.object.size
:对象的大小。 -
s3.object.eTag
:对象 etag。 -
s3.object.version
:版本控制存储桶中的对象版本。 -
s3.object.sequencer
:以十六进制格式为每个对象增大更改的标识符。 -
s3.object.metadata
:对象上设置的任何元数据,作为x-amz-meta
。 -
s3.object.tags
:对象上设置的任何标签。 -
s3.eventId
:事件的唯一标识。 -
s3.opaqueData
: Opaque 数据在主题配置中设置,并添加到该主题触发的所有通知中。
其它资源
- 如需更多信息,请参阅事件消息结构。
2.15.10. 支持的事件类型
支持以下事件类型:
-
s3:ObjectCreated:*
-
s3:ObjectCreated:Put
-
s3:ObjectCreated:Post
-
s3:ObjectCreated:Copy
-
s3:ObjectCreated:CompleteMultipartUpload
在多部分上传中,进程结束时会发送 ObjectCreated:CompleteMultipartUpload
通知。
-
s3:ObjectRemoved:*
-
s3:ObjectRemoved:Delete
-
s3:ObjectRemoved:DeleteMarkerCreated
-
s3:ObjectLifecycle:Expiration:Current
-
s3:ObjectLifecycle:Expiration:NonCurrent
-
s3:ObjectLifecycle:Expiration:DeleteMarker
-
s3:ObjectLifecycle:Expiration:AbortMultipartUpload
-
s3:ObjectLifecycle:Transition:Current
-
s3:ObjectLifecycle:Transition:NonCurrent
-
s3:ObjectSynced:Create
2.15.11. 获取存储桶信息
获取有关现有 bucket 子集的信息。如果在没有 bucket
的情况下指定 uid
,则返回属于该用户的所有存储桶。如果只指定 存储桶
,则会检索该特定存储桶的信息。
功能
`buckets=read`
语法
GET /admin/bucket?format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 用于返回信息的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 否
uid
- 描述
- 检索存储桶信息的用户。
- Type
- 字符串
- 示例
-
foo_user
- 必需
- 否
stats
- 描述
- 返回存储桶统计信息。
- Type
- 布尔值
- 示例
- True [False]
- 必需
- 否
响应实体
stats
- 描述
- 每个存储桶信息。
- Type
- Container
- 父
- 不适用
bucket
- 描述
- 包含一个或多个 bucket 容器的列表。
- Type
- Container
- 父
-
bucket
bucket
- 描述
- 用于单一存储桶信息的容器。
- Type
- Container
- 父
-
bucket
名称
- 描述
- bucket 的名称。
- Type
- 字符串
- 父
-
bucket
pool
- 描述
- bucket 存储在其中的池。
- Type
- 字符串
- 父
-
bucket
id
- 描述
- 唯一的存储桶 ID。
- Type
- 字符串
- 父
-
bucket
marker
- 描述
- 内部存储桶标签。
- Type
- 字符串
- 父
-
bucket
owner
- 描述
- bucket 所有者的用户 ID。
- Type
- 字符串
- 父
-
bucket
usage
- 描述
- 存储使用信息。
- Type
- Container
- 父
-
bucket
index
- 描述
- bucket 索引的状态。
- Type
- 字符串
- 父
-
bucket
如果成功,请求会返回带有存储桶信息的 bucket 容器。
特殊错误响应
IndexRepairFailed
- 描述
- bucket 索引修复失败。
- 代码
- 409 冲突
2.15.12. 检查存储桶索引
检查现有存储桶的索引。
要检查带有 check-objects
的多部分对象核算,fix
必须设为 True。
功能
buckets=write
语法
GET /admin/bucket?index&format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 用于返回信息的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
check-objects
- 描述
- 检查 multipart 对象核算。
- Type
- 布尔值
- 示例
- True [False]
- 必需
- 否
fix
- 描述
- 另外,在检查时修复存储桶索引。
- Type
- 布尔值
- 示例
- false [False]
- 必需
- 否
响应实体
index
- 描述
- bucket 索引的状态。
- Type
- 字符串
特殊错误响应
IndexRepairFailed
- 描述
- bucket 索引修复失败。
- 代码
- 409 冲突
2.15.13. 删除存储桶
删除现有的存储桶。
功能
`buckets=write`
语法
DELETE /admin/bucket?format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 要删除的存储桶。
- 类型
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
purge-objects
- 描述
- 在删除前删除存储桶的对象。
- 类型
- 布尔值
- 示例
- True [False]
- 必需
- 否
响应实体
无。
特殊错误响应
BucketNotEmpty
- 描述
- 尝试删除非空存储桶。
- 代码
- 409 冲突
ObjectRemovalFailed
- 描述
- 无法删除对象。
- 代码
- 409 冲突
2.15.14. 链接存储桶
将存储桶链接到指定用户,从任何先前用户取消链接存储桶。
功能
`buckets=write`
语法
PUT /admin/bucket?format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 取消链接的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
uid
- 描述
- 将存储桶链接到的用户 ID。
- Type
- 字符串
- 示例
-
foo_user
- 必需
- 是
响应实体
bucket
- 描述
- 用于单一存储桶信息的容器。
- Type
- Container
- 父
- 不适用
名称
- 描述
- bucket 的名称。
- Type
- 字符串
- 父
-
bucket
pool
- 描述
- bucket 存储在其中的池。
- Type
- 字符串
- 父
-
bucket
id
- 描述
- 唯一的存储桶 ID。
- Type
- 字符串
- 父
-
bucket
marker
- 描述
- 内部存储桶标签。
- Type
- 字符串
- 父
-
bucket
owner
- 描述
- bucket 所有者的用户 ID。
- Type
- 字符串
- 父
-
bucket
usage
- 描述
- 存储使用信息。
- Type
- Container
- 父
-
bucket
index
- 描述
- bucket 索引的状态。
- Type
- 字符串
- 父
-
bucket
特殊错误响应
BucketUnlinkFailed
- 描述
- 无法从指定用户取消链接存储桶。
- 代码
- 409 冲突
BucketLinkFailed
- 描述
- 无法将存储桶链接到指定用户。
- 代码
- 409 冲突
2.15.15. 取消链接存储桶
从指定用户取消链接存储桶。主要用于更改 bucket 所有权。
功能
`buckets=write`
语法
POST /admin/bucket?format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 取消链接的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
uid
- 描述
- 将存储桶链接到的用户 ID。
- Type
- 字符串
- 示例
-
foo_user
- 必需
- 是
响应实体
无。
特殊错误响应
BucketUnlinkFailed
- 描述
- 无法从指定用户取消链接存储桶。
- Type
- 409 冲突
2.15.16. 获取存储桶或对象策略
对一个对象或 bucket 的读取策略。
功能
`buckets=read`
语法
GET /admin/bucket?policy&format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 要从中读取策略的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
object
- 描述
- 从中读取策略的对象。
- Type
- 字符串
- 示例
-
foo.txt
- 必需
- 否
响应实体
policy
- 描述
- 访问控制策略。
- Type
- Container
- 父
- 不适用
如果成功,返回对象或存储桶策略
特殊错误响应
IncompleteBody
- 描述
- 没有为存储桶策略请求指定存储桶,或未为对象策略请求指定对象。
- 代码
- 400 错误请求
2.15.17. 删除对象
删除现有对象。
不需要所有者才能终止。
功能
`buckets=write`
语法
DELETE /admin/bucket?object&format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 包含要删除的对象的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 是
object
- 描述
- 要删除的对象
- Type
- 字符串
- 示例
-
foo.txt
- 必需
- 是
响应实体
无。
特殊错误响应
NoSuchObject
- 描述
- 指定对象不存在。
- 代码
- 404 not Found
ObjectRemovalFailed
- 描述
- 无法删除对象。
- 代码
- 409 冲突
2.15.18. 配额
管理操作 API 允许您在用户和用户拥有的 bucket 上设置配额。配额包括 bucket 中对象的最大数量,以及最大存储大小(以 MB 为单位)。
要查看配额,用户必须具有 users=read
能力。要设置,修改或禁用配额,用户必须具有 users=write
功能。
配额的有效参数包括:
-
Bucket:
bucket
选项允许您为用户拥有的 bucket 指定配额。 -
最大对象:
--max-objects
设置允许您指定对象的最大数量。负值将禁用此设置。 -
Maximum Size: 您可以使用
max-size
选项为最大字节数指定配额。负值将禁用此设置。 -
Quota Scope:
quota-scope
选项设定配额的范围。选项为bucket
和user
。
2.15.19. 获取用户配额
要获得配额,用户必须具有带有 read
权限的 users
能力。
语法
GET /admin/user?quota&uid=UID"a-type=user
2.15.20. 设置用户配额
要获得配额,用户必须具有带有 write
权限的 users
能力。
语法
PUT /admin/user?quota&uid=UID"a-type=user
内容必须包括配额设置的 JSON 表示,如相应读取操作中编码。
2.15.21. 获取存储桶配额
获取有关现有 bucket 子集的信息。如果在没有 bucket
的情况下指定 uid
,则返回属于该用户的所有存储桶。如果只指定 存储桶
,则会检索该特定存储桶的信息。
功能
`buckets=read`
语法
GET /admin/bucket?format=json HTTP/1.1
Host FULLY_QUALIFIED_DOMAIN_NAME
请求参数
bucket
- 描述
- 用于返回信息的存储桶。
- Type
- 字符串
- 示例
-
foo_bucket
- 必需
- 否
uid
- 描述
- 检索存储桶信息的用户。
- Type
- 字符串
- 示例
-
foo_user
- 必需
- 否
stats
- 描述
- 返回存储桶统计信息。
- Type
- 布尔值
- 示例
- True [False]
- 必需
- 否
响应实体
stats
- 描述
- 每个存储桶信息。
- Type
- Container
- 父
- 不适用
bucket
- 描述
- 包含一个或多个 bucket 容器的列表。
- Type
- Container
- 父
- 不适用
bucket
- 描述
- 用于单一存储桶信息的容器。
- Type
- Container
- 父
-
bucket
名称
- 描述
- bucket 的名称。
- Type
- 字符串
- 父
-
bucket
pool
- 描述
- bucket 存储在其中的池。
- Type
- 字符串
- 父
-
bucket
id
- 描述
- 唯一的存储桶 ID。
- Type
- 字符串
- 父
-
bucket
marker
- 描述
- 内部存储桶标签。
- Type
- 字符串
- 父
-
bucket
owner
- 描述
- bucket 所有者的用户 ID。
- Type
- 字符串
- 父
-
bucket
usage
- 描述
- 存储使用信息。
- Type
- Container
- 父
-
bucket
index
- 描述
- bucket 索引的状态。
- Type
- 字符串
- 父
-
bucket
如果成功,请求会返回带有存储桶信息的 bucket 容器。
特殊错误响应
IndexRepairFailed
- 描述
- bucket 索引修复失败。
- 代码
- 409 冲突
2.15.22. 设置存储桶配额
要获得配额,用户必须具有带有 write
权限的 users
能力。
语法
PUT /admin/user?quota&uid=UID"a-type=bucket
内容必须包括配额设置的 JSON 表示,如相应读取操作中编码。
2.15.23. 获取用法信息
请求带宽使用量信息。
功能
`usage=read`
语法
GET /admin/usage?format=json HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
请求参数
uid
- 描述
- 请求信息的用户。
- Type
- 字符串
- 必需
- 是
start
- 描述
-
数据请求的开始时间以及可选的日期。例如,
2012-09-25 16:00:00
。 - Type
- 字符串
- 必需
- 否
end
- 描述
-
数据请求结束的日期以及可选。例如,
2012-09-25 16:00:00
。 - Type
- 字符串
- 必需
- 否
show-entries
- 描述
- 指定是否应返回数据条目。
- Type
- 布尔值
- 必需
- 否
show-summary
- 描述
- 指定是否应返回数据条目。
- Type
- 布尔值
- 必需
- 否
响应实体
usage
- 描述
- 用于用法信息的容器。
- Type
- Container
entries
- 描述
- 用于用法条目信息的容器。
- Type
- Container
user
- 描述
- 用于用户数据信息的容器。
- Type
- Container
owner
- 描述
- 拥有存储桶的用户的名称。
- Type
- 字符串
bucket
- 描述
- bucket 名称。
- Type
- 字符串
time
- 描述
- 指定数据的时间下限,将其舍入到第一个相关小时的开头。
- Type
- 字符串
epoch
- 描述
-
自
1/1/1970
起的时间(以秒为单位)。 - Type
- 字符串
类别
- 描述
- 用于统计类别的容器。
- Type
- Container
entry
- 描述
- 用于统计条目的容器。
- Type
- Container
category
- 描述
- 提供统计的请求类别的名称。
- Type
- 字符串
bytes_sent
- 描述
- Ceph 对象网关发送的字节数。
- Type
- 整数
bytes_received
- 描述
- Ceph 对象网关收到的字节数。
- Type
- 整数
ops
- 描述
- 操作数量。
- Type
- 整数
successful_ops
- 描述
- 成功操作数量。
- Type
- 整数
summary
- 描述
- 成功操作数量。
- Type
- Container
total
- 描述
- 容器用于统计摘要聚合的总数。
- Type
- Container
如果成功,响应包含请求的信息。
2.15.24. 删除使用信息
删除使用信息。如果未指定日期,可删除所有使用信息。
功能
`usage=write`
语法
DELETE /admin/usage?format=json HTTP/1.1
Host: FULLY_QUALIFIED_DOMAIN_NAME
请求参数
uid
- 描述
- 请求信息的用户。
- Type
- 字符串
- 示例
-
foo_user
- 必需
- 是
start
- 描述
-
数据请求的开始时间以及可选的日期。例如,
2012-09-25 16:00:00
。 - Type
- 字符串
- 示例
-
2012-09-25 16:00:00
- 必需
- 否
end
- 描述
-
数据请求结束的日期以及可选。例如,
2012-09-25 16:00:00
。 - Type
- 字符串
- 示例
-
2012-09-25 16:00:00
- 必需
- 否
remove-all
- 描述
-
未指定
uid
时需要此项以确认删除多用户数据。 - Type
- 布尔值
- 示例
- True [False]
- 必需
- 否
2.15.25. 标准错误响应
以下列表详细介绍了标准错误响应及其描述。
AccessDenied
- 描述
- 拒绝访问。
- 代码
- 403 Forbidden
InternalError
- 描述
- 内部服务器错误.
- 代码
- 500 内部服务器错误
NoSuchUser
- 描述
- 用户不存在。
- 代码
- 404 not Found
NoSuchBucket
- 描述
- bucket 不存在。
- 代码
- 404 not Found
NoSuchKey
- 描述
- 没有这样的访问密钥。
- 代码
- 404 not Found