1.16.2. 创建主题
您可以在创建存储桶通知前创建主题。主题是 SNS 操作的一个简单通知服务(SNS)实体及所有主题操作(即 create
, delete
, list
和 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]
以下是请求参数:
-
端点
:发送通知的端点 URL。 -
OpaqueData
: 不透明数据在主题配置中设置,并添加到该主题触发的所有通知。 HTTP 端点:
-
URL
: http[s]://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-acklevel
: 不需要最终确认,因为消息可能会在代理中存入最终目的地。有三个确认方法:-
none
:当发送到代理,则消息被视为已发送
。 -
broker
:默认情况下,如果代理确认,则消息会被视为已发送
。 routable
:如果代理可路由到使用者,则消息被视为已发送
。注意特定参数的键和值不必驻留在同一行中,或者以任何特定顺序使用,但必须使用相同的索引。属性索引不需要是连续的,或从任何特定值开始。
注意topic-name
用于 AMQP 主题。
-
-
Kafka 端点:
-
URL
: kafka://[USER: PASSWORD @] FQDN[: PORT]. -
如果
use-ssl
默认设为false
。如果将use-ssl
设置为true
,则与代理的连接会使用安全的连接。 -
如果提供了
ca-location
,并且使用安全连接,则会使用指定的 CA 而不是默认的端口来验证代理。 - 用户和密码只能通过 HTTP[S] 提供。如果没有,则topic 创建请求将被拒绝。
-
只能通过
use-ssl
来提供用户和密码,如果不是,则与代理的连接会失败。 -
端口默认为
: 9092。 kafka-acklevel
: 不需要结束确认,因为信息可能会在代理中被传送到最终目的地前保留。存在两个确认方法:-
none
:当发送到代理,则消息被视为已发送
。 -
broker
:默认情况下,如果代理确认,则消息将被发送
。
-
-
-
以以下格式创建响应:
语法
<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'})"