# Azion CLI data-stream

Os comandos `data-stream` da Azion CLI criam, listam, descrevem, atualizam e excluem os streams e os templates do [Data Stream](/pt-br/documentacao/plataforma/data-stream/). Todo verbo recebe um subcomando: `streams` atua sobre um stream, identificado com `--stream-id`, e `templates` atua sobre um template, identificado com `--template-id`. `azion list data-stream` também recebe `data-sources`. Os comandos existem apenas em contas que usam a [API v4](/pt-br/documentacao/devtools/cli/como-funciona/#contas-perfis-e-tokens). 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 data-stream` recebe o subcomando `streams` ou o subcomando `templates`.

### Streams

`azion create data-stream streams` cria um stream a partir de um arquivo JSON que contém o objeto do stream:

```bash
azion create data-stream streams [flags]
```

| Flag     | Curta | Tipo   | Padrão | Descrição                                                                                                                            |
| -------- | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `--file` | —     | string | —      | Caminho de um arquivo JSON com o objeto do stream. Use `-` para ler o JSON da entrada padrão. Sem ele, o comando pergunta o caminho. |

O comando não tem flag para o template. O ID do template vai no item `render_template` de `transform`, e um arquivo sem esse item falha com este erro:

```text
Error: Failed to create stream: ["Template must be provided."]. Check your settings and try again. If the error persists, contact Azion support
```

Este arquivo, `stream.json`, cria um stream parado chamado `my-stream`. Ele envia todos os eventos do Activity History, formatados pelo template predefinido *Activity History Collector*, para um endpoint HTTP:

```json
{
  "name": "my-stream",
  "active": false,
  "inputs": [{ "type": "raw_logs", "attributes": { "data_source": "activity_history" } }],
  "transform": [
    { "type": "sampling", "attributes": { "rate": 100 } },
    { "type": "render_template", "attributes": { "template": 251 } }
  ],
  "outputs": [{ "type": "standard", "attributes": { "url": "https://example.com/logs", "payload_format": "$dataset", "log_line_separator": "\n", "headers": {} } }]
}
```

`inputs` indica a fonte de dados pelo slug dela, `transform` contém a taxa de sampling e o ID do template, e `outputs` contém o único endpoint. Para cada campo e os valores que ele aceita, consulte [Configurações do stream](/pt-br/documentacao/plataforma/data-stream/configuracoes-do-stream/#objeto-do-stream).

Salvar um stream ativo que tem um item `sampling` desativa todos os outros streams da conta, e a API não retorna erro. Para manter vários streams ativos ao mesmo tempo, dê a cada um deles um item `filter_workloads`, como descrito em [Configurações do stream](/pt-br/documentacao/plataforma/data-stream/configuracoes-do-stream/#transform).

Passe o arquivo para o comando de criação:

```bash
azion create data-stream streams --file stream.json
```

O comando imprime o ID do stream:

```text
Created stream with ID 19609
```

### Templates

`azion create data-stream templates` cria um template personalizado com o nome e o data set que você passa:

```bash
azion create data-stream templates [flags]
```

| Flag         | Curta | Tipo   | Padrão   | Descrição                                                                                         |
| ------------ | ----- | ------ | -------- | ------------------------------------------------------------------------------------------------- |
| `--active`   | —     | string | `"true"` | Se o template está ativo: `true` ou `false`.                                                      |
| `--data-set` | —     | string | —        | Caminho de um arquivo JSON com o data set do template. Use `-` para ler o JSON da entrada padrão. |
| `--file`     | —     | string | —        | Caminho de um arquivo JSON com os atributos do template.                                          |
| `--name`     | —     | string | —        | Nome do template.                                                                                 |

`--data-set` recebe o caminho de um arquivo, não o próprio JSON. Uma string JSON passada diretamente na flag falha com este erro:

```text
Error: Failed to read the data set file. Verify if the file name and its path are correct and the file's content has a valid JSON format
```

O data set é um objeto JSON cujas entradas são `"<key>": "$<variable>"`. Este arquivo, `data-set.json`, envia quatro variáveis do *Activity History*:

```json
{
  "time": "$time",
  "title": "$title",
  "author_email": "$author_email",
  "resource_type": "$resource_type"
}
```

Para as variáveis de cada fonte de dados, consulte [Fontes de dados e variáveis](/pt-br/documentacao/plataforma/data-stream/fontes-de-dados-e-variaveis/). Para o formato do data set, consulte [Templates e payload](/pt-br/documentacao/plataforma/data-stream/templates-e-payload/#templates-personalizados).

Este comando cria um template chamado `my-template` a partir desse arquivo:

```bash
azion create data-stream templates --name my-template --data-set data-set.json
```

O comando imprime o ID do template:

```text
Created template with ID 2996
```

Um stream usa o template quando o item `render_template` dele traz esse ID, como em `"template": 2996`.

---

## Listar

`azion list data-stream` recebe o subcomando `streams`, `templates` ou `data-sources`. Os três comandos recebem as mesmas flags:

| Flag          | Curta | Tipo   | Padrão | Descrição                                                                                         |
| ------------- | ----- | ------ | ------ | ------------------------------------------------------------------------------------------------- |
| `--details`   | —     | —      | —      | Acrescenta colunas à lista de `streams`. Em `templates` e `data-sources`, não acrescenta nenhuma. |
| `--filter`    | —     | string | —      | Texto pelo qual filtrar a lista. Não restringe a lista de `templates`.                            |
| `--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 itens em cada página.                                                                   |

### Streams

`azion list data-stream streams` lista os streams da sua conta com as colunas `ID`, `NAME` e `ACTIVE`. `--details` acrescenta as colunas `LAST EDITOR` e `LAST MODIFIED`.

```bash
azion list data-stream streams
```

O comando imprime uma linha por stream:

```text
ID     NAME       ACTIVE
19609  my-stream  false
```

### Templates

`azion list data-stream templates` lista os templates da sua conta com as colunas `ID`, `NAME` e `ACTIVE`:

```bash
azion list data-stream templates
```

O comando imprime uma linha por template. A lista traz os cinco templates predefinidos e os templates personalizados da conta, como `my-template`, com ID `2996`. Os predefinidos são *Applications Event Collector* (`2`), *WAF Event Collector* (`4`), *Functions Event Collector* (`86`), *Applications + WAF Event Collector* (`184`) e *Activity History Collector* (`251`).

`--filter` não restringe esta lista. O comando imprime todos os templates, qualquer que seja o valor de `--filter`.

### Fontes de dados

`azion list data-stream data-sources` lista as fontes de dados das quais um stream pode coletar, com as colunas `SLUG`, `NAME` e `ACTIVE`:

```bash
azion list data-stream data-sources
```

O comando imprime uma linha por fonte de dados. As quatro fontes de dados, por slug e nome, são:

| Slug                | Nome              |
| ------------------- | ----------------- |
| `activity_history`  | Activity History  |
| `workloads`         | Workloads         |
| `functions_console` | Functions Console |
| `waf`               | WAF Events        |

O slug é o valor de `data_source` em um arquivo de stream. O Azion Console rotula `workloads` como *Applications* e `functions_console` como *Functions*.

---

## Descrever

`azion describe data-stream` recebe o subcomando `streams` ou o subcomando `templates`.

### Streams

`azion describe data-stream streams` imprime os valores de um stream:

```bash
azion describe data-stream streams [flags]
```

| Flag          | Curta | Tipo | Padrão | Descrição                 |
| ------------- | ----- | ---- | ------ | ------------------------- |
| `--stream-id` | —     | int  | —      | ID do stream a descrever. |

Este comando descreve o stream com ID `19609`:

```bash
azion describe data-stream streams --stream-id 19609
```

O comando imprime os campos `ID`, `Name`, `Last Editor`, `Modified at`, `Product Version` e `Active` do stream. Com `--format json`, ele imprime o objeto completo do stream, no formato do [arquivo de stream](#streams).

### Templates

`azion describe data-stream templates` imprime os valores de um template:

```bash
azion describe data-stream templates [flags]
```

| Flag            | Curta | Tipo | Padrão | Descrição                   |
| --------------- | ----- | ---- | ------ | --------------------------- |
| `--template-id` | —     | int  | —      | ID do template a descrever. |

Este comando descreve o template com ID `2996`:

```bash
azion describe data-stream templates --template-id 2996
```

O comando imprime os campos `ID`, `Name`, `Last Editor`, `Modified at`, `Custom`, `Active` e `Data Set` do template. Com `--format json`, ele imprime o objeto completo: `active`, `created_at`, `custom`, `data_set`, `id`, `last_editor`, `last_modified` e `name`. `data_set` é uma string JSON.

---

## Atualizar

`azion update data-stream` recebe o subcomando `streams` ou o subcomando `templates`.

### Streams

`azion update data-stream streams` altera os campos de um stream a partir de um arquivo JSON:

```bash
azion update data-stream streams [flags]
```

| Flag          | Curta | Tipo   | Padrão | Descrição                                                                                      |
| ------------- | ----- | ------ | ------ | ---------------------------------------------------------------------------------------------- |
| `--file`      | —     | string | —      | Caminho de um arquivo JSON com os campos a alterar. Use `-` para ler o JSON da entrada padrão. |
| `--stream-id` | —     | int    | —      | ID do stream a atualizar.                                                                      |

O arquivo traz apenas os campos a alterar, e os campos que ele omite mantêm os seus valores. Este arquivo, `stream-update.json`, renomeia o stream:

```json
{
  "name": "my-stream-renamed"
}
```

Passe o arquivo e o ID do stream para o comando de atualização:

```bash
azion update data-stream streams --stream-id 19609 --file stream-update.json
```

O comando imprime o ID do stream atualizado:

```text
Updated stream with ID 19609
```

Um arquivo que define `"active": true` em um stream com um item `sampling` desativa todos os outros streams da conta.

### Templates

`azion update data-stream templates` altera o nome, o data set ou o estado de um template:

```bash
azion update data-stream templates [flags]
```

| Flag            | Curta | Tipo   | Padrão | Descrição                                                                                  |
| --------------- | ----- | ------ | ------ | ------------------------------------------------------------------------------------------ |
| `--active`      | —     | string | —      | Se o template está ativo: `true` ou `false`.                                               |
| `--data-set`    | —     | string | —      | Caminho de um arquivo JSON com o novo data set. Use `-` para ler o JSON da entrada padrão. |
| `--file`        | —     | string | —      | Caminho de um arquivo JSON com os atributos a alterar.                                     |
| `--name`        | —     | string | —      | Novo nome do template.                                                                     |
| `--template-id` | —     | int    | —      | ID do template a atualizar.                                                                |

Este comando renomeia o template com ID `2996` para `my-template-renamed`:

```bash
azion update data-stream templates --template-id 2996 --name my-template-renamed
```

O comando imprime o ID do template atualizado:

```text
Updated template with ID 2996
```

---

## Excluir

`azion delete data-stream` recebe o subcomando `streams` ou o subcomando `templates`.

### Streams

`azion delete data-stream streams` exclui um stream:

```bash
azion delete data-stream streams [flags]
```

| Flag          | Curta | Tipo | Padrão | Descrição               |
| ------------- | ----- | ---- | ------ | ----------------------- |
| `--stream-id` | —     | int  | —      | ID do stream a excluir. |

Este comando exclui o stream com ID `19609`:

```bash
azion delete data-stream streams --stream-id 19609 -y
```

O comando confirma a exclusão:

```text
Stream 19609 was successfully deleted
```

### Templates

`azion delete data-stream templates` exclui um template personalizado:

```bash
azion delete data-stream templates [flags]
```

| Flag            | Curta | Tipo | Padrão | Descrição                 |
| --------------- | ----- | ---- | ------ | ------------------------- |
| `--template-id` | —     | int  | —      | ID do template a excluir. |

Este comando exclui o template com ID `2996`:

```bash
azion delete data-stream templates --template-id 2996 -y
```

O comando confirma a exclusão:

```text
Template 2996 was successfully deleted
```

Um template que um stream usa não pode ser excluído. O comando falha, e o erro traz a causa `["Cannot delete a template with associated data streams."]`. Para excluir o template, primeiro exclua os streams que o usam ou atualize-os para usar outro template.

---

## Recursos relacionados

- [Opções globais](/pt-br/documentacao/devtools/cli/globals.md): As opções que todo comando aceita, como `--format`, `--out` e `-y`.
- [Configurações do stream](/pt-br/documentacao/plataforma/data-stream/configuracoes-do-stream.md): Cada campo do objeto do stream, os valores que ele aceita e os erros que a API retorna.
- [Templates e payload](/pt-br/documentacao/plataforma/data-stream/templates-e-payload.md): As variáveis de cada template predefinido e o formato de um data set personalizado.
- [Como o Data Stream funciona](/pt-br/documentacao/plataforma/data-stream/como-funciona.md): O caminho que um evento percorre da fonte de dados até o endpoint.
