# Azion CLI dns-record

Os comandos `dns-record` da Azion CLI criam, listam, descrevem, atualizam e excluem os registros de uma zona do [Edge DNS](/pt-br/documentacao/plataforma/edge-dns/). Um registro é um nome, um tipo e os valores com que o Edge DNS responde por esse nome. Um registro pertence a uma zona, então todo comando recebe o `--zone-id` dessa zona. Os campos de um registro estão em [Zonas e registros](/pt-br/documentacao/plataforma/edge-dns/zonas-e-registros/). As opções que todo comando aceita, como `--format`, `--out` e `-y`, estão em [Opções globais](/pt-br/documentacao/devtools/cli/globals/).

---

## Criar

`azion create dns-record` cria um registro em uma zona, com o nome, o tipo e os valores que você informa:

```bash
azion create dns-record [flags]
```

| Flag            | Curta | Tipo    | Padrão | Descrição                                                                                                                                                                                           |
| --------------- | ----- | ------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--description` | —     | string  | —      | Descrição do registro. Usada somente quando `--policy` é `weighted`.                                                                                                                                |
| `--file`        | —     | string  | —      | Caminho de um arquivo JSON com os atributos do registro. Use `-` para ler o JSON da entrada padrão.                                                                                                 |
| `--name`        | —     | string  | —      | Nome do registro dentro da zona, como `www`.                                                                                                                                                        |
| `--policy`      | —     | string  | —      | Política de roteamento do registro: `simple` ou `weighted`.                                                                                                                                         |
| `--rdata`       | —     | strings | —      | Valores do registro. Repita a flag ou informe uma lista separada por vírgulas para vários valores.                                                                                                  |
| `--ttl`         | —     | int     | —      | Time to live (TTL) do registro, em segundos.                                                                                                                                                        |
| `--type`        | —     | string  | —      | Tipo do registro, como `A`, `AAAA`, `CNAME`, `MX`, `TXT` ou `NS`. Os tipos e os formatos dos seus valores estão em [Tipos de registro](/pt-br/documentacao/plataforma/edge-dns/tipos-de-registro/). |
| `--weight`      | —     | int     | —      | Peso do registro. Usado somente quando `--policy` é `weighted`.                                                                                                                                     |
| `--zone-id`     | —     | int     | —      | **Obrigatório**. ID da zona que guarda o registro. Sem ela, o comando pergunta o ID da zona.                                                                                                        |

Este comando cria um registro `A` chamado `www` com dois valores e um TTL de 3600 segundos:

```bash
azion create dns-record --zone-id 1234 --name www --type A --rdata '192.0.2.1,192.0.2.2' --ttl 3600
```

O comando imprime o ID do registro:

```text
Created DNS record with ID 100001
```

`--rdata` divide o seu valor em cada vírgula, então um valor que contém uma vírgula vira vários valores. Com `--rdata 'v=spf1 include:a.example.com,b.example.com ~all'`, o registro armazena `v=spf1 include:a.example.com` e `b.example.com ~all` como dois valores. Para manter a vírgula dentro de um valor, envolva o valor em aspas duplas dentro das aspas simples, ou informe o valor em um arquivo JSON com `--file`.

Este comando cria um registro `TXT` chamado `spf2` cujo único valor contém uma vírgula:

```bash
azion create dns-record --zone-id 1234 --name spf2 --type TXT --rdata '"v=spf1 include:a.example.com,b.example.com ~all"' --ttl 300
```

O comando imprime o ID do registro, que armazena o valor inteiro:

```text
Created DNS record with ID 100003
```

Um valor de `--type` que não é um tipo de registro, como `ZZZ`, é recusado com este erro:

```text
Error: Failed to create the DNS record: ["\"ZZZ\" is not a valid choice."]. Check your settings and try again. If the error persists, contact Azion support.
```

---

## Listar

`azion list dns-record` lista os registros de uma zona, 50 por página:

```bash
azion list dns-record [flags]
```

| Flag          | Curta | Tipo   | Padrão | Descrição                                                                                          |
| ------------- | ----- | ------ | ------ | -------------------------------------------------------------------------------------------------- |
| `--details`   | —     | —      | —      | Aceita, mas não adiciona colunas: a lista mantém as colunas `ID`, `NAME`, `TYPE`, `TTL` e `RDATA`. |
| `--filter`    | —     | string | —      | Nome pelo qual filtrar a lista.                                                                    |
| `--order-by`  | —     | string | —      | Campo pelo qual ordenar a lista.                                                                   |
| `--page`      | —     | int    | `1`    | Número da página a retornar.                                                                       |
| `--page-size` | —     | int    | `50`   | Número de registros em cada página.                                                                |
| `--zone-id`   | —     | int    | —      | **Obrigatório**. ID da zona cujos registros o comando lista.                                       |

Este comando lista os registros da zona com ID `1234`:

```bash
azion list dns-record --zone-id 1234
```

O comando imprime uma linha por registro:

```text
ID      NAME  TYPE  TTL   RDATA
100001  www   A     3600  192.0.2.1, 192.0.2.2
100002  spf   TXT   300   v=spf1 include:a.example.com, b.example.com ~all
100003  spf2  TXT   300   v=spf1 include:a.example.com,b.example.com ~all
100004  txt   TXT   300   v=spf1 include:a.example.com,b.example.com ~all
```

A coluna `RDATA` junta os valores de um registro com uma vírgula e um espaço. O registro `spf` guarda dois valores e o registro `spf2` guarda um, e as duas linhas parecem quase iguais. Para ler cada valor separadamente, descreva o registro com `--format json`.

---

## Descrever

`azion describe dns-record` imprime as configurações de um registro:

```bash
azion describe dns-record [flags]
```

| Flag          | Curta | Tipo | Padrão | Descrição                                          |
| ------------- | ----- | ---- | ------ | -------------------------------------------------- |
| `--record-id` | —     | int  | —      | **Obrigatório**. ID do registro a descrever.       |
| `--zone-id`   | —     | int  | —      | **Obrigatório**. ID da zona que guarda o registro. |

Este comando descreve o registro com ID `100001`:

```bash
azion describe dns-record --zone-id 1234 --record-id 100001
```

O comando imprime o nome, o tipo, os valores e as configurações de roteamento do registro:

```text
ID:            100001
Description:
Name:          www
TTL:           3600
Type:          A
Rdata:         ["192.0.2.1","192.0.2.2"]
Policy:        simple
Weight:        255
```

Com `--format json`, o comando imprime `description`, `id`, `name`, `policy`, `rdata`, `ttl`, `type` e `weight`, com `rdata` como um array de um item por valor. Um registro criado sem `--policy` guarda a política `simple` e o peso `255`.

Um ID de registro que não existe na zona falha com este erro:

```text
Error: Failed to describe the DNS record: The given ID or API's endpoint doesn't exist or isn't available. Check that the identifying information is correct. Check your settings and try again. If the error persists, contact Azion support.
```

---

## Atualizar

`azion update dns-record` altera o nome, o tipo, os valores, o TTL ou as configurações de roteamento de um registro:

```bash
azion update dns-record [flags]
```

| Flag            | Curta | Tipo    | Padrão | Descrição                                                                                          |
| --------------- | ----- | ------- | ------ | -------------------------------------------------------------------------------------------------- |
| `--description` | —     | string  | —      | Descrição do registro. Usada somente quando `--policy` é `weighted`.                               |
| `--file`        | —     | string  | —      | Caminho de um arquivo JSON com os atributos a alterar. Use `-` para ler o JSON da entrada padrão.  |
| `--name`        | —     | string  | —      | Novo nome do registro dentro da zona.                                                              |
| `--policy`      | —     | string  | —      | Política de roteamento do registro: `simple` ou `weighted`.                                        |
| `--rdata`       | —     | strings | —      | Valores do registro. Repita a flag ou informe uma lista separada por vírgulas para vários valores. |
| `--record-id`   | —     | int     | —      | **Obrigatório**. ID do registro a atualizar.                                                       |
| `--ttl`         | —     | int     | —      | Time to live (TTL) do registro, em segundos.                                                       |
| `--type`        | —     | string  | —      | Tipo do registro, como `A`, `AAAA`, `CNAME`, `MX`, `TXT` ou `NS`.                                  |
| `--weight`      | —     | int     | —      | Peso do registro. Usado somente quando `--policy` é `weighted`.                                    |
| `--zone-id`     | —     | int     | —      | **Obrigatório**. ID da zona que guarda o registro.                                                 |

`--rdata` substitui todos os valores do registro e divide o seu valor em cada vírgula, como na criação.

Este comando define um valor e um TTL de 7200 segundos no registro com ID `100001`:

```bash
azion update dns-record --zone-id 1234 --record-id 100001 --rdata 192.0.2.3 --ttl 7200
```

O comando confirma a atualização:

```text
DNS record 100001 was updated
```

O registro passa a guardar o valor único `192.0.2.3`, e o seu nome e o seu tipo continuam `www` e `A`.

---

## Excluir

`azion delete dns-record` exclui um registro de uma zona:

```bash
azion delete dns-record [flags]
```

| Flag          | Curta | Tipo | Padrão | Descrição                                          |
| ------------- | ----- | ---- | ------ | -------------------------------------------------- |
| `--record-id` | —     | int  | —      | **Obrigatório**. ID do registro a excluir.         |
| `--zone-id`   | —     | int  | —      | **Obrigatório**. ID da zona que guarda o registro. |

Este comando exclui o registro com ID `100001`:

```bash
azion delete dns-record --zone-id 1234 --record-id 100001
```

O comando confirma a exclusão:

```text
DNS record 100001 was successfully deleted
```

---

## Usar um arquivo JSON

`azion create dns-record` e `azion update dns-record` leem os atributos do registro de um arquivo JSON com `--file`. A zona continua na linha de comando como `--zone-id` e, na atualização, o registro continua na linha de comando como `--record-id`.

No arquivo, `rdata` é um array com um item por valor, então uma vírgula dentro de um valor continua fazendo parte dele. Este arquivo cria um registro `TXT` chamado `txt` com um valor e um TTL de 300 segundos:

```json
{
  "name": "txt",
  "type": "TXT",
  "rdata": ["v=spf1 include:a.example.com,b.example.com ~all"],
  "ttl": 300
}
```

Informe o arquivo ao comando de criação:

```bash
azion create dns-record --zone-id 1234 --file rec-create.json
```

O comando imprime o ID do registro:

```text
Created DNS record with ID 100004
```

Na atualização, o comando altera somente os campos do arquivo, e os campos que você deixa de fora mantêm os seus valores. Este arquivo substitui o valor do registro e define um TTL de 600 segundos:

```json
{
  "rdata": ["v=spf1 -all"],
  "ttl": 600
}
```

Informe o arquivo ao comando de atualização:

```bash
azion update dns-record --zone-id 1234 --record-id 100004 --file rec-update.json
```

O comando confirma a atualização:

```text
DNS record 100004 was updated
```

O registro mantém o nome `txt` e o tipo `TXT`, e guarda o valor `v=spf1 -all` com um TTL de 600 segundos.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Zonas e registros](/pt-br/documentacao/plataforma/edge-dns/zonas-e-registros.md): Cada campo de registro, o seu label no Console, o seu campo na API e a sua flag na CLI.
- [Azion CLI dns-zone](/pt-br/documentacao/devtools/cli/recursos/dns-zone.md): Os comandos que criam e gerenciam as zonas que guardam os registros.
- [Azion CLI dnssec](/pt-br/documentacao/devtools/cli/recursos/dnssec.md): Os comandos que leem o estado do DNSSEC de uma zona e ativam ou desativam a assinatura.
