---
name: azion-envie-logs-para-o-amazon-s3
description: >-
  Crie um stream que grava os logs das suas aplicações como objetos em um bucket do Amazon S3, no Azion Console ou com a Azion API, e confirme a entrega.
---

# Envie logs para o Amazon S3

Você pode enviar os logs de um stream para um bucket do [Amazon S3](https://aws.amazon.com/s3/) pelo Azion Console ou com a Azion API. Para enviá-los a um bucket do Azion Object Storage, cuja credencial precisa de outras capacidades, consulte [Envie dados do Data Stream para o Object Storage](/pt-br/documentacao/guias/plataforma/observabilidade/conector-azion-object-storage/).

[Data Stream](/pt-br/documentacao/plataforma/data-stream/) grava cada lote de linhas de log como um objeto no bucket. No formulário do stream, o endpoint é definido no campo **Connector**, e o Amazon S3 é a opção *Simple Storage Service (S3)* desse campo. Para ver todos os campos e os limites deles, consulte [Endpoints](/pt-br/documentacao/plataforma/data-stream/endpoints/#simple-storage-service-s3).

O exemplo coleta as requisições de um workload com a fonte de dados *Applications*.

---

Selecione a interface uma vez. Os pré-requisitos e todas as tarefas abaixo mostram só esse caminho.

## Pré-requisitos

- Uma conta Azion com a permissão **Edit Data Stream**. Para ver as permissões, consulte [Configurações do stream](/pt-br/documentacao/plataforma/data-stream/configuracoes-do-stream/#permissoes).
- Um [workload](/pt-br/documentacao/plataforma/workloads/) na conta que recebe requisições.
- Um bucket do Amazon S3. O bucket precisa existir antes de o stream enviar dados para ele. Ele pode usar criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).
- O código da região do bucket, como `us-east-1`.
- Uma credencial do AWS Identity and Access Management (IAM) com um access key ID e uma secret access key. A credencial precisa da permissão `s3:ListBucket`, para listar os objetos do bucket, e da permissão `s3:PutObject`, para gravar objetos nele.

**Console**

- Acesso ao Azion Console. Para entrar, consulte [Acessar Azion Console](/pt-br/documentacao/guias/plataforma/conta-e-billing/como-acessar-o-azion-console/).

**API**

- Um personal token. Para criar um, consulte [Gerenciar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- O ID do workload.
- `curl`.

---

## Crie o stream

O stream coleta do workload que você escolher, por meio de um filtro de workloads. Ao contrário do sampling, um filtro de workloads mantém seus outros streams ativos.

**Console**

Para criar o stream no Azion Console:

1. **Abra o Data Stream**

   Acesse [Azion Console](https://console.azion.com/) > **Data Stream**.

2. **Selecione + Stream**

3. **Dê um nome ao stream**

   Na seção **General**, informe um **Name**. Por exemplo: `logs-to-s3`.

4. **Selecione a fonte de dados**

   Na seção **Input**, selecione *Applications* em **Data Source**.

5. **Desative o Sampling**

   Na seção **Transform**, desative **Sampling** enquanto **Option** ainda estiver em *All Current and Future Workloads*, o valor inicial. Um stream não pode ter sampling e filtro de workloads ao mesmo tempo.

6. **Escolha o workload**

   Na seção **Transform**, defina **Option** como *Filter Workloads*. Em **Available Workload**, selecione seu workload e mova-o para **Chosen Workload** com a seta.

7. **Selecione o template**

   Na seção **Render Template**, selecione *Applications Event Collector* em **Template**.

8. **Selecione o endpoint S3**

   Na seção **Output**, selecione *Simple Storage Service (S3)* em **Connector**.

9. **Informe a localização do bucket**

   Informe o host S3 da região do bucket em **URL**, como `https://s3.us-east-1.amazonaws.com`. Informe o nome do bucket em **Bucket Name** e o código da região dele em **Region**.

10. **Informe a credencial**

    Informe o access key ID em **Access Key** e a secret access key em **Secret Key**. O Console mascara os dois campos.

11. **(Opcional) Informe o prefixo do objeto**

    Em **Object Key Prefix**, informe o início do nome de cada objeto. Por exemplo: `azion/logs`.

12. **Selecione o tipo de conteúdo**

    Em **Content Type**, selecione *plain/text* ou *application/gzip*. Com *plain/text*, cada objeto traz uma linha de log por linha.

13. **Mantenha o stream ativo**

    Na seção **Status**, mantenha **Active** ativado.

14. **Selecione Save**

O Console mostra `Your data stream has been created`. O stream aparece na lista do **Data Stream** com `Amazon S3` na coluna **Connector** e o status **Active**.

**API**

Para criar o stream com a API, envie uma requisição `POST` para `https://api.azion.com/v4/workspace/stream/streams`. Substitua `[TOKEN VALUE]` pelo seu personal token, `<workload-id>` pelo ID do seu workload e os valores do bucket pelos seus:

```bash
curl -X POST 'https://api.azion.com/v4/workspace/stream/streams' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{
    "name": "logs-to-s3",
    "active": true,
    "inputs": [
      { "type": "raw_logs", "attributes": { "data_source": "workloads" } }
    ],
    "transform": [
      { "type": "filter_workloads", "attributes": { "workloads": [<workload-id>] } },
      { "type": "render_template", "attributes": { "template": 2 } }
    ],
    "outputs": [
      {
        "type": "s3",
        "attributes": {
          "host_url": "https://s3.us-east-1.amazonaws.com",
          "bucket_name": "<your-bucket>",
          "region": "us-east-1",
          "access_key": "[ACCESS KEY]",
          "secret_key": "[SECRET KEY]",
          "object_key_prefix": "azion/logs",
          "content_type": "application/gzip"
        }
      }
    ]
  }'
```

A fonte de dados `workloads` é *Applications* no Console, e o template `2` é *Applications Event Collector*. A API responde `201` com o stream armazenado:

```json
{
  "state": "executed",
  "data": {
    "id": 12349,
    "name": "logs-to-s3",
    "last_editor": "user@example.com",
    "created": "2026-01-01T12:10:26.000000Z",
    "last_modified": "2026-01-01T12:10:26.000000Z",
    "product_version": "1.0",
    …
    "outputs": [
      {
        "type": "s3",
        "attributes": {
          "access_key": "[ACCESS KEY]",
          "secret_key": "[SECRET KEY]",
          "region": "us-east-1",
          "object_key_prefix": "azion/logs",
          "bucket_name": "<your-bucket>",
          "content_type": "application/gzip",
          "host_url": "https://s3.us-east-1.amazonaws.com"
        }
      }
    ]
  }
}
```

Guarde o `id`: ele identifica o stream em todas as requisições seguintes, como `/v4/workspace/stream/streams/12349`. Para ver todas as chaves do corpo, consulte [Configurações do stream](/pt-br/documentacao/plataforma/data-stream/configuracoes-do-stream/#objeto-do-stream).

A API e o Console salvam o stream sem contatar o bucket. Uma URL, uma região ou uma credencial errada só aparece quando o stream envia. Uma ativação entra em vigor depois de um a dois minutos.

---

## Confirme a entrega

[Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/fontes-de-dados/#data-stream) registra todos os envios de um stream, entregues ou não, com o status code que o endpoint retornou. Envie algumas requisições ao workload e espere cerca de um minuto: um stream envia um lote a cada 60 segundos, ou antes, quando chega a 2.000 linhas de log.

**Console**

Para encontrar os envios no Azion Console:

1. **Abra o Real-Time Events**

   Acesse [Azion Console](https://console.azion.com/) > **Real-Time Events**.

2. **Selecione a fonte de dados Data Stream**

3. **Leia os envios mais recentes**

   Cada linha é um envio. Encontre as linhas com `S3` em **Endpoint Type** e leia o **Status Code** delas.

Um **Status Code** `200` significa que o bucket aceitou o lote. **Streamed Lines** mostra o número de linhas de log do lote.

**API**

Para ler os envios com a API, consulte o dataset `dataStreamedEvents` da API GraphQL do Real-Time Events. Substitua as datas por um intervalo que cubra a ativação do stream:

```bash
curl -X POST 'https://api.azion.com/v4/events/graphql' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token [TOKEN VALUE]' \
  -d '{"query":"query { dataStreamedEvents(limit: 20, filter: {tsRange: {begin: \"2026-01-01T12:00:00\", end: \"2026-01-01T12:45:00\"}}, orderBy: [ts_DESC]) { ts endpointType statusCode streamedLines dataStreamed } }"}'
```

A API responde `200` com um registro para cada envio, do mais recente para o mais antigo:

```json
{
  "data": {
    "dataStreamedEvents": [
      {
        "ts": "2026-01-01T12:02:04Z",
        "endpointType": "S3",
        "statusCode": 200,
        "streamedLines": 2,
        "dataStreamed": 2797
      }
    ]
  }
}
```

Um `statusCode` `200` significa que o bucket aceitou o lote, e `streamedLines` e `dataStreamed` dão o tamanho dele em linhas de log e em bytes. Uma lista `dataStreamedEvents` vazia significa que o stream não enviou nada no intervalo. Para ver todos os campos, consulte [Campos da API GraphQL do Real-Time Events](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-events/#datastreamedevents-data-stream).

Um status diferente de `200` é a resposta do endpoint, e `503` significa que Data Stream encontrou o endpoint indisponível. Para ver as causas, consulte [Solucionar problemas de Data Stream](/pt-br/documentacao/plataforma/data-stream/solucao-de-problemas/).

No bucket, o nome de cada objeto é o **Object Key Prefix**, uma `/`, a data e a hora do envio no formato `YYYY/MM/DD/hh/mm/` e um UUID. Com o prefixo `azion/logs`, o nome de um objeto começa com um caminho como `azion/logs/2026/01/01/12/02/`, seguido do UUID.

---

## Próximos passos

- [Endpoints](/pt-br/documentacao/plataforma/data-stream/endpoints.md#simple-storage-service-s3): Todos os campos do endpoint S3, com tipo, limites e nome na API.
- [Envie dados do Data Stream para o Object Storage](/pt-br/documentacao/guias/plataforma/observabilidade/conector-azion-object-storage.md): Envie os logs para um bucket do Azion Object Storage pelo mesmo endpoint S3.
- [Edite, pare ou exclua um stream](/pt-br/documentacao/guias/plataforma/observabilidade/deletar-data-stream.md): Altere o bucket ou a credencial, pause o stream ou exclua-o.
- [Solucionar problemas de Data Stream](/pt-br/documentacao/plataforma/data-stream/solucao-de-problemas.md): Descubra o que alterar quando um envio retorna um status diferente de 200.
