Importar arquivos do Amazon S3
🤖/s3/import importa diretórios inteiros de arquivos do seu bucket do S3.

Se você está começando a usar o Amazon S3, consulte nosso tutorial sobre como usar seu próprio bucket S3.
Limitar o acesso
Use credenciais da AWS dedicadas nas suas credenciais de Template e conceda a essa identidade do IAM acesso apenas ao bucket e aos objetos de que ela precisa. O exemplo a seguir é uma política do IAM baseada em identidade para ler os objetos atuais de um único bucket S3 de uso geral. Anexe-a ao usuário ou à função do IAM cujas credenciais você fornece à Transloadit, e não ao bucket. Uma política baseada em identidade não tem o elemento Principal: ela se aplica à identidade à qual está anexada.
Substitua {BUCKET_NAME} nos dois valores de Resource pelo nome do seu bucket. A instrução no nível do bucket permite listar objetos e descobrir a região do bucket; a instrução no nível do objeto permite baixá-los. Consulte as permissões de operações do S3 na documentação da AWS e a comparação entre políticas baseadas em identidade e políticas baseadas em recursos.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadBucketMetadata",
"Effect": "Allow",
"Action": ["s3:GetBucketLocation", "s3:ListBucket"],
"Resource": "arn:aws:s3:::{BUCKET_NAME}"
},
{
"Sid": "ReadBucketObjects",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::{BUCKET_NAME}/*"
}
]
}
Os valores de Sid são rótulos para identificar as instruções. Informar o bucket_region correto evita a descoberta automática da região e a permissão s3:GetBucketLocation que ela exige. O exemplo ainda concede listagem e leitura em todo o bucket: restrinja os recursos de objeto e as condições de listagem quando seu fluxo de trabalho precisar apenas de um prefixo específico.
Este exemplo não garante o acesso. Negações explícitas, políticas da organização, limites de permissões, políticas de bucket entre contas e a propriedade dos objetos podem afetar o resultado. Para acesso entre contas, consulte as orientações da AWS sobre avaliação de políticas.
Para objetos criptografados com SSE-KMS, configure também a identidade do IAM e a política da chave KMS com as permissões de chave exigidas pela documentação do GetObject da AWS, restritas à chave pretendida. As ações do KMS pertencem às políticas de identidade do IAM e às políticas de chave do KMS, não às políticas de bucket do S3. Não conceda permissões amplas de sts:* ou kms:* como solução alternativa.
Exemplo de uso
Importe arquivos do diretório path/to/files e de seus subdiretórios:
{
"steps": {
"imported": {
"credentials": "YOUR_AWS_CREDENTIALS",
"path": "path/to/files/",
"recursive": true,
"robot": "/s3/import"
}
}
}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 é mais custoso para a 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 imagens,
"thumbhash": trueem vez disso extrai um ThumbHash codificado em base64 emmeta.thumbhash, junto commeta.has_alpha(se existe um canal alfa, mesmo quando totalmente opaco). Ele descreve pixels orientados por EXIF e usa o primeiro quadro de imagens animadas. A extração é feita em regime de melhor esforço: imagens acima de 40 megapixels, formatos não suportados ou uma decodificação com falha/limitada não geram placeholder. Uma extração bem-sucedida adiciona uma cobrança de metadados equivalente a 20% dos bytes desse arquivo. Nenhuma sobretaxa de ThumbHash se aplica quando desativado ou quando nenhum hash é gerado.Defina essa opção no Step que produz a imagem, como
/upload/handlepara originais enviados por upload ou/image/resizepara saídas processadas. Defini-la apenas em/transloadit/storenão solicita a extração: o armazenamento preserva os metadados do produtor. O Transloadit Storage persiste um hash gerado com sua versão imutável e o retorna em resultados armazenados e em leituras nativas de ativos. Uploads diretos para o S3 não geram placeholders. Um placeholder contém informações da imagem, portanto proteja-o com os mesmos controles de acesso da imagem completa.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 barata do ffprobefield_ordercom 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 | import | 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
["import"]fará com que o Robot ignore erros ao importar o arquivo de origem. A fase"import"está disponível apenas para Robots de importação.Definir isso como
trueequivale a["meta", "import", "execute"]e fará com que erros sejam ignorados nas três fases.force_namestring | Array<string> | null(padrão:null)Nome personalizado para o(s) arquivo(s) importado(s). Por padrão, os nomes dos arquivos são derivados da origem.
import_on_errorsArray<meta>(padrão:[])Definir isso como
["meta"]ainda importa o arquivo quando ocorrem erros de extração de metadados.ignore_errorsé parecido: também ignora o erro e garante que o Robot não pare, mas não importa o arquivo.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".path— obrigatóriostring | Array<string>O caminho no seu bucket para o arquivo ou diretório específico. Se o caminho apontar para um arquivo, apenas esse arquivo será importado. Por exemplo:
images/avatar.jpg.Se apontar para um diretório, indicado por uma barra no final (
/), todos os arquivos diretamente contidos nesse diretório serão importados. Por exemplo:images/.Os diretórios não são importados recursivamente. Se quiser importar arquivos de subdiretórios e dos subdiretórios deles, habilite o parâmetro
recursive.Use
/para importar arquivos da raiz do bucket. As chaves de objeto não precisam de uma barra inicial. Habiliterecursivepara incluir arquivos em prefixos aninhados.Você também pode usar um array de strings de caminhos aqui para importar vários caminhos no mesmo Step do Robot.
recursiveboolean(padrão:false)Definir este parâmetro como
truepermitirá importar arquivos de subdiretórios e dos subdiretórios deles (etc.) no caminho especificado.Use os parâmetros de paginação
page_numberefiles_per_pagecom cuidado aqui.page_numberstring | number(padrão:1)O número da página de paginação. Por enquanto, para não quebrar a compatibilidade com versões anteriores em importações não recursivas, isso só funciona quando recursive está definido como
true.Ao fazer importações grandes, certifique-se de que outros scripts não adicionem nem removam arquivos no seu caminho; caso contrário, a paginação poderá apresentar resultados inesperados.
files_per_pagestring | number(padrão:1000)O tamanho da página de paginação. Por enquanto, isso só funciona quando recursive é
true, para não quebrar a compatibilidade com versões anteriores em importações não recursivas.return_file_stubsboolean(padrão:false)Se definido como
true, o Robot ainda não importará os arquivos em si, e em vez disso retornará um stub de arquivo vazio que inclui uma URL a partir da qual o arquivo pode ser importado por Robots subsequentes. Isso é útil em casos em que os Steps subsequentes precisam de mais controle sobre o processo de importação, como acontece com o 🤖/video/ondemand. Este parâmetro só deve ser definido se todos os Steps subsequentes usarem Robots que suportem stubs de arquivo.rangestring | Array<string>Permite especificar um ou mais intervalos de bytes para importar do arquivo. O S3 precisa oferecer suporte a requisições de intervalo para que isso funcione.
Intervalo único: use uma string como
"0-99"para importar os bytes de 0 a 99 (os primeiros 100 bytes).Múltiplos intervalos: use um array como
["0-99", "200-299"]para importar vários intervalos separados. O arquivo resultante conterá todos os intervalos solicitados concatenados, com bytes de valor zero (\0) preenchendo as lacunas entre intervalos não contíguos.Formatos de intervalo:
"0-99": bytes de 0 a 99 (inclusive)"100-199": bytes de 100 a 199 (inclusive)"-100": os últimos 100 bytes do arquivo
Observações importantes:
- O S3 oferece suporte a requisições de intervalo por padrão
- Intervalos sobrepostos são permitidos e serão incluídos conforme solicitado
- O tamanho do arquivo resultante será a maior posição de byte solicitada, com as lacunas preenchidas com bytes de valor zero
- Cada intervalo é obtido em uma requisição separada para garantir a compatibilidade com o S3
Demonstrações
Publicações relacionadas no blog
- Apresentamos o novo Robot /s3/import: importações fáceis do S3
- Novo modelo de preços para futuros clientes da Transloadit
- Apresentando importações recursivas do S3 na Transloadit
- Building an alt-text to speech generator with Transloadit (English)
- Como configurar um bucket S3 para usar com a Transloadit