AWS S3 - Operações de Armazenamento na Nuvem
Visão Geral
O AWS S3 (Simple Storage Service) é o serviço de armazenamento de objetos da Amazon Web Services. No Lumina Flow Builder, você pode integrar operações S3 diretamente nos seus flows para gerenciar arquivos na nuvem.
Operações Disponíveis
1. S3 UPLOAD - Enviar Arquivo para S3
Faz upload de arquivos para buckets S3 com controle de permissões (ACL) e tipo de conteúdo.
Casos de uso: - Armazenar documentos enviados por usuários - Fazer backup de arquivos gerados - Hospedar imagens e mídias - Salvar dados para análise posterior
Parâmetros principais:
- bucketName - Bucket de destino
- key - Caminho do arquivo
- content - Arquivo em Base64
- contentType - Tipo MIME
- acl - Permissões (private/public-read)
2. S3 DOWNLOAD - Baixar Arquivo do S3
Recupera arquivos armazenados no S3 retornando conteúdo em Base64.
Casos de uso: - Recuperar documentos previamente enviados - Processar dados em lote - Reenviar arquivos ao usuário - Validar existência de arquivos
Parâmetros principais:
- bucketName - Bucket origem
- key - Caminho do arquivo
Retorna:
- content - Arquivo em Base64
- contentType - Tipo do arquivo
- metadata - Metadados customizados
3. S3 LIST - Listar Objetos no Bucket
Lista arquivos e pastas armazenados no bucket com filtros.
Casos de uso: - Descobrir quais arquivos existem - Filtrar por pasta (prefix) - Auditoria de uploads - Processar arquivos em lote
Parâmetros principais:
- bucketName - Bucket a listar
- prefix - Filtro por pasta (opcional)
- maxKeys - Limite de resultados (padrão: 1000)
Retorna:
- objects - Array de objetos com Key, Size, LastModified
- count - Quantidade de objetos
4. S3 DELETE - Deletar Arquivo do S3
Remove permanentemente arquivos do bucket.
Casos de uso: - Remover arquivos temporários - LGPD - deletar dados de usuários - Limpeza de backups antigos - Gerenciar espaço no bucket
Parâmetros principais:
- bucketName - Bucket
- key - Arquivo a deletar
ATENÇÃO: Operação irreversível sem versionamento!
5. S3 COPY - Copiar Arquivo entre Buckets/Pastas
Copia arquivos server-side (sem download/upload).
Casos de uso: - Backup entre buckets - Reorganizar estrutura de pastas - Replicação manual cross-region - Criar versões com novos nomes
Parâmetros principais:
- sourceBucket + sourceKey - Origem
- destinationBucket + destinationKey - Destino
Vantagem: 100% server-side, muito mais rápido!
Configuração AWS
1. Criar Access Key
AWS Console → IAM → Users → Security credentials → Create access key
Você receberá:
- Access Key ID (ex: AKIAIOSFODNN7EXAMPLE)
- Secret Access Key (ex: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY)
2. Criar Bucket S3
AWS Console → S3 → Create bucket
Configurações:
- Nome único (ex: minha-empresa-uploads)
- Região (ex: sa-east-1 para São Paulo)
- Permissões (Block public access se privado)
3. Permissões IAM Necessárias
Para todas as operações S3, configure estas permissões:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::seu-bucket",
"arn:aws:s3:::seu-bucket/*"
]
}
]
}
IMPORTANTE:
- ListBucket é no bucket (sem /*)
- Outras permissões são em objetos (com /*)
Regiões AWS Comuns
| Região | Código | Localização |
|---|---|---|
| Norte da Virgínia | us-east-1 |
EUA Leste |
| Oregon | us-west-2 |
EUA Oeste |
| São Paulo | sa-east-1 |
Brasil |
| Irlanda | eu-west-1 |
Europa |
| Frankfurt | eu-central-1 |
Europa |
| Tóquio | ap-northeast-1 |
Ásia |
Tipos MIME Comuns (ContentType)
| Arquivo | ContentType |
|---|---|
| Texto | text/plain |
application/pdf |
|
| JSON | application/json |
| JPG | image/jpeg |
| PNG | image/png |
| MP4 | video/mp4 |
| CSV | text/csv |
| ZIP | application/zip |
ACL (Access Control List)
| ACL | Descrição |
|---|---|
private |
Apenas você com credenciais (padrão) |
public-read |
Leitura pública (qualquer um baixa) |
public-read-write |
Leitura e escrita pública (PERIGOSO!) |
authenticated-read |
Apenas usuários AWS autenticados |
Boas Práticas Gerais
Segurança
SIM:
- Use IAM roles com permissões mínimas necessárias
- NUNCA exponha Access Keys no código (use variáveis de ambiente)
- Ative versionamento para recuperação de arquivos
- Use ACL private para dados sensíveis
- Configure lifecycle policies para deletar arquivos antigos
- Habilite S3 Server Access Logging para auditoria
NÃO:
- Nunca use ACL public-read-write (qualquer um pode modificar!)
- Não compartilhe Access Keys entre sistemas
- Não armazene credenciais em variáveis do flow visíveis
- Não ignore solicitações LGPD de exclusão de dados
Organização
SIM:
- Organize em "pastas" lógicas usando prefixos
- Padrão recomendado: categoria/ano/mes/arquivo
- Inclua data ou timestamp em nomes de backup
- Agrupe por cliente/usuário: uploads/cliente-123/
Exemplos de estrutura:
documentos/
cliente-123/
rg.jpg
cpf.jpg
cliente-456/
rg.jpg
backups/
2025/
01/
backup-2025-01-15.json
backup-2025-01-16.json
temp/
processing-abc123.tmp
Performance
SIM: - Use S3 Transfer Acceleration para uploads grandes - Considere CloudFront + S3 para distribuição de conteúdo - Para múltiplas operações, use batch operations - Copy é server-side (muito mais rápido)
NÃO: - Não faça operações sequenciais de milhares de arquivos - Não use download+upload quando COPY resolve - Não coloque milhões de arquivos na raiz do bucket
Custos
SIM: - Configure lifecycle policies para transição automática para classes mais baratas - Use S3 Intelligent-Tiering para otimizar custos - Delete arquivos temporários após processamento - Considere S3 Glacier para backups de longo prazo
Custos S3: - Armazenamento: ~$0.023/GB/mês (STANDARD) - Transferência de saída: ~$0.09/GB - Requisições: ~$0.0004 por 1000 GET
Fluxo Típico de Uso
Upload de Documento do Usuário
START → MESSAGE (solicitar) → MEDIA (receber) → S3 UPLOAD → MESSAGE (confirmar) → END
Processar e Limpar
START → S3 UPLOAD (temp) → PROCESSAR → S3 COPY (permanente) → S3 DELETE (temp) → END
Backup Diário
SCHEDULE → S3 COPY (criar backup datado) → MESSAGE (notificar) → END
Listar e Reenviar
START → S3 LIST → CONDITION → S3 DOWNLOAD → MEDIA (enviar) → END
Troubleshooting
Erro: Access Denied
Causa: Permissões IAM insuficientes
Solução: Adicione permissão específica (PutObject, GetObject, etc.)
Erro: NoSuchBucket
Causa: Bucket não existe ou região errada
Solução: Verifique nome do bucket e região
Erro: NoSuchKey
Causa: Arquivo não existe no caminho especificado
Solução: Use S3 LIST para verificar keys disponíveis
Upload retorna URL inválida
Causa: ACL não é public-read
Solução: Configure acl: "public-read" no upload
Próximos Passos
- Configure sua Access Key no IAM
- Crie um bucket S3 para testes
- Teste cada operação com flows de exemplo
- Implemente em flows de produção
- Configure lifecycle policies
- Habilite versionamento
- Configure CloudTrail para auditoria
Links Úteis
Total de operações documentadas: 5/5
Última atualização: 2025-01-15