Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-25 GMT+08:00

Criação de discos EVS

Função

Essa API é usada para criar um disco EVS de pagamento por uso ou anual/mensal.

Método de chamada

Para obter detalhes, consulte Chamada de APIs.

URI

POST /v2.1/{project_id}/cloudvolumes

Tabela 1 Parâmetros de caminho

Parâmetro

Obrigatório

Tipo

Descrição

project_id

Sim

String

O ID do projeto.

Para obter detalhes sobre como obter o ID de projeto, consulte Obtenção de um ID de projeto.

Parâmetros de solicitação

Tabela 2 Parâmetros de cabeçalho de solicitação

Parâmetro

Obrigatório

Tipo

Descrição

X-Auth-Token

Sim

String

O token do usuário. Ele pode ser obtido chamando a API do IAM usada para obter um token de usuário. O valor de X-Subject-Token no cabeçalho da resposta é o token do usuário.

X-Client-Token

Não

String

O identificador de idempotência de uma solicitação. Este valor de parâmetro é gerado pelo cliente e deve ser exclusivo entre as solicitações. O valor é uma cadeia de caracteres de 36 dígitos no formato UUID e é válido por 8 horas. Se várias solicitações tiverem o mesmo identificador idempotente, as solicitações serão consideradas como uma solicitação idempotente e o mesmo corpo de resposta será retornado.

Tabela 3 Parâmetros do corpo da solicitação

Parâmetro

Obrigatório

Tipo

Descrição

bssParam

Não

BssParamForCreateVolume object

O parâmetro estendido de pagamento por uso e faturamento anual/mensal.

volume

Sim

CreateVolumeOption object

As informações do disco a ser criado.

server_id

Não

String

O servidor para anexar o disco. O modo de cobrança do disco criado é o mesmo do servidor. Atualmente, apenas os ECSs são suportados. Os BMSs não são suportados.

OS-SCH-HNT:scheduler_hints

Não

CreateVolumeSchedulerHints object

O parâmetro de agendamento de disco, que pode ser usado para criar o disco em um pool de armazenamento dedicado.

Tabela 4 BssParamForCreateVolume

Parâmetro

Obrigatório

Tipo

Descrição

chargingMode

Não

String

O modo de cobrança. O valor padrão é postPaid. Valores:

  • prePaid: anual/mensal

  • postPaid: pagamento por uso

Padrão: postPaid

Valores de enumeração:

  • postPaid

  • prePaid

isAutoPay

Não

String

Se deve pagar imediatamente. Este parâmetro é válido quando chargingMode é definido como prePaid. O valor padrão é false. Valores:

  • true: um pedido é pago imediatamente a partir do saldo da conta.

  • false: um pedido não é pago imediatamente após ser criado.

Padrão: false

Valores de enumeração:

  • true

  • false

isAutoRenew

Não

String

Se a assinatura deve ser renovada automaticamente. Este parâmetro é válido quando chargingMode é definido como prePaid. O valor padrão é false. Valores:

  • true: renova automaticamente a assinatura. O prazo de renovação é o mesmo que o prazo de assinatura.

  • false: não renova automaticamente a assinatura.

Padrão: false

Valores de enumeração:

  • true

  • false

periodNum

Não

Integer

O termo de assinatura. Este parâmetro é válido e obrigatório somente quando chargingMode estiver definido como prePaid. Valores:

  • Se period_type for definido como month, o valor do parâmetro varia de 1 a 9.

  • Se periodType for definido como year, o valor do parâmetro será 1.

periodType

Não

String

A unidade do termo de assinatura. Este parâmetro é válido e obrigatório somente quando chargingMode estiver definido como prePaid. Valores:

  • month

  • year

Valores de enumeração:

  • month

  • year

Tabela 5 CreateVolumeOption

Parâmetro

Obrigatório

Tipo

Descrição

availability_zone

Sim

String

A AZ onde você deseja criar o disco.

backup_id

Não

String

O ID de backup. Esse parâmetro é obrigatório quando você cria o disco a partir de um backup.

count

Não

Integer

O número de discos a serem criados em um lote. Se este parâmetro não for especificado, apenas um disco será criado. Você pode criar um máximo de 100 discos em um lote. Se o disco for criado de um backup, a criação em lotes não será possível, e esse parâmetro deve ser definido como 1.

Se o valor especificado for um número decimal, a parte do número será usada por padrão.

description

Não

String

A descrição do disco. Você pode inserir até 85 caracteres.

enterprise_project_id

Não

String

O ID do projeto empresarial. Este ID é associado ao disco durante a criação do disco.

imageRef

Não

String

O ID da imagem. Se este parâmetro for especificado, o disco será criado a partir de uma imagem.

metadata

Não

Map<String,String>

As informações de metadados do disco. O valor pode ser o seguinte: __system__cmkid:

O ID da CMK de encriptação em metadata. Este parâmetro é utilizado em conjunto com __system__encrypted para encriptação. O comprimento do cmkid é fixado em 36 bytes.

NOTA:

Para obter detalhes sobre como obter o ID de chave, consulte Consulta da lista de chaves.

__system__encrypted:

O campo de encriptação nos metadata. O valor pode ser 0 (não criptografa) ou 1 (criptografa). Se esse parâmetro não for especificado, o atributo de encriptação do disco será o mesmo da fonte de dados. Se o disco não for criado a partir de uma fonte de dados, o disco não será criptografado por padrão.

[full_clone]

Se o disco for criado a partir de um snapshot e a clonagem vinculada precisar ser usada, defina esse parâmetro como 0.

[hw:passthrough]

  • Se o valor desse parâmetro for true, o tipo de dispositivo de disco será SCSI, o que permite que os sistemas operacionais do ECS acessem diretamente a mídia de armazenamento subjacente e ofereça suporte a comandos de reserva SCSI.

  • Se valor deste parâmetro é false, o tipo de dispositivo do disco é VBD, que oferece suporte somente aos comandos SCSI de leitura/gravação simples.

  • Se esse parâmetro não for especificado, o tipo de dispositivo de disco será VBD.

multiattach

Não

Boolean

Se o disco é compartilhável. O valor pode ser true (compartilhável) ou false (não compartilhável).

name

Não

String

O nome do disco. Se você criar um disco, o valor do name será o nome do disco. Você pode inserir até 64 caracteres. Se você criar vários discos (o valor de count maior que 1), o sistema adicionará automaticamente um hífen seguido por um número incremental de quatro dígitos, como -0000, ao final de cada nome de disco. Por exemplo, os nomes dos discos podem ser volume-0001 e volume-0002.

size

Sim

Integer

O tamanho do disco, em GiB. As restrições são as seguintes:

  • Disco do sistema: 1 GiB a 1.024 GiB

  • Disco de dados: 10 GiB a 32.768 GiB

  • Este parâmetro é obrigatório quando você cria um disco vazio ou usa uma imagem, ou um snapshot para criar um disco. Se você usar uma imagem ou um snapshot para criar um disco, o tamanho do disco não poderá ser menor que o tamanho da imagem ou do snapshot.

  • Esse parâmetro é opcional se você criar o disco a partir de um backup. Se não for especificado, o tamanho do disco será o mesmo que o tamanho do backup.

snapshot_id

Não

String

O ID do snapshot. Se esse parâmetro for especificado, o disco será criado a partir de um snapshot.

volume_type

Sim

String

O tipo de disco.

O valor pode ser SATA, SAS, GPSSD, SSD, ESSD, GPSSD2 ou ESSD2.

  • SATA: o tipo de I/O comum (esgotado)

  • SAS: o tipo de I/O alta

  • GPSSD: o tipo de SSD de uso geral

  • SSD: o tipo de I/O ultra-alta

  • ESSD: o tipo de SSD extremo

  • GPSSD2: o tipo de SSD V2 de uso geral

  • ESSD2: o tipo de SSD V2 extremo

Se o tipo de disco especificado não estiver disponível na AZ, o disco falhará ao ser criado.

NOTA:

Ao criar um disco a partir de um snapshot, verifique se o tipo de disco do novo disco é consistente com o do disco de origem do snapshot. Para obter detalhes sobre os tipos de disco, consulte

Tipos e desempenho de disco.

Valores de enumeração:

  • SATA

  • SAS

  • GPSSD

  • SSD

  • ESSD

  • GPSSD2

  • ESSD2

tags

Não

Map<String,String>

As informações sobre a tag de disco.

iops

Não

Integer

O IOPS configurado. Este parâmetro é obrigatório apenas quando um SSD de uso geral V2 ou um disco SSD extremo V2 é criado.

NOTA:

Para saber os intervalos de IOPS de discos SSD V2 de uso geral e SSD V2 extremo, consulte a tabela dados de desempenho do EVS em Tipos de disco e desempenho.

  • Apenas a cobrança paga por uso é suportada.

throughput

Não

Integer

A taxa de transferência configurada, na unidade de MiB/s. Este parâmetro é obrigatório somente quando um disco SSD V2 de uso geral é criado.

NOTA:

Para saber o intervalo de taxa de transferência dos discos SSD V2 de uso geral, consulte [a tabela de dados de desempenho do EVS em Tipos de disco e desempenho.

  • Apenas a cobrança paga por uso é suportada.

Tabela 6 CreateVolumeSchedulerHints

Parâmetro

Obrigatório

Tipo

Descrição

dedicated_storage_id

Não

String

O ID do pool de armazenamento dedicado. Se esse parâmetro for especificado, os discos serão criados no pool de armazenamento especificado.

Parâmetros de resposta

Código de status: 202

Tabela 7 Parâmetros do corpo de resposta

Parâmetro

Tipo

Descrição

job_id

String

O ID da tarefa. Esse parâmetro é retornado quando o disco é cobrado com base no pagamento por uso.

order_id

String

O ID do pedido. Este parâmetro é retornado quando o disco é cobrado anualmente/mensalmente.

  • Se você adicionar um disco a um servidor anual/mensal, o sistema conectará automaticamente o disco ao servidor. Nesse caso, este parâmetro também é retornado.

  • Se você precisar pagar pelo pedido, consulte Pagamento de pedidos anuais/mensais de produtos.

volume_ids

Array of strings

Os IDs dos discos a serem criados.

  • Se 404 for retornado quando você consultar os detalhes de um disco pelo ID do disco, o disco está sendo criado ou falhou ao ser criado.

  • Você pode consultar se a tarefa de criação de disco foi concluída por ID de tarefa. Para obter detalhes, consulte Consulta de status da tarefa.

Código de status: 400

Tabela 8 Parâmetros do corpo de resposta

Parâmetro

Tipo

Descrição

error

Error object

A mensagem de erro retornada se ocorrer um erro. Para obter detalhes, consulte Parâmetros no campo error.

Tabela 9 Error

Parâmetro

Tipo

Descrição

code

String

O código de erro retornado se ocorrer um erro. Para os códigos de erro e seus significados, consulte Códigos de erro.

message

String

A mensagem de erro retornada se ocorrer um erro.

Exemplo de solicitações

  • Criar um disco EVS compartilhado e criptografado no pool de armazenamento 1b6198f2-20a6-5dcc-aa21-58c1af5dc488 (Implemente o disco na AZ 1 de CN-Hong Kong. Defina o nome do disco como EVS-Test, o tipo de dispositivo como SCSI, o tipo de disco como I/O alta e o tamanho como 10 GiB.)

    POST https://{endpoint}/v2.1/{project_id}/cloudvolumes
    
    {
      "volume" : {
        "availability_zone" : "ap-southeast-1a",
        "size" : 10,
        "name" : "EVS-Test",
        "volume_type" : "SAS",
        "metadata" : {
          "hw:passthrough" : "true",
          "__system__encrypted" : "1",
          "__system__cmkid" : "94257794-d7aa-462c-9eaa-9f32c05b9966",
          "region" : "ap-southeast-1"
        },
        "multiattach" : true,
        "enterprise_project_id" : "0"
      },
      "OS-SCH-HNT:scheduler_hints" : {
        "dedicated_storage_id" : "1b6198f2-20a6-5dcc-aa21-58c1af5dc488"
      }
    }
  • Criar um disco EVS compartilhado (Implemente o disco na AZ 1 da região CN-Hong Kong. Defina o nome do disco como EVS-Test2, digite SSD V2, IOPS para 5.000 e taxa de transferência para 500 MiB/s, tamanho para 100 GiB e período de assinatura para três meses. Adicione tags ao disco. Ative a renovação automática da assinatura. Você será cobrado pelo disco imediatamente após o pedido ser feito.)

    POST https://{endpoint}/v2.1/{project_id}/cloudvolumes
    
    {
      "volume": {
        "count": 1,
        "availability_zone": "ap-southeast-1",
        "size": 100,
        "name": "EVS-Test2",
        "volume_type": "GPSSD2",
        "metadata": {},
        "tags": {
          "key_string": "value_string"
        },
        "iops": 5000,
        "throughput": 500,
        "multiattach": 1
      },
      "bssParam": {
        "chargingMode": "prePaid",
        "periodType": "month",
        "periodNum": 3,
        "isAutoPay": true,
        "isAutoRenew": true,
      }
    }

Exemplo de respostas

Código de status: 202

Accepted

{
  "job_id" : "70a599e0-31e7-49b7-b260-868f441e862b",
  "volume_ids" : [ "e1fa3e72-8c92-4871-9152-bf66fef0afe9" ]
}

Código de status: 400

Bad Request

{
  "error" : {
    "message" : "XXXX",
    "code" : "XXX"
  }
}

Código de amostra do SDK

O código de amostra do SDK é o seguinte.

Java

  • Criar um disco EVS compartilhado e criptografado no pool de armazenamento 1b6198f2-20a6-5dcc-aa21-58c1af5dc488 (Implemente o disco na AZ 1 de CN-Hong Kong. Defina o nome do disco como EVS-Test, o tipo de dispositivo como SCSI, o tipo de disco como I/O alta e o tamanho como 10 GiB.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.evs.v2.region.EvsRegion;
    import com.huaweicloud.sdk.evs.v2.*;
    import com.huaweicloud.sdk.evs.v2.model.*;
    
    import java.util.Map;
    import java.util.HashMap;
    
    public class CreateVolumeSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            EvsClient client = EvsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(EvsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateVolumeRequest request = new CreateVolumeRequest();
            CreateVolumeRequestBody body = new CreateVolumeRequestBody();
            CreateVolumeSchedulerHints osschhntschedulerhintsbody = new CreateVolumeSchedulerHints();
            osschhntschedulerhintsbody.withDedicatedStorageId("1b6198f2-20a6-5dcc-aa21-58c1af5dc488");
            Map<String, String> listVolumeMetadata = new HashMap<>();
            listVolumeMetadata.put("hw:passthrough", "true");
            listVolumeMetadata.put("__system__encrypted", "1");
            listVolumeMetadata.put("__system__cmkid", "94257794-d7aa-462c-9eaa-9f32c05b9966");
            listVolumeMetadata.put("region", "ap-southeast-1");
            CreateVolumeOption volumebody = new CreateVolumeOption();
            volumebody.withAvailabilityZone("ap-southeast-1a")
                .withEnterpriseProjectId("0")
                .withMetadata(listVolumeMetadata)
                .withMultiattach(true)
                .withName("EVS-Test")
                .withSize(10)
                .withVolumeType(CreateVolumeOption.VolumeTypeEnum.fromValue("SAS"));
            body.withOsSCHHNTSchedulerHints(osschhntschedulerhintsbody);
            body.withVolume(volumebody);
            request.withBody(body);
            try {
                CreateVolumeResponse response = client.createVolume(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    
  • Criar um disco EVS compartilhado (Implemente o disco na AZ 1 da região CN-Hong Kong. Defina o nome do disco como EVS-Test2, digite SSD V2, IOPS para 5.000 e taxa de transferência para 500 MiB/s, tamanho para 100 GiB e período de assinatura para três meses. Adicione tags ao disco. Ative a renovação automática da assinatura. Você será cobrado pelo disco imediatamente após o pedido ser feito.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.evs.v2.region.EvsRegion;
    import com.huaweicloud.sdk.evs.v2.*;
    import com.huaweicloud.sdk.evs.v2.model.*;
    
    import java.util.Map;
    import java.util.HashMap;
    
    public class CreateVolumeSolution {
    
        public static void main(String[] args) {
            // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
            // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
            String ak = System.getenv("CLOUD_SDK_AK");
            String sk = System.getenv("CLOUD_SDK_SK");
    
            ICredential auth = new BasicCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            EvsClient client = EvsClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(EvsRegion.valueOf("<YOUR REGION>"))
                    .build();
            CreateVolumeRequest request = new CreateVolumeRequest();
            CreateVolumeRequestBody body = new CreateVolumeRequestBody();
            Map<String, String> listVolumeTags = new HashMap<>();
            listVolumeTags.put("key_string", "value_string");
            CreateVolumeOption volumebody = new CreateVolumeOption();
            volumebody.withAvailabilityZone("ap-southeast-1")
                .withCount(1)
                .withMultiattach(1)
                .withName("EVS-Test2")
                .withSize(100)
                .withVolumeType(CreateVolumeOption.VolumeTypeEnum.fromValue("GPSSD2"))
                .withTags(listVolumeTags)
                .withIops(5000)
                .withThroughput(500);
            BssParamForCreateVolume bssParambody = new BssParamForCreateVolume();
            bssParambody.withChargingMode(BssParamForCreateVolume.ChargingModeEnum.fromValue("prePaid"))
                .withIsAutoPay(BssParamForCreateVolume.IsAutoPayEnum.fromValue("true"))
                .withIsAutoRenew(BssParamForCreateVolume.IsAutoRenewEnum.fromValue("true"))
                .withPeriodNum(3)
                .withPeriodType(BssParamForCreateVolume.PeriodTypeEnum.fromValue("month"));
            body.withVolume(volumebody);
            body.withBssParam(bssParambody);
            request.withBody(body);
            try {
                CreateVolumeResponse response = client.createVolume(request);
                System.out.println(response.toString());
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getRequestId());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
    

Python

  • Criar um disco EVS compartilhado e criptografado no pool de armazenamento 1b6198f2-20a6-5dcc-aa21-58c1af5dc488 (Implemente o disco na AZ 1 de CN-Hong Kong. Defina o nome do disco como EVS-Test, o tipo de dispositivo como SCSI, o tipo de disco como I/O alta e o tamanho como 10 GiB.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkevs.v2.region.evs_region import EvsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkevs.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = EvsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(EvsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateVolumeRequest()
            osschhntschedulerhintsbody = CreateVolumeSchedulerHints(
                dedicated_storage_id="1b6198f2-20a6-5dcc-aa21-58c1af5dc488"
            )
            listMetadataVolume = {
                "hw:passthrough": "true",
                "__system__encrypted": "1",
                "__system__cmkid": "94257794-d7aa-462c-9eaa-9f32c05b9966",
                "region": "ap-southeast-1"
            }
            volumebody = CreateVolumeOption(
                availability_zone="ap-southeast-1a",
                enterprise_project_id="0",
                metadata=listMetadataVolume,
                multiattach=True,
                name="EVS-Test",
                size=10,
                volume_type="SAS"
            )
            request.body = CreateVolumeRequestBody(
                os_sch_hn_tscheduler_hints=osschhntschedulerhintsbody,
                volume=volumebody
            )
            response = client.create_volume(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Criar um disco EVS compartilhado (Implemente o disco na AZ 1 da região CN-Hong Kong. Defina o nome do disco como EVS-Test2, digite SSD V2, IOPS para 5.000 e taxa de transferência para 500 MiB/s, tamanho para 100 GiB e período de assinatura para três meses. Adicione tags ao disco. Ative a renovação automática da assinatura. Você será cobrado pelo disco imediatamente após o pedido ser feito.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkevs.v2.region.evs_region import EvsRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkevs.v2 import *
    
    if __name__ == "__main__":
        # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak = __import__('os').getenv("CLOUD_SDK_AK")
        sk = __import__('os').getenv("CLOUD_SDK_SK")
    
        credentials = BasicCredentials(ak, sk) \
    
        client = EvsClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(EvsRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = CreateVolumeRequest()
            listTagsVolume = {
                "key_string": "value_string"
            }
            volumebody = CreateVolumeOption(
                availability_zone="ap-southeast-1",
                count=1,
                multiattach=1,
                name="EVS-Test2",
                size=100,
                volume_type="GPSSD2",
                tags=listTagsVolume,
                iops=5000,
                throughput=500
            )
            bssParambody = BssParamForCreateVolume(
                charging_mode="prePaid",
                is_auto_pay="true",
                is_auto_renew="true",
                period_num=3,
                period_type="month"
            )
            request.body = CreateVolumeRequestBody(
                volume=volumebody,
                bss_param=bssParambody
            )
            response = client.create_volume(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    

Go

  • Criar um disco EVS compartilhado e criptografado no pool de armazenamento 1b6198f2-20a6-5dcc-aa21-58c1af5dc488 (Implemente o disco na AZ 1 de CN-Hong Kong. Defina o nome do disco como EVS-Test, o tipo de dispositivo como SCSI, o tipo de disco como I/O alta e o tamanho como 10 GiB.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        evs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := evs.NewEvsClient(
            evs.EvsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateVolumeRequest{}
    	dedicatedStorageIdOSSCHHNTschedulerHints:= "1b6198f2-20a6-5dcc-aa21-58c1af5dc488"
    	osschhntschedulerhintsbody := &model.CreateVolumeSchedulerHints{
    		DedicatedStorageId: &dedicatedStorageIdOSSCHHNTschedulerHints,
    	}
    	var listMetadataVolume = map[string]string{
            "hw:passthrough": "true",
            "__system__encrypted": "1",
            "__system__cmkid": "94257794-d7aa-462c-9eaa-9f32c05b9966",
            "region": "ap-southeast-1",
        }
    	enterpriseProjectIdVolume:= "0"
    	multiattachVolume:= true
    	nameVolume:= "EVS-Test"
    	volumebody := &model.CreateVolumeOption{
    		AvailabilityZone: "ap-southeast-1a",
    		EnterpriseProjectId: &enterpriseProjectIdVolume,
    		Metadata: listMetadataVolume,
    		Multiattach: &multiattachVolume,
    		Name: &nameVolume,
    		Size: int32(10),
    		VolumeType: model.GetCreateVolumeOptionVolumeTypeEnum().SAS,
    	}
    	request.Body = &model.CreateVolumeRequestBody{
    		OSSCHHNTschedulerHints: osschhntschedulerhintsbody,
    		Volume: volumebody,
    	}
    	response, err := client.CreateVolume(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Criar um disco EVS compartilhado (Implemente o disco na AZ 1 da região CN-Hong Kong. Defina o nome do disco como EVS-Test2, digite SSD V2, IOPS para 5.000 e taxa de transferência para 500 MiB/s, tamanho para 100 GiB e período de assinatura para três meses. Adicione tags ao disco. Ative a renovação automática da assinatura. Você será cobrado pelo disco imediatamente após o pedido ser feito.)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        evs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/evs/v2/region"
    )
    
    func main() {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        ak := os.Getenv("CLOUD_SDK_AK")
        sk := os.Getenv("CLOUD_SDK_SK")
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := evs.NewEvsClient(
            evs.EvsClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.CreateVolumeRequest{}
    	var listTagsVolume = map[string]string{
            "key_string": "value_string",
        }
    	countVolume:= int32(1)
    	multiattachVolume:= 1
    	nameVolume:= "EVS-Test2"
    	iopsVolume:= int32(5000)
    	throughputVolume:= int32(500)
    	volumebody := &model.CreateVolumeOption{
    		AvailabilityZone: "ap-southeast-1",
    		Count: &countVolume,
    		Multiattach: &multiattachVolume,
    		Name: &nameVolume,
    		Size: int32(100),
    		VolumeType: model.GetCreateVolumeOptionVolumeTypeEnum().GPSSD2,
    		Tags: listTagsVolume,
    		Iops: &iopsVolume,
    		Throughput: &throughputVolume,
    	}
    	chargingModeBssParam:= model.GetBssParamForCreateVolumeChargingModeEnum().PRE_PAID
    	isAutoPayBssParam:= model.GetBssParamForCreateVolumeIsAutoPayEnum().TRUE
    	isAutoRenewBssParam:= model.GetBssParamForCreateVolumeIsAutoRenewEnum().TRUE
    	periodNumBssParam:= int32(3)
    	periodTypeBssParam:= model.GetBssParamForCreateVolumePeriodTypeEnum().MONTH
    	bssParambody := &model.BssParamForCreateVolume{
    		ChargingMode: &chargingModeBssParam,
    		IsAutoPay: &isAutoPayBssParam,
    		IsAutoRenew: &isAutoRenewBssParam,
    		PeriodNum: &periodNumBssParam,
    		PeriodType: &periodTypeBssParam,
    	}
    	request.Body = &model.CreateVolumeRequestBody{
    		Volume: volumebody,
    		BssParam: bssParambody,
    	}
    	response, err := client.CreateVolume(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    

Mais

Para obter o código de amostra do SDK de mais linguagens de programação, consulte a guia Código de amostra no API Explorer. O código de amostra do SDK pode ser gerado automaticamente.

Códigos de status

Código de status

Descrição

202

Accepted

400

Bad Request

Códigos de erro

Consulte Códigos de erro.