# CreateSecurityGroup

## 1. 接口描述

本接口(CreateSecurityGroup)用于创建一个安全组。

{% hint style="info" %}
**注意事项**

* 同一个Team能创建的安全组资源个数是有限制的，如果需要申请更多资源，请提交Support申请。
* 安全组的规则数量有限，如果需要申请更多资源，请提交Support申请。
* 同一规则方向，规则不能重复。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称              | 必选 | 类型                                                                                                                     | 描述                                                           |
| ----------------- | -- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| scope             | 否  | String                                                                                                                 | <p>范围。</p><p>目前只支持<code>Global</code>。</p><p>默认值：Global。</p> |
| securityGroupName | 是  | String                                                                                                                 | <p>安全组名称。</p><p>范围1到64个字符。</p><p>仅支持输入字母、数字、-和英文句点(.)。</p>   |
| ruleInfos         | 否  | Array of [SecurityGroupRuleInfo](https://docs.console.zenlayer.com/api/cn/compute/datastructure#securitygroupruleinfo) | 安全组的规则。                                                      |

## 3. 响应结果

| 参数名称            | 类型     | 描述                                                       |
| --------------- | ------ | -------------------------------------------------------- |
| requestId       | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| securityGroupId | String | 创建的安全组ID。                                                |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 创建一个安全组。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: CreateSecurityGroup
<Common Request Params>

Request:
{
  "securityGroupName": "test123",
  "ruleInfos": [
    {
      "direction": "ingress",
      "policy": "accept",
      "priority": 1,
      "ipProtocol": "tcp",
      "portRange": "22",
      "cidrIp": "0.0.0.0/0",
      "desc": "aaa"
    },
    {
      "direction": "egress",
      "policy": "accept",
      "priority": 1,
      "ipProtocol": "tcp",
      "portRange": "22",
      "cidrIp": "0.0.0.0/0",
      "desc": "xxx"
    }
  ]
}

Response:
{
  "requestId": "TA851AB85-577F-41BE-8E76-68171F021E36",
  "response": {
    "requestId": "TA851AB85-577F-41BE-8E76-68171F021E36",
    "securityGroupId": "your-security-group-id"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](https://docs.console.zenlayer.com/api/cn/api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](https://docs.console.zenlayer.com/api/cn/api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                                     | 说明           |
| ------- | ------------------------------------------------------- | ------------ |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_CIDR\_IP           | 安全组规则源IP不合法。 |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_DESC               | 规则描述包含非法字符。  |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_DIRECTION          | 出入方向参数错误。    |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_IP\_PROTOCOL       | 协议不合法。       |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_PORT\_RANGE        | 端口范围不合法。     |
| 400     | INVALID\_PARAMETER\_SECURITY\_GROUP\_PRIORITY           | 优先级不在指定范围。   |
| 403     | OPERATION\_DENIED\_SECURITY\_GROUP\_TEAM\_EXCEED\_LIMIT | 安全组数量超过配额限制。 |
