Como configurar um bucket S3 para usar com a Transloadit
Usar o Amazon S3 com a Transloadit pode ser uma combinação poderosa, mas vários clientes nos contaram que pode ser difícil fazer tudo funcionar exatamente do jeito que eles querem. Para ajudá-los, e esperamos que outras pessoas também, decidimos escrever um guia completo sobre como integrar os dois serviços.

Criando um bucket
Naturalmente, nosso primeiro passo será criar uma conta na AWS. Se você ainda não tiver uma, acesse a página de cadastro e siga as instruções fornecidas.
Depois disso, navegue até Storage e selecione S3 na aba Services, como mostrado abaixo.

No Management Console, clique em Create Bucket. Dê um nome ao bucket e escolha a região mais próxima da maioria dos seus usuários. Anote o nome e a região, pois vamos precisar passar essas informações para a Transloadit mais tarde.
Mantenha Bucket owner enforced em Object Ownership, com as ACLs desativadas, e mantenha Block all
public access ativado. A Transloadit pode armazenar arquivos neste bucket privado omitindo as ACLs dos objetos;
o nosso Template abaixo define acl como "bucket-default" para isso. Você não precisa tornar o
bucket público para importar ou exportar arquivos. Veja as
orientações da AWS sobre Object Ownership.
Configurando as credenciais da Transloadit
Agora o nosso bucket está configurado e pronto para começar a armazenar os nossos arquivos! Mas ainda precisamos obter algumas credenciais da AWS antes de ir à Transloadit para configurar o nosso Template.
Use um usuário do IAM dedicado a esta integração, e não o seu
usuário raiz da AWS. No IAM, atribua a esse
usuário uma política de identidade restrita ao seu bucket. Este exemplo, apenas para exportação,
permite listar o bucket, descobrir a região dele e gravar objetos. Substitua YOUR_BUCKET_NAME nos dois recursos:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetBucketLocation", "s3:ListBucket"],
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME"
},
{
"Effect": "Allow",
"Action": ["s3:PutObject"],
"Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
}
]
}
Esta é uma política de identidade do IAM anexada a esse usuário, e não uma política de bucket que
concede acesso público. Se você também precisar importar objetos, adicione s3:GetObject apenas para os
caminhos de objetos que precisar ler. A criptografia KMS gerenciada pelo cliente pode exigir
permissões adicionais específicas da chave; não conceda acesso administrativo com curinga para
resolver erros de permissão.
Abra as credenciais de segurança do usuário do IAM dedicado e crie uma chave de acesso para esta integração. Armazene a chave e o segredo com segurança, faça a rotação deles de acordo com a política da sua organização e nunca os coloque em código do navegador nem em um repositório de código-fonte.
As capturas de tela do Console abaixo mostram a interface em inglês.
Agora, acesse a página Credenciais no Transloadit Console. Abra Credenciais de terceiros e clique em Adicionar nova credencial.

Selecione Amazon S3 como o serviço, dê à credencial um nome fácil de lembrar e informe o nome e a região do bucket que você anotou antes. Não se esqueça de adicionar aqui também a sua chave de acesso e o seu segredo.

Montando um Template
A Transloadit agora tem as credenciais necessárias para exportar arquivos para este bucket. Vamos colocar isso à prova!
O Template abaixo vai redimensionar para 200x200 uma imagem enviada por upload, usando a estratégia fillcrop,
graças ao nosso prático Robot /image/resize.
Em seguida, será feito o upload do arquivo redimensionado e do original para o S3, para armazenamento permanente.
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"fillcropped": {
"use": ":original",
"robot": "/image/resize",
"result": true,
"height": 200,
"width": 200,
"imagemagick_stack": "v3.0.1",
"resize_strategy": "fillcrop"
},
"exported": {
"use": ["fillcropped", ":original"],
"robot": "/s3/store",
"credentials": "MY_S3_CREDENTIALS",
"acl": "bucket-default"
}
}
}
Substitua MY_S3_CREDENTIALS pelo nome que você salvou na Transloadit. Depois de uma Assembly bem-sucedida,
verifique os dois objetos no console do S3 usando uma identidade com acesso de leitura. Os objetos
armazenados continuam privados: uma URL de resultado, por si só, não concede permissão para
baixá-los. Ao compartilhar arquivos privados, use acesso autenticado ou URLs assinadas de curta
duração configuradas deliberadamente.
Chegamos ao fim do guia de hoje. Sabemos que o S3 pode ser complicado de configurar, então, se você ainda estiver enfrentando problemas, avise a gente e teremos prazer em ajudar.
