Exportar arquivos para o Amazon S3
🤖/s3/store exporta resultados de codificação para o Amazon S3.

Se você está começando a usar o Amazon S3, consulte nosso tutorial sobre como usar seu próprio bucket S3 (English).
A URL do arquivo resultante no seu bucket S3 será retornada no Assembly Status JSON. Se o versionamento estiver habilitado no seu bucket S3, o ID da versão do arquivo será retornado em meta.version_id
Evite erros de permissão. Por padrão, acl é definido como "public-read". O AWS S3 tem uma configuração de bucket chamada Block new public ACLs and uploading public objects. Defina essa configuração como False no seu bucket se você pretende manter acl como "public-read". Caso contrário, você receberá erros de permissão nas suas Assemblies, mesmo que suas credenciais S3 estejam configuradas corretamente.
Use nomes de bucket compatíveis com DNS. O nome do seu bucket deve ser compatível com DNS e não pode conter letras maiúsculas. Todos os caracteres não alfanuméricos nos nomes dos arquivos serão substituídos por um sublinhado, e os espaços serão substituídos por hífens. Se o seu bucket S3 existente contiver letras maiúsculas ou não for compatível com DNS por outro motivo, reescreva as URLs dos resultados usando o parâmetro url_prefix do Robot.
Limitar o acesso
Você também precisará adicionar permissões ao seu bucket para que a Transloadit possa acessá-lo corretamente. Aqui está um exemplo de política IAM que você pode usar. Seguindo o princípio do privilégio mínimo, ela contém as permissões mínimas necessárias para exportar um arquivo para o seu bucket S3 usando a Transloadit. Você pode precisar de mais permissões (especialmente permissões de visualização), dependendo da sua aplicação.
Altere {BUCKET_NAME} nos valores de Sid e Resource conforme necessário. Além disso, essa política concederá as permissões mínimas necessárias a todos os seus usuários. Recomendamos que você crie um usuário separado no Amazon IAM e use o User ARN dele (disponível na aba “Summary” de um usuário aqui) como valor de Principal. Você pode encontrar mais informações sobre isso aqui.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowTransloaditToStoreFilesIn{BUCKET_NAME}Bucket",
"Effect": "Allow",
"Action": ["s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl"],
"Resource": ["arn:aws:s3:::{BUCKET_NAME}", "arn:aws:s3:::{BUCKET_NAME}/*"]
}
]
}
O valor de Sid é apenas um identificador para você reconhecer a regra depois. Você pode dar a ele o nome que quiser.
A política precisa ser separada em duas partes, porque a ação ListBucket exige permissões no bucket, enquanto as outras ações exigem permissões nos objetos do bucket. Quando a política se aplica aos objetos, há uma barra final e um asterisco no parâmetro Resource; quando ela se aplica ao bucket, a barra e o asterisco são omitidos.
Observe que, se você definir o parâmetro acl do Robot como "bucket-default", não precisará da permissão "s3:PutObjectAcl" na política do seu bucket.
Para construir URLs de resultado corretas, precisamos saber em qual região seu bucket S3 está localizado. Para isso, exigimos a permissão GetBucketLocation. Determinar a região do seu bucket dessa forma também deixará suas Assemblies mais lentas. Para tornar isso muito mais rápido e também dispensar a permissão GetBucketLocation, adicionamos o parâmetro bucket_region aos Robots /s3/store e /s3/import. Recomendamos sempre usar esse parâmetro nesses Robots.
Lembre-se de que, se você usar criptografia no bucket, talvez também precise adicionar "sts:*" e "kms:*" à política do bucket. Leia aqui e aqui caso encontre problemas com nosso exemplo de política de bucket.
Exemplo de uso
Exporte arquivos carregados por upload para my_target_folder em um bucket do S3:
{
"steps": {
"exported": {
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "my_target_folder/${unique_prefix}/${file.url_name}",
"robot": "/s3/store",
"use": ":original"
}
}
}Parâmetros
interpolateboolean | Record<string, boolean>Controla se as Assembly Variables são interpoladas em campos individuais de instruções.
Por padrão, a maioria dos campos de instruções dos Robots interpola Assembly Variables. Defina isso como
falsepara tratar todos os campos de instruções como texto literal, ou defina o caminho de um campo individual comofalsepara tratar apenas esse campo como texto literal. Para campos específicos de um Robot que são literais por padrão, defina isso comotrueou defina o caminho desse campo comotruepara voltar a usar a interpolação.Use nomes de campos como
pathou caminhos com pontos comoffmpeg.vfpara objetos aninhados.output_metaRecord<string, boolean> | boolean | Array<string>Permite especificar um conjunto de metadados cujo cálculo exige mais CPU e que, por isso, vem desativado por padrão para manter o processamento das suas Assemblies rápido.
Para imagens, você pode adicionar
"has_transparency": trueneste objeto para extrair se a imagem contém partes transparentes e"dominant_colors": truepara extrair um array de códigos de cores hexadecimais da imagem.Para imagens, você também pode adicionar
"blurhash": truepara extrair uma string BlurHash — uma representação compacta de um placeholder da imagem, útil para exibir uma prévia desfocada enquanto a imagem completa carrega.Para vídeos, você pode adicionar o parâmetro
"colorspace": truepara extrair o espaço de cores do vídeo de saída.Para vídeos, você também pode adicionar
"interlaced": truepara detectar se o vídeo é entrelaçado. Isso combina a flag computacionalmente baratafield_orderdo ffprobe com uma passagem de amostragemidetlimitada sobre os primeiros quadros da origem, expondointerlaced,field_ordere um objeto de diagnósticointerlace_detectionemfile.meta. Isso é computacionalmente caro e cobrado de acordo.Para áudio, você pode adicionar
"mean_volume": truepara obter um único valor que representa o volume médio do arquivo de áudio.Você também pode definir isso como
falsepara pular a extração de metadados e acelerar a transcodificação.user_metaRecord<string, any>(padrão:{})Adiciona metadados JSON personalizados a cada arquivo emitido sem modificar seu conteúdo. Objetos e arrays aninhados são suportados.
A herança depende do Robot. Os valores são mesclados com o
user_metaexistente no arquivo de saída; o Step atual substitui as chaves de nível superior com o mesmo nome. Atribua explicitamente as chaves necessárias quando um Robot criar novas saídas.Nos Steps de processamento,
${file.*}se refere à primeira entrada e${result.*}ao arquivo emitido. Os valores são avaliados para cada saída após a execução do Robot, antes da extração subsequente de metadados e do armazenamento temporário. Em:original, os valores são avaliados para cada upload antes da extração de metadados.Os Steps subsequentes leem
${file.user_meta.key}. Consulte Metadados personalizados para ver um exemplo completo e as regras de herança.resultboolean(padrão:false)Se os resultados deste Step devem estar presentes no Assembly Status JSON
queuebatchDefinir a fila como “batch” rebaixa manualmente a prioridade dos Jobs deste Step, para evitar o consumo de vagas prioritárias de Jobs em Jobs que não precisam de tempo zero de espera na fila
force_acceptboolean(padrão:false)Forçar um Robot a aceitar um tipo de arquivo que ele teria ignorado.
Por padrão, os Robots ignoram arquivos que não conhecem. O 🤖/video/encode, por exemplo, ignora tranquilamente imagens de entrada.
Com o parâmetro
force_acceptdefinido comotrue, você pode forçar os Robots a aceitar todos os arquivos enviados a eles. Isso normalmente leva a erros e só deve ser usado para depuração ou para lidar com casos extremos.ignore_errorsboolean | Array<meta | execute>(padrão:[])Ignorar erros durante fases específicas do processamento.
Definir isso como
["meta"]fará com que o Robot ignore erros durante a extração de metadados.Definir isso como
["execute"]fará com que o Robot ignore erros durante a fase principal de execução.Definir isso como
trueequivale a["meta", "execute"]e fará com que erros sejam ignorados nas duas fases.usestring | Array<string> | Array<object> | objectEspecifica quais Steps usar como entrada.
- Você pode escolher qualquer nome para os Steps, exceto
":original"(reservado para uploads de usuários tratados pela Transloadit) - Você pode fornecer vários Steps como entrada usando arrays:
{ "use": [ ":original", "encoded", "resized" ] } - Você também pode marcar os Steps de entrada com
aspara transmitir intenção semântica aos Robots:{ "use": [ { "name": ":original", "as": "image" }, { "name": ":original", "as": "mask" } ] }
DicaProvavelmente é tudo o que você precisa saber sobre
use, mas você pode ver os casos de uso avançados.- Você pode escolher qualquer nome para os Steps, exceto
credentialsstringCrie as credenciais de Template correspondentes na sua conta da Transloadit e use o nome das suas credenciais de Template como valor deste parâmetro. Elas conterão os valores de
bucket,key,secretebucket_regiondo seu S3.Embora recomendemos sempre usar credenciais de Template, alguns casos de uso exigem credenciais dinâmicas, para os quais o uso de credenciais de Template é pouco prático devido à sua natureza estática. Se você tiver essa necessidade, pode usar os seguintes parâmetros no lugar delas:
"bucket","bucket_region"(por exemplo:"us-east-1"ou"eu-west-2"),"key","secret".pathstring(padrão:"${unique_prefix}/${file.url_name}")O caminho no qual o arquivo será armazenado. Ele pode incluir quaisquer Assembly Variables disponíveis. O caminho não deve ser um diretório.
url_prefixstring(padrão:"http://{bucket}.s3.amazonaws.com/")O prefixo de URL usado para a URL retornada, como
"http://my.cdn.com/some/path/".aclbucket-default | private | public | public-read(padrão:"public-read")As permissões usadas para este arquivo.
Lembre-se de que o valor padrão
"public-read"pode causar erros de permissão devido à caixa de seleção"Block all public access", que fica marcada por padrão ao criar um novo bucket Amazon S3 no console da AWS.check_integrityboolean(padrão:false)Calcule e envie a soma de verificação do arquivo para que o S3 verifique sua integridade após o upload, o que pode ajudar com problemas ocasionais de corrupção de arquivos.
Habilitar esta opção aumenta o tempo total de execução, pois a verificação de integridade pode exigir uso intensivo de CPU, especialmente para arquivos maiores.
headersRecord<string, string>(padrão:{"Content-Type":"${file.mime}"})Um objeto contendo uma lista de cabeçalhos a serem definidos para este arquivo no S3, como
{ FileURL: "${file.url_name}" }. Isso também pode incluir quaisquer Assembly Variables disponíveis. Você pode encontrar uma lista de cabeçalhos disponíveis aqui.Os metadados do objeto podem ser especificados usando cabeçalhos
x-amz-meta-*. Observe que esses cabeçalhos não aceitam valores de metadados com caracteres fora de ASCII.tagsRecord<string, string>(padrão:{})A marcação de objetos com tags permite categorizar o armazenamento. Você pode associar até 10 tags a um objeto. As tags associadas a um objeto devem ter chaves de tag exclusivas.
hoststring(padrão:"s3.amazonaws.com")O host do serviço de armazenamento usado. Só é necessário definir este parâmetro quando o serviço de armazenamento usado não é o Amazon S3, mas tem uma API compatível (como hosteurope.de). O protocolo padrão usado é HTTP; para qualquer outro, o protocolo precisa ser especificado explicitamente. Por exemplo, adicione o prefixo
https://ous3://ao host para usar o protocolo correspondente.no_vhostboolean(padrão:false)Defina como
truese você usar um host personalizado e encontrar erros de acesso negado.sign_urls_forstring | numberEste parâmetro fornece URLs assinadas no JSON de resultado (nas propriedades
signed_urlesigned_ssl_url). O número definido neste parâmetro é o prazo de expiração da URL em segundos. Se este parâmetro não for usado, nenhuma assinatura de URL será realizada.session_tokenstringO token de sessão a ser usado para o armazenamento no S3. Ele só é usado se as credenciais forem de um usuário IAM com a permissão
sts:AssumeRole.
Demonstrações
Publicações relacionadas no blog
- API update: renaming Robots for better clarity (English)
- Addressing S3 put request inconsistencies at Transloadit (English)
- Introducing /s3/store Robot's 'url_prefix' parameter (English)
- Launching SFTP Robot & unveiling new homepage (English)
- All Robots now support expanded Assembly Variables (English)
- Switching to official S3 CLI for enhanced file exporting (English)
- Addressing the S3 incident with fixes and discounts (English)
- New pricing model for future Transloadit customers (English)
- No-code real-time video uploading with Bubble & Transloadit (English)
- Export files to DigitalOcean Spaces with ease (English)
- Creating audio waveform videos with FFmpeg & Node.js (English)
- New feature: auto-transcribe videos with subtitles (English)
- Transloadit’s 2021 milestones and progress (English)
- Expanding our API for better Terraform provisioning (English)
- What is content localization? (English)
- How to set up an S3 bucket to use with Transloadit (English)
- Automatically correct page orientation in documents (English)
- Automatic background removal from images (English)
- Generate stunning images from text using AI (English)