
# 创建自定义事件源 - CreateEventSource
#### 功能介绍
创建用户自定义类型的事件源，只能指定自定义通道，不能指定系统通道。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/EG/doc?api=CreateEventSource)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-eg/eg-api-025.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项               | 访问级别  | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | eg:sources:create | Write | -           | -   | -  | -      |
     
  
 
#### URI
POST /v1/{project_id}/sources
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| project_id | 是    | String | 租户资源空间ID |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数          | 是否必选 | 参数类型                                                                      | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| name        | 是    | String                                                                    | 自定义事件源名称，租户下唯一，由小写字母、数字、点、下划线和中划线组成，必须以字母或数字开头，且不能以hc.开头                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| description | 否    | String                                                                    | 事件源描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| type        | 否    | String                                                                    | 事件源类型： - APPLICATION：自定义应用   - RABBITMQ：分布式消息服务RabbitMQ版   - ROCKETMQ：分布式消息服务RocketMQ版    |
| detail      | 否    | [EventSourceDetail] object | json格式封装消息实例链接信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
 表4EventSourceDetail 
| 参数              | 是否必选 | 参数类型    | 描述            |
|:---|:---|:---|:---|
| instance_id     | 否    | String  | MQ实例ID        |
| group           | 是    | String  | 消费组           |
| topic           | 是    | String  | Topic         |
| access_key      | 是    | String  | 用户名           |
| secret_key      | 是    | String  | 密钥            |
| vpc_id          | 否    | String  | 虚拟私有云         |
| subnet_id       | 否    | String  | 子网            |
| namesrv_address | 否    | String  | 连接地址          |
| ssl_enable      | 否    | Boolean | SSL           |
| enable_acl      | 否    | Boolean | ACL访问控制       |
| vhost_name      | 否    | String  | rabbitmq交换机名称 |
| queue_name      | 否    | String  | rabbitmq队列名   |
| user_name       | 否    | String  | 用户名           |
| password        | 否    | String  | 密码            |
   
#### 响应参数
**状态码：200**
表5响应Header参数 
| 参数           | 参数类型   | 描述                                                                                                |
|:---|:---|:---|
| X-Request-Id | String | This field is the request ID number for task tracking. Format is request_uuid-timestamp-hostname. |
   
表6响应Body参数 
| 参数            | 参数类型                                                                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|
| id            | String                                                                   | 事件源ID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| name          | String                                                                   | 事件源名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| label         | String                                                                   | 事件源名称展示                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| description   | String                                                                   | 事件源描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| provider_type | String                                                                   | 事件源提供方类型，OFFICIAL：官方云服务事件源；CUSTOM：用户创建的自定义事件源；PARTNER：伙伴事件源                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| event_types   | Array of [event_types] objects | 事件源提供的事件类型列表，只有官方云服务事件源提供事件类型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| created_time  | String                                                                   | 创建UTC时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| updated_time  | String                                                                   | 更新UTC时间                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| channel_name  | String                                                                   | 事件源归属的事件通道名称                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| type          | String                                                                   | 事件源类型： - APPLICATION：自定义应用   - RABBITMQ：分布式消息服务RabbitMQ版   - ROCKETMQ：分布式消息服务RocketMQ版    |
| detail        | Object                                                                   | json格式封装消息实例链接信息：如RabbitMQ实例的instance_id字段、虚拟主机vhost字段、队列queue字段、用户名、密码等                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| status        | String                                                                   | 自定义事件源状态： - CREATE_FAILED：创建失败   - RUNNING：运行中   - ERROR：错误                               |
| error_info    | [ErrorInfo] object               | 错误信息                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表7event_types 
| 参数          | 参数类型   | 描述     |
|:---|:---|:---|
| name        | String | 事件类型名称 |
| description | String | 事件类型描述 |
   
 表8ErrorInfo 
| 参数           | 参数类型   | 描述   |
|:---|:---|:---|
| error_code   | String | 错误码  |
| error_detail | String | 错误详情 |
| error_msg    | String | 错误信息 |
   
#### 请求示例
创建自定义事件源
```
POST https://{endpoint}/v1/{project_id}/sources
{
  "name" : "first-source",
  "description" : "first event source",
  "channel_id" : "bd14144e-8f3c-43d6-bdfd-bf09b52c2b96",
  "type" : "RABBITMQ"
}
```
#### 响应示例
**状态码：200**
成功响应
```
{
  "id" : "90e0b962-c6c1-438c-ba8a-3024fe592bda",
  "name" : "first-source",
  "label" : "first-source",
  "description" : "first event source",
  "provider_type" : "CUSTOM",
  "event_types" : [ {
    "name" : "OBS:CloudTrace:ApiCall",
    "description" : "服务API调用类型事件"
  } ],
  "created_time" : "2021-12-09 09:00:00",
  "updated_time" : "2021-12-09 09:00:00",
  "channel_name" : "channel",
  "type" : "RABBITMQ",
  "detail" : "{\"instance_id\":\"ac14144e-9v3c-43d6-acfd-bf09b52c98uy\",\"user_name\":\"rabbitmq_user\",\"password\":\"changeme\",\"vhost_name\":\"vhost_name\",\"queue_name\":\"queue_name\"}",
  "status" : "RUNNING",
  "error_info" : { }
}
```
#### 状态码
| 状态码 | 描述   |
|:---|:---|
| 200 | 成功响应 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-eg/ErrorCode.html)。
