# Azion CLI create

Com o comando `azion create [recurso]` você pode criar:

- [Applications](#applications).
- [Functions](#functions).
- [Rules engine](#rules-engine).
- [Cache settings](#cache-settings).
- [Firewall](#firewall).
- [Firewall instance](#firewall-instance).
- [Firewall rule](#firewall-rule).
- [WAF](#waf).
- [WAF exceptions](#waf-exceptions).
- [Network list](#network-list).
- [Workloads](#workloads).
- [Workload deployment](#workload-deployment).
- [Connectors](#connectors).
- [Variables](#variables).
- [Personal tokens](#personal-tokens).
- [Profile](#profile).
- [Object Storage bucket](#objectstorage-bucket).
- [Object Storage object](#object-storage-object).


:::note
No caso de um ou mais campos obrigatórios não serem informados através das flags específicas, uma mensagem interativa será exibida, solicitando essas informações.
:::

---

## Applications

#### Uso

```bash
azion create edge-application --name "naruno"
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome da application que está sendo criada. É obrigatória se a flag `--file` não for usada.

#### Flags opcionais

##### address

A opção `--address` especifica o endereço do servidor de origem.

##### browser-cache-settings

A opção `--browser-cache-settings` configura a quantidade de tempo que o conteúdo é armazenado em cache no navegador do usuário. Os valores possíveis são `honor` ou `override`.

##### browser-cache-settings-maximum-ttl

A opção `--browser-cache-settings-maximum-ttl` define o tempo máximo de vida (TTL, time to live) dos recursos em cache no navegador. Ela estabelece um limite para quanto tempo os recursos podem ser armazenados em cache no navegador, em segundos.

##### cdn-cache-settings

A opção `--cdn-cache-settings` configura como a Azion armazena em cache o conteúdo no edge. Os valores possíveis são `honor` ou `override`.

##### cdn-cache-settings-maximum-ttl

A opção `--cdn-cache-settings-maximum-ttl` define o tempo máximo de vida (TTL, time to live) dos recursos em cache no edge. Ela estabelece um limite para quanto tempo os recursos podem ser armazenados em cache nos edge nodes, em segundos.

##### delivery-protocol

A opção `--delivery-protocol` especifica se os dados devem ser entregues via HTTP ou HTTPS.

##### host-header

A opção `--host-header` permite a personalização do cabeçalho `Host`.

##### http-port

A flag `--http-port` especifica a porta de entrega HTTP da application. O valor padrão é `80`.

##### https-port

A flag `--https-port` especifica a porta de entrega HTTPS da application. O valor padrão é `443`.

##### http3

A opção `--http3` permite a entrega em HTTP/3.

##### file

A opção `--file` especifica o caminho para um arquivo JSON que contém os atributos da application sendo criada. O caminho também pode ser lido a partir do stdin usando `-`.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json 
{
    "name": "borus",
    "delivery_protocol": "http",
    "origin_type": "single_origin",
    "address": "www.new.api",
    "origin_protocol_policy": "preserve",
    "host_header": "www.new.api",
    "browser_cache_settings": "override",
    "browser_cache_settings_maximum_ttl": 20,
    "cdn_cache_settings": "honor",
    "cdn_cache_settings_maximum_ttl": 60
}

```

##### origin-protocol-policy

A opção `--origin-protocol-policy` especifica o tipo de conexão entre os edge nodes e a origem. Os valores possíveis são `preserve`, `http` ou `https`.

##### origin-type

A opção `--origin-type` especifica o tipo de origem. Os valores possíveis são `single_origin` (valor padrão), `load_balancer` ou `live_ingest`.

##### supported-ciphers

A opção `--supported-ciphers` determina quais algoritmos criptográficos serão usados nas conexões TLS da sua application.

##### websocket

A opção `--websocket` permite estabelecer o protocolo de comunicação WebSocket entre a origem e os usuários sob a arquitetura de proxy reverso.

##### debug-rules

A opção `--debug-rules` permite verificar se as regras ou conjuntos de regras criados usando o módulo Rules Engine para Applications ou Firewall foram executados com sucesso na sua aplicação.

---

## Functions

#### Uso

```bash
azion create edge-function --name "<nome_da_funcao>" --code "<caminho_para_o_codigo>" --active <true | false> 
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome da function sendo criada.

##### code

A flag `--code` define o caminho para o código da function.

##### active

A flag `--active` especifica se a function está ativa ou não. Aceita `true` ou `false`.

#### Flags opcionais

##### args

A flag `--args` define o caminho para o arquivo JSON de argumentos da function.

##### file

A flag `--file` especifica o caminho do arquivo com os atributos da function. Você pode usar `-` para ler do stdin.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
  "active": true,
  "code": "async function handleRequest(request) {\n return new Response(\"Hello!\",\n   {\n       status:204\n   })\n}\naddEventListener(\"fetch\", event =\u003e {\n event.respondWith(handleRequest(event.request))\n})",
  "name": "func"
}
```

##### help

A opção `--help` exibe mais informações sobre o comando `azion create edge-function`.

---

## Rules engine

#### Uso

```bash
 azion create rules-engine --application-id 1679423488 --phase "response" --file `./file.json`
```

#### Flags obrigatórias

##### application-id

A flag `--application-id` define o identificador único de uma application.

##### phase

A flag `--phase` especifica a fase da regra. Pode ser `request` ou `response`.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON que contém os atributos da regra que será criada. Você pode usar `-` para ler a partir da entrada padrão.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json 
{
    "name": "New Rule 534322",
    "description": "This is a very basic rule engine description",
    "criteria": [
        [
            {
                "conditional": "if",
                "variable": "{uri}",
                "operator": "starts_with",
                "input_value": "/"
            }
        ]
    ],
    "behaviors": [
        {
            "name": "deliver",
            "target": "io"
        }
    ]
}
```

##### help

A flag `--help` exibe mais informações sobre a ação `azion create rules-engine`.

---

## Cache settings

#### Uso

```bash
$ azion create cache-setting --application-id 1673635839 --name "phototypesetting"
```

#### Flags obrigatórias

##### application-id

A flag `--application-id` define o identificador único para a application.

##### name

A flag `--name` define o nome da configuração de cache que está sendo criada.

#### Flags opcionais

##### adaptive-delivery-action

A opção `--adaptive-delivery-action` informa a ativação da entrega adaptativa por device group da configuração de cache. O valor padrão é `ignore`.

##### browser-cache-settings

A opção `--browser-cache-settings` configura o tempo que o conteúdo é armazenado em cache no navegador de usuários. O valor padrão é `honor`.

##### browser-cache-settings-maximum-ttl

A opção `--browser-cache-settings-maximum-ttl` informa o TTL máximo do cache no navegador.

##### cache-by-cookies

A opção `--cache-by-cookies` define se o conteúdo deve ser armazenado em cache de acordo com variações por cookies. O valor padrão é `ignore`.

##### cache-by-query-string

A opção `--cache-by-query-string` define como o conteúdo deve ser armazenado em cache de acordo com variações da query string em URLs. O valor padrão é `ignore`.

##### cdn-cache-settings

A opção `--cdn-cache-settings` configura o tempo que as applications da Azion armazenam seu conteúdo em cache. Pode respeitar ou substituir os cabeçalhos de cache da origem. O valor padrão é `honor`.

##### cnd-cache-settings-maximum-ttl

A opção `--cnd-cache-settings-maximum-ttl` informa o TTL máximo do cache no edge. O valor padrão é `60`.

##### cookie-names

A opção `--cookie-names` distingue objetos no cache da Azion pelo nome/valor dos cookies.

##### enable-caching-for-options

A opção `--enable-caching-for-options` define se o cache de método `OPTIONS` está ativo. O valor padrão é `false`.

##### enable-caching-for-post

A opção `--enable-caching-for-post` define se o cache para de método `POST` está ativo.

##### enable-caching-string-sort

A opção `--enable-caching-string-sort` define se a ordenação de query strings determina a diferença de objetos em cache.

##### file

A opção `--file` especifica o caminho para um arquivo JSON contendo os atributos da configuração de cache que será criada. Você pode usar `-` para ler a partir do stdin.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
  "name": "thename",
  "browser_cache_settings": "honor",
  "browser_cache_settings_maximum_ttl": 0,
  "cdn_cache_settings": "honor",
  "cdn_cache_settings_maximum_ttl": 60,
  "cache_by_query_string": "ignore",
  "query_string_fields": ["aa"],
  "enable_query_string_sort": true,
  "cache_by_cookies": "ignore",
  "cookie_names": ["aa"],
  "adaptive_delivery_action": "ignore",
  "device_group": [],
  "enable_caching_for_post": true,
  "l2_caching_enabled": false,
  "is_slice_configuration_enabled": false,
  "is_slice_edge_caching_enabled": false,
  "is_slice_l2_caching_enabled": false,
  "slice_configuration_range": null,
  "enable_caching_for_options": true,
  "enable_stale_cache": true,
  "l2_region": null
}
```

##### help

A opção `--help` exibe mais informações sobre o comando `azion create cache-setting`.

##### l2-caching-enabled

A opção `--l2-caching-enabled` define se o Tiered Cache está ativo.

##### query-string-fields

A opção `--query-string-fields` distingue objetos no cache da Azion pelo nome/valor de query strings.

##### slice-configuration-enabled

A opção `--slice-configuration-enabled` define se a configuração de Large File Optimization está ativa.

##### slice-configuration-range

A opção `--slice-configuration-range` informa o tamanho de cada fragmento do arquivo.

##### slice-l2-caching-enabled

A opção `--slice-l2-caching-enabled` define se Large File Optimization está ativo para o Tiered Cache.

---

## Firewall

Cria um Firewall.

#### Uso

```bash
azion create firewall --name "<nome-do-firewall>"
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome do firewall que está sendo criado.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos do firewall que será criado. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create firewall`.

---

## Firewall instance

Cria uma nova instância de função de Firewall.

#### Uso

```bash
azion create firewall-instance --firewall-id <firewall-id> --name "<nome-da-instancia>"
```

#### Flags obrigatórias

##### firewall-id

A flag `--firewall-id` define o identificador único do firewall.

##### name

A flag `--name` define o nome da instância de firewall que está sendo criada.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos da instância de firewall. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create firewall-instance`.

---

## Firewall rule

Cria uma nova regra de Firewall.

#### Uso

```bash
azion create firewall-rule --firewall-id <firewall-id> --file "./regra.json"
```

#### Flags obrigatórias

##### firewall-id

A flag `--firewall-id` define o identificador único do firewall.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos da regra de firewall. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create firewall-rule`.

---

## WAF

Cria um WAF (Web Application Firewall).

#### Uso

```bash
azion create waf --name "<nome-do-waf>"
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome do WAF que está sendo criado.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos do WAF. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create waf`.

---

## WAF exceptions

Cria uma nova exceção de WAF.

#### Uso

```bash
azion create waf-exceptions --waf-id <waf-id> --file "./excecao.json"
```

#### Flags obrigatórias

##### waf-id

A flag `--waf-id` define o identificador único do WAF.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos da exceção de WAF. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create waf-exceptions`.

---

## Network list

Cria uma lista de rede (Network List).

#### Uso

```bash
azion create network-list --name "<nome-da-lista>"
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome da lista de rede que está sendo criada.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos da lista de rede. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create network-list`.

---

## Workloads

Cria um domínio.

#### Uso

```bash
azion create domain --application-id 1231 --name "nomeDoDomínio"
```

#### Flags obrigatórias

##### application-id

A flag `--application-id` define o identificador único da application.

##### name

A flag `--name` define o nome do domínio.

#### Flags opcionais

##### active

A opção `--active` especifica se o domínio está ativo. O valor padrão é `true`.

##### cname-access-only

A opção `--cname-access-only` especifica se o domínio só pode ser acessado por meio de CNAMEs. O valor padrão é `false`.

##### cnames

A opção `--cnames` é uma lista de CNAMEs de domínios para associar ao domínio.

##### digital-certificate-id

A opção `--digital-certificate-id` define o identificador único do certificado digital. Pode ser um *número inteiro*, *nulo* ou a string `lets_encrypt`. Se `lets_encrypt` for informada, então um certificado Let's Encrypt será criado para você.

##### help

A opção `--help` exibe mais informações sobre a ação `azion create domain`.

##### file

A opção `--file` especifica um caminho para um arquivo JSON contendo os atributos que serão atualizados. Você pode usar `-` para ler a partir da entrada padrão.

Exemplo dos atributos dentro de um arquivo `JSON`:

```json
{
    "cnames": [],
    "name": "one",
    "edge_application_id": 1234635841,
    "cname_access_only": false,
    "is_active": false
}
```

---

## Workload deployment

Cria um novo deployment de Workload.

#### Uso

```bash
azion create workload-deployment --workload-id <workload-id>
```

#### Flags obrigatórias

##### workload-id

A flag `--workload-id` define o identificador único do workload.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos do deployment de workload. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create workload-deployment`.

---

## Connectors

#### Uso

```bash
$ azion create origin --application-id <application-id> --name "<origin-name>" --addresses "<comma-separated-addresses>"
```

#### Flags obrigatórias

##### application-id

A flag `--application-id` define o identificador único para a application na qual a origem será criada.

##### name

A flag `--name` define o nome da origem que está sendo criada.

##### addresses

A flag `--addresses` passa uma lista de endereços vinculados à origem. Múltiplos endereços devem ser separados por vírgulas.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos da origem que será criada. Você pode usar `-` para ler a partir do stdin.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
 "name": "Create Or22i21231222n2",
 "addresses": [
  {
   "address": "httpbin.org"
  }
 ],
 "host_header": "asdf.asdfom"
}
```

##### hmac-access-key

A flag `--hmac-access-key` informa a chave de acesso HMAC.

##### hmac-authentication

A flag `--hmac-authentication` especifica se a autenticação HMAC é usada ou não.

##### hmac-region-name

A flag `--hmac-region-name` informa o nome da região HMAC.

##### hmac-secret-key

A flag `--hmac-secret-key` informa a chave secreta HMAC.

##### host-header

A flag `--host-header` especifica o valor do cabeçalho `Host` do servidor sendo acessado.

##### origin-path

A flag `--origin-path` define o caminho a ser anexado à URI ao encaminhar a solicitação para a origem. Deixe em branco para usar apenas a URI.

##### origin-protocol-policy

A flag `--origin-protocol-policy` informa a política de protocolo usada da conexão entre a Azion e a origem.

##### origin-type

A flag `--origin-type` identifica o tipo da origem. Valores: 

- `single_origin` (padrão)
- `load_balancer`
- `live_ingest`
- `object_storage`

#### bucket

A flag `--bucket` informa o nome do bucket do Object Storage. **Obrigatório quando origin-type é igual a `object_storage`**.

#### prefix 

A flag `--bucket` informa o caminho ou localização dentro do bucket de onde o conteúdo deve ser recuperado. **Opcional e usado apenas quando origin-type for igual a `object_storage`**.
#### help

A opção `-h` ou `--help` exibe mais informações sobre a ação `azion create origin`.

---


## Variables

#### Uso

```bash
  azion create variables --key "Content-Type" --value "string" --secret false
```

#### Flags obrigatórias caso a flag --file não seja informada

##### key

A flag `--key` fornece a chave da variável.

##### value

A flag `--value` fornece o valor da variável.

##### secret

A flag `--secret` indica se o valor deve ser confidencial. O valor padrão é `true`.

:::note
Variáveis com nomes contendo as seguintes substrings serão enviadas como **secrets** para o ambiente da Azion por padrão:

  - password
  - pwd
  - secret
  - key
  - hash
  - encrypted
  - passoce
  - auth
  - token
  - secret
:::

#### Flags opcionais

##### file

A opção `--file` informa o caminho do arquivo que contém todos os atributos da variável que está sendo criada. Você pode usar `-` para ler a partir de stdin.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
    "name": "my token",
    "expires_at": "9m"
}
```

##### help

A opção `--help` exibe mais informações sobre o comando `azion create variables`.

---


## Personal tokens

#### Uso

```sh
azion create personal-token  --name "novoToken" --expiration "9m" 
```

#### Flags opcionais

##### file 

A opção `--file` informa o caminho do arquivo JSON que contém todos os atributos do personal token que está sendo criado.

**Exemplo**

```json
{
    "name": "Token",
    "expires_at": "9m"
}
```

##### help

A opção `--help` exibe mais informações sobre o subcomando `create`.

#### Flags obrigatórias quando --file não é informado

##### description 

A opção `--description` informa a descrição do personal token.

##### expiration 

A opção `--expiration` informa a data de expiração do personal token.

##### name

A opção `--name` informa o nome do personal token.

---

## Profile

Cria um novo perfil para o Azion CLI.

#### Uso

```bash
azion create profile --name "<nome-do-perfil>"
```

#### Flags obrigatórias

##### name

A flag `--name` define o nome do perfil que está sendo criado.

#### Flags opcionais

##### file

A flag `--file` especifica o caminho para um arquivo JSON contendo os atributos do perfil. Você pode usar `-` para ler a partir do stdin.

##### help

A flag `--help` exibe mais informações sobre o comando `azion create profile`.

---

## Object Storage bucket

#### Uso

```bash
azion create edge-storage bucket --name "zorosola" --edge-access 'read_only'
```

#### Flags obrigatórias

##### edge access

A opção `--edge-access` indica o tipo de permissão para ações dentro do bucket. Os valores possíveis incluem `read_only`, `read_write` ou `restricted`.

##### name 

A opção `--name` define o nome do bucket do Object Storage.

#### Opções opcionais

##### file

A opção `--file` especifica o caminho para um arquivo JSON contendo os atributos do bucket que será criado. Alternativamente, você pode usar '-' para ler da entrada padrão.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
	"name": "arthur-morgan",
	"edge_access": "read_only"
}
```

##### help

A opção `--help` exibe mais informações sobre o comando 'create edge-storage bucket'.

---

## Object Storage object 

#### Uso

```bash
azion create edge-storage object --bucket-name 'mynewbucket' --object-key 'path/to/my/remote/file.txt' --source './local/file.txt'
```

#### Flags obrigatórias

##### bucket-name

A flag `--bucket-name` define o nome do bucket do Object Storage onde o objeto será armazenado.

##### object-key

A flag `--object-key` define a chave do objeto a ser armazenado no bucket. Também pode ser usado para indicar um caminho completo do arquivo (como 'path/to/mys/file/bucket/file.txt').

##### source

A flag `--source` define o caminho para o arquivo local que será carregado para o bucket. O caminho deve ser absoluto.

#### Flags opcionais  

##### file

A opção `--file` permite que você especifique um caminho para um arquivo JSON contendo os atributos dos objetos a serem criados. Você pode usar `-` para ler a partir do stdin.

Exemplo dos atributos dentro de um arquivo `JSON`: 

```json
{
  "bucket-name": "nomedobucket",
  "object-key": "key",
  "source": "fixtures/index.html"
}
```

##### help

A opção `-h` ou `--help` exibe informações mais detalhadas sobre o comando `azion create edge-storage object`.