

# Consulta de logs de acesso nas Tabelas do S3
<a name="sal-cw-querying-s3tables"></a>

Quando você habilita a integração das Tabelas do Amazon S3, o Amazon CloudWatch Logs entrega seus logs de acesso ao servidor no formato Apache Iceberg para o bucket de tabelas gerenciado `aws-cloudwatch`. Como os dados estão no formato do Iceberg, você pode consultá-los com qualquer ferramenta compatível com o Apache Iceberg, incluindo:
+ **Amazon Athena**: execute consultas SQL diretamente do console do Athena usando o catálogo de Tabelas do S3.
+ **Estúdio Unificado Amazon SageMaker**: use o editor SQL integrado para consultar seus dados de log junto com outros workloads de análise.
+ **Amazon Redshift**: consulte tabelas do Iceberg por meio do Redshift Spectrum ou da integração direta.
+ **Apache Spark no Amazon EMR**: use o Spark SQL ou a API DataFrame com o conector do Iceberg.
+ **Ferramentas de código aberto**: qualquer ferramenta que ofereça suporte ao catálogo REST do Apache Iceberg, como Trino, DuckDB ou PyIceberg.

**nota**  
Para consultar logs interativamente no CloudWatch Logs Insights (sem SQL), consulte [Consulta de logs com o CloudWatch Logs Insights](sal-cw-querying-insights.md).

## Pré-requisitos
<a name="sal-cw-s3tables-prerequisites"></a>

Antes de consultar logs de acesso nas Tabelas do S3, é necessário concluir as etapas a seguir:

1. **Habilite a integração das Tabelas do S3.** Consulte [Como habilitar a integração das Tabelas do S3 (opcional)](sal-cw-enabling.md#sal-cw-tables-integration).

1. **Habilite a integração das Tabelas do S3 com serviços de analytics.** No console do Amazon S3, navegue até **Buckets de tabela** e escolha **Habilitar integração**. Isso cria o catálogo federado `s3tablescatalog` no Catálogo de Dados e torna suas tabelas visíveis para os serviços de análise. Por padrão, o acesso é controlado por meio de permissões do IAM. Se desejar, você pode usar AWS Lake Formation para controle de acesso refinado. Para obter mais informações, consulte [Integração das Tabelas do Amazon S3 Tables aos serviços de análise da AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html).

1. **Aguarde até que os dados sejam preenchidos.** Os dados geralmente aparecem em até uma hora após a primeira entrega ao CloudWatch Logs.

## Conexão ao Amazon Athena
<a name="sal-cw-s3tables-athena-setup"></a>

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. No editor de consultas, selecione o catálogo de **Tabelas do Amazon S3** no menu suspenso da fonte de dados.

1. Suas tabelas de log aparecem na lista de bancos de dados no namespace `logs`.

O nome da tabela para os logs de acesso ao servidor é `amazon_s3__server_access`. A referência de tabela totalmente qualificada é:

```
"s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
```

## Análise de tráfego
<a name="sal-cw-s3tables-traffic"></a>

**Example Volume de solicitações ao longo do tempo**  

```
SELECT date_trunc('minute', request_time) AS interval,
  COUNT(*) AS requests
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY date_trunc('minute', request_time)
ORDER BY interval ASC;
```

**Example Mistura de solicitações por tipo de operação**  

```
SELECT operation, COUNT(*) AS cnt
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY operation
ORDER BY cnt DESC;
```

**Example Tráfego por bucket**  

```
SELECT bucket_arn, COUNT(*) AS requests, SUM(bytes_sent_size) AS bytes_out
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY bucket_arn
ORDER BY requests DESC;
```

## Solução de erros
<a name="sal-cw-s3tables-errors"></a>

**Example Detalhamento da taxa de erros**  

```
SELECT http_status, error_code, operation, COUNT(*) AS error_count
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE http_status >= 400
GROUP BY http_status, error_code, operation
ORDER BY error_count DESC;
```

**Example Solicitações de 403 Acesso negado**  

```
SELECT key_name, remote_ip, requester, COUNT(*) AS denied_count
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE http_status = 403
GROUP BY key_name, remote_ip, requester
ORDER BY denied_count DESC;
```

**Example Solicitações de 404 Não encontrado**  

```
SELECT key_name, error_code, remote_ip, COUNT(*) AS miss_count
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE http_status = 404
GROUP BY key_name, error_code, remote_ip
ORDER BY miss_count DESC;
```

**Example Eventos 503 Lentidão (controle de utilização)**  

```
SELECT key_name, remote_ip, COUNT(*) AS throttle_count
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE http_status = 503
GROUP BY key_name, remote_ip
ORDER BY throttle_count DESC;
```

## Padrões de acesso
<a name="sal-cw-s3tables-access"></a>

**Example Tráfego por IP de origem**  

```
SELECT remote_ip,
  COUNT(*) AS total_requests,
  SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) AS errors,
  SUM(bytes_sent_size) AS bytes_transferred
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY remote_ip
ORDER BY total_requests DESC;
```

**Example Operações por solicitante**  

```
SELECT requester, operation, COUNT(*) AS requests
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY requester, operation
ORDER BY requests DESC;
```

**Example Chaves mais acessadas**  

```
SELECT key_name, COUNT(*) AS access_count, SUM(bytes_sent_size) AS bytes_out
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT')
GROUP BY key_name
ORDER BY access_count DESC
LIMIT 10;
```

## Análise de latência
<a name="sal-cw-s3tables-latency"></a>

**Example Latência por tipo de operação**  

```
SELECT operation,
  AVG(total_duration) AS avg_ms,
  APPROX_PERCENTILE(total_duration, 0.5) AS p50_ms,
  APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms,
  MAX(total_duration) AS max_ms,
  COUNT(*) AS requests
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT')
GROUP BY operation;
```

**Example Teclas mais lentas por latência de p95**  

```
SELECT key_name,
  AVG(total_duration) AS avg_ms,
  APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms,
  COUNT(*) AS requests
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation = 'REST.GET.OBJECT'
GROUP BY key_name
ORDER BY p95_ms DESC
LIMIT 10;
```

**Example Latência ao longo do tempo**  

```
SELECT date_trunc('minute', request_time) AS interval,
  AVG(total_duration) AS avg_ms,
  APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT')
GROUP BY date_trunc('minute', request_time)
ORDER BY interval ASC;
```

## Atribuição de custos
<a name="sal-cw-s3tables-cost"></a>

**Example Transferência de dados por operação**  

```
SELECT operation,
  SUM(bytes_sent_size) AS total_bytes_out,
  SUM(object_size) AS total_object_bytes,
  COUNT(*) AS request_count
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT', 'REST.DELETE.OBJECT')
GROUP BY operation
ORDER BY total_bytes_out DESC;
```

**Example Maiores objetos veiculados**  

```
SELECT key_name, MAX(object_size) AS max_size, AVG(object_size) AS avg_size, COUNT(*) AS reads
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE operation = 'REST.GET.OBJECT' AND bytes_sent_size > 0
GROUP BY key_name
ORDER BY max_size DESC
LIMIT 10;
```

## Análise de segurança
<a name="sal-cw-s3tables-security"></a>

**Example IPs com altas taxas de erros**  

```
SELECT remote_ip,
  COUNT(*) AS total,
  SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) AS errors
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY remote_ip
HAVING SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) > 10
ORDER BY errors DESC;
```

**Example Tentativas de acesso com falha por chave**  

```
SELECT remote_ip, key_name, operation, http_status, COUNT(*) AS attempts
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
WHERE http_status >= 400
GROUP BY remote_ip, key_name, operation, http_status
ORDER BY attempts DESC
LIMIT 20;
```

**Example Distribuição da versão TLS**  

```
SELECT tls_version, COUNT(*) AS cnt
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY tls_version
ORDER BY cnt DESC;
```

## Uso de agentes de IA para consultar logs de acesso ao servidor do Amazon S3
<a name="sal-cw-s3tables-ai-agents"></a>

Os agentes de IA compatíveis com MCP podem descobrir as tabelas do S3 que contêm seus logs de acesso ao servidor do Amazon S3, gerar consultas SQL e analisar os resultados. Como seus logs de acesso ao servidor do Amazon S3 são exportados como tabelas do Iceberg no bucket de tabela `aws-cloudwatch`, os agentes podem consultá-los no mesmo catálogo de Tabelas do S3 que você usa com o Amazon Athena, o Amazon EMR, o Amazon Redshift ou qualquer ferramenta compatível com o Iceberg.

O [Agent Toolkit for AWS](https://github.com/aws/agent-toolkit-for-aws) possui habilidades que fornecem aos agentes procedimentos validados para trabalhar com dados da AWS. A habilidade [Consultar tabelas de sistema do CloudWatch Logs](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills/specialized-skills/system-table-skills/querying-aws-cloudwatch) executa consultas SQL em dados do CloudWatch Logs exportados para Tabelas do S3, incluindo seus logs de acesso ao servidor do Amazon S3 no bucket de tabela `aws-cloudwatch`. Para usá-la, baixe a habilidade do repositório no GitHub e adicione-a ao diretório de habilidades do agente.

Por exemplo, você pode pedir a um agente que mostre os 10 principais endereços IP de origem por contagem de solicitações nos logs de acesso ao servidor do S3 nas últimas 24 horas. O agente usa a habilidade para localizar a tabela de log de acesso e executar a consulta no Athena.