Copiar arquivos para o armazenamento da AWS manualmente pode ser tedioso, propenso a erros e ineficiente – especialmente ao lidar com grandes quantidades de dados. Você não quer isso.
A Interface de Linha de Comando da AWS (CLI) oferece uma ferramenta conveniente chamada aws s3 cp
que simplifica esse processo. Este comando permite copiar arquivos de e para os buckets da Amazon S3 com comandos simples e scriptáveis que funcionam em todos os sistemas operacionais. Usar a AWS CLI não apenas economiza tempo, mas também permite a automação de tarefas rotineiras de transferência de arquivos.
O comando aws s3 cp
oferece muitas opções para lidar com cenários complexos de transferência de arquivos. Você pode copiar arquivos individuais, transferir diretórios inteiros recursivamente, filtrar arquivos com base em padrões e até mesmo especificar diferentes classes de armazenamento para otimização de custos.
Neste tutorial, vou guiá-lo através de tudo o que você precisa saber sobre como usar o aws s3 cp
de forma eficaz, desde comandos básicos até técnicas avançadas e estratégias de automação.
> Novo no AWS e inseguro sobre armazenamento em nuvem e S3? Nosso guia detalhado sobre S3 e EFS é o lugar perfeito para começar. Se você está especificamente interessado em S3, confira nosso guia detalhado sobre S3.O que é AWS S3 cp?
O comando aws s3 cp
é uma ferramenta dentro da Interface de Linha de Comando da AWS que permite copiar arquivos entre o seu sistema local e o armazenamento da Amazon S3.
Essencialmente, ele é projetado para fornecer uma experiência conhecida de linha de comando semelhante ao comando padrão cp
do Linux, mas adaptado para interagir com os buckets do S3.
No seu núcleo, aws s3 cp
conecta sua máquina local e a infraestrutura de armazenamento na nuvem da AWS. Quando você executa um comando aws s3 cp
, a AWS CLI lida com autenticação e divisão de arquivos para transferências grandes e garante integridade dos dados durante o processo de cópia. Este utilitário suporta a cópia de arquivos individuais, múltiplos arquivos usando curingas e estruturas de diretórios inteiras usando operações recursivas.
O aws s3 cp
é capaz de muitas coisas, vou listar apenas algumas:
- Transferências bidirecionais (upload para o S3 ou download do S3).
- Cópia recursiva de estruturas de diretórios inteiras.
- Suporte para várias classes de armazenamento S3 (Padrão, Inteligente-Tiering, Glacier, etc.).
- Filtragem de arquivos usando padrões de inclusão/exclusão.
- Preservação dos metadados dos arquivos durante as transferências.
- Integração com o AWS Identity and Access Management (IAM) para segurança.
No entanto, o poder do aws s3 cp
está em sua flexibilidade e integração com o ecossistema da AWS. Você pode especificar diferentes parâmetros para controlar aspectos como classe de armazenamento, criptografia, metadados, controle de acesso e muito mais. Isso o torna adequado para tudo, desde simples transferências de arquivos únicas até soluções complexas e automatizadas de backup.
O comando é diferente de usar o Console de Gerenciamento da AWS, que requer navegação manual e cliques. O comando aws s3 cp
pode ser executado diretamente do seu terminal ou incorporado em scripts e fluxos de trabalho automatizados. Esse acesso programático ao S3 é essencial para muitos profissionais de tecnologia, especialmente engenheiros DevOps e cientistas de dados.
Para concluir, aws s3 cp
oferece uma solução confiável e scriptável que pode lidar com transferências massivas mantendo o desempenho. Ele pode retomar uploads e downloads interrompidos, o que o torna particularmente útil ao lidar com conexões de rede instáveis ou transferir arquivos extremamente grandes.
Em seguida, vou te guiar nas partes chatas – configurando o AWS CLI no seu sistema.
Configurando o AWS CLI e AWS S3
Antes de mergulhar no comando aws s3 cp
, você precisa ter o AWS CLI instalado e configurado corretamente no seu sistema. Não se preocupe se nunca trabalhou com a AWS antes – o processo de configuração é fácil e deve levar menos de 10 minutos.
Vou dividir isso em três fases simples: instalando a ferramenta AWS CLI, configurando suas credenciais e criando seu primeiro bucket S3 para armazenamento.
Instalando o AWS CLI
O processo de instalação difere ligeiramente com base no sistema operacional que você está usando.
Para sistemas Windows:
- Acesse a página oficial da documentação do AWS CLI
- Obtenha o instalador do Windows de 64 bits
- Execute o arquivo baixado e siga o assistente de instalação
Para sistemas Linux:
Execute os seguintes três comandos no Terminal:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Para sistemas macOS:
Assumindo que você tenha o Homebrew instalado, execute esta linha no Terminal:
brew install awscli
Se você não tiver o Homebrew, use estes dois comandos em vez disso:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /
Para confirmar a instalação bem-sucedida, execute aws --version
no seu terminal. Você deve ver algo assim:
Imagem 1 – Versão do AWS CLI
Configurando o AWS CLI
Com o CLI instalado, é hora de configurar suas credenciais da AWS para autenticação.
Primeiro, acesse sua conta da AWS e vá para o painel de serviços do IAM. Crie um novo usuário com acesso programático e anexe a política de permissões apropriada do S3:
Imagem 2 – Usuário IAM da AWS
Em seguida, visite a aba “Credenciais de segurança” e gere um novo par de chaves de acesso. Certifique-se de salvar tanto o ID da chave de acesso quanto a chave de acesso secreta em um local seguro – a Amazon não mostrará a chave secreta novamente após esta tela:
Imagem 3 – Credenciais de usuário IAM da AWS
Agora abra seu terminal e execute o comando aws configure
. Você será solicitado a fornecer quatro informações: seu ID de chave de acesso, chave de acesso secreta, região padrão (estou usando eu-central-1
), e formato de saída preferencial (geralmente json
):
Imagem 4 – Configuração AWS CLI
Para garantir que tudo esteja conectado corretamente, verifique sua identidade com o seguinte comando:
aws sts get-caller-identity
Se configurado corretamente, você verá os detalhes da sua conta:
Imagem 5 – Comando de conexão de teste AWS CLI
Criando um bucket S3
Finalmente, você precisa criar um bucket S3 para armazenar os arquivos que você irá copiar.
Acesse a seção de serviço S3 em seu Console AWS e clique em “Criar bucket”. Lembre-se de que os nomes dos buckets devem ser globalmente únicos em toda a AWS. Escolha um nome distinto, deixe as configurações padrão por enquanto, e clique em “Criar”:
Imagem 6 – Criação de bucket AWS
Depois de criado, seu novo bucket aparecerá no console. Você também pode confirmar sua existência por meio da linha de comando:
aws s3 ls
Imagem 7 – Todos os buckets S3 disponíveis
Todos os buckets S3 são configurados como privados por padrão, então tenha isso em mente. Se você pretende usar este bucket para arquivos acessíveis publicamente, será necessário modificar as políticas do bucket de acordo.
Agora você está totalmente equipado para começar a usar o comando aws s3 cp
para transferir arquivos. Vamos começar com o básico a seguir.
Sintaxe básica do comando AWS S3 cp
Agora que você tem tudo configurado, vamos mergulhar no uso básico do comando aws s3 cp
. Como de costume com a AWS, a beleza está na simplicidade, mesmo que o comando possa lidar com diferentes cenários de transferência de arquivos.
Em sua forma mais básica, o comando aws s3 cp
segue esta sintaxe:
aws s3 cp <source> <destination> [options]
Onde <origem>
e <destino>
podem ser caminhos de arquivos locais ou URIs do S3 (que começam com s3://
). Vamos explorar os três casos de uso mais comuns.
Copiando um arquivo de local para o S3
Para copiar um arquivo do seu sistema local para um bucket do S3, a origem será um caminho local e o destino será uma URI do S3:
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Este comando faz upload do arquivo test_file.txt
do diretório fornecido para o bucket do S3 especificado. Se a operação for bem-sucedida, você verá uma saída no console como esta:
Imagem 8 – Saída no console após copiar o arquivo local
E, no console de gerenciamento da AWS, você verá seu arquivo carregado:
Imagem 9 – Conteúdo do bucket do S3
Da mesma forma, se você quiser copiar uma pasta local para seu bucket do S3 e colocá-la, digamos, em outra pasta aninhada, execute um comando semelhante a este:
aws s3 cp /Users/dradecic/Desktop/test_folder s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder/ --recursive
Imagem 10 – Conteúdo do bucket do S3 após enviar uma pasta
A flag --recursive
garantirá que todos os arquivos e subpastas dentro da pasta sejam copiados.
Apenas tenha em mente – o S3 na verdade não tem pastas – a estrutura de caminho é apenas parte da chave do objeto, mas funciona conceitualmente como pastas.
Copiando um arquivo do S3 para o local
Para copiar um arquivo do S3 para o seu sistema local, basta inverter a ordem – a origem se torna o URI do S3 e o destino é o seu caminho local:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Este comando baixa test_file.txt
do seu bucket S3 e o salva como downloaded_test_file.txt
no diretório fornecido. Você o verá imediatamente no seu sistema local:
Imagem 11 – Baixando um único arquivo do S3
Se você omitir o nome do arquivo de destino, o comando usará o nome original do arquivo:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .
Imagem 12 – Conteúdo do arquivo baixado
O ponto (.
) representa seu diretório atual, então isso irá baixar test_file.txt
para sua localização atual.
E finalmente, para baixar um diretório inteiro, você pode usar um comando semelhante a este:
aws s3 cp s3://testbucket-aws-cp-dradecic/my-desired-folder/test_folder /Users/dradecic/Documents/test_folder --recursive
Imagem 13 – Conteúdo da pasta baixada
Tenha em mente que a flag --recursive
é essencial ao trabalhar com vários arquivos – sem ela, o comando falhará se a origem for um diretório.
Com esses comandos básicos, você já pode realizar a maioria das tarefas de transferência de arquivos de que precisará. Mas na próxima seção, você aprenderá opções mais avançadas que lhe darão um controle melhor sobre o processo de cópia.
Opções e Recursos Avançados de cp do AWS S3
A AWS oferece algumas opções avançadas que permitem maximizar as operações de cópia de arquivos. Nesta seção, vou mostrar algumas das flags e parâmetros mais úteis que o ajudarão em suas tarefas diárias.
Usando as flags –exclude e –include
Às vezes, você só quer copiar determinados arquivos que correspondem a padrões específicos. As bandeiras --exclude
e --include
permitem que você filtre arquivos com base em padrões e oferecem controle preciso sobre o que é copiado.
Apenas para contextualizar, esta é a estrutura de diretórios com a qual estou trabalhando:
Imagem 14 – Estrutura de diretórios
Agora, digamos que você queira copiar todos os arquivos do diretório, exceto os arquivos .log
:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*.log"
Este comando irá copiar todos os arquivos da pasta advanced_folder
para o S3, excluindo qualquer arquivo com a extensão .log
:
Imagem 15 – Resultados da cópia da pasta
Você também pode combinar vários padrões. Digamos que você queira copiar apenas os arquivos HTML e CSS da pasta do projeto:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exclude "*" --include "*.html" --include "*.css"
Este comando primeiro exclui tudo (--exclude "*"
), em seguida, inclui apenas arquivos com extensões .html
e .css
. O resultado se parece com isso:
Imagem 16 – Resultados da cópia da pasta (2)
Tenha em mente que a ordem das bandeiras é importante – o AWS CLI processa essas bandeiras sequencialmente, então se você colocar --include
antes de --exclude
, você obterá resultados diferentes:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Desta vez, nada foi copiado para o bucket:
Imagem 17 – Resultados da cópia da pasta (3)
Especificando a classe de armazenamento do S3
O Amazon S3 oferece diferentes classes de armazenamento, cada uma com custos e características de recuperação diferentes. Por padrão, aws s3 cp
faz upload de arquivos para a classe de armazenamento Standard, mas você pode especificar uma classe diferente usando a flag --storage-class
:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Este comando faz upload do arquivo large-archive.zip
para a classe de armazenamento Glacier, que é significativamente mais barata, mas tem custos de recuperação mais altos e tempos de recuperação mais longos:
Imagem 18 – Copiando arquivos para o S3 com diferentes classes de armazenamento
As classes de armazenamento disponíveis incluem:
STANDARD
(padrão): Armazenamento de uso geral com alta durabilidade e disponibilidade.REDUCED_REDUNDANCY
(não recomendado mais): Opção de economia de custos com menor durabilidade, agora obsoleta.STANDARD_IA
(Acesso Infrequente): Armazenamento de baixo custo para dados acessados com menor frequência.ONEZONE_IA
(Acesso Infrequente em uma Zona): Armazenamento de baixo custo para acesso infrequente em uma única Zona de Disponibilidade da AWS.INTELLIGENT_TIERING
: Move automaticamente dados entre camadas de armazenamento com base nos padrões de acesso.GLACIER
: Armazenamento de arquivamento de baixo custo para retenção de longo prazo, recuperação em minutos a horas.DEEP_ARCHIVE
: Armazenamento de arquivamento mais barato, recuperação em horas, ideal para backup de longo prazo.
Se você está fazendo backup de arquivos dos quais não precisa de acesso imediato, usar GLACIER
ou DEEP_ARCHIVE
pode economizar significativamente nos custos de armazenamento.
Sincronizando arquivos com a flag –exact-timestamps
Quando você está atualizando arquivos no S3 que já existem, você pode querer copiar apenas os arquivos que foram alterados. A flag --exact-timestamps
ajuda nisso comparando os timestamps entre a origem e o destino.
Aqui está um exemplo:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --exact-timestamps
Com essa flag, o comando irá copiar apenas os arquivos se os timestamps forem diferentes dos arquivos que já estão no S3. Isso pode reduzir o tempo de transferência e o uso de largura de banda quando você está atualizando regularmente um grande conjunto de arquivos.
Então, por que isso é útil? Imagine cenários de implantação onde você deseja atualizar os arquivos da sua aplicação sem transferir desnecessariamente ativos inalterados.
Embora --exact-timestamps
seja útil para realizar algum tipo de sincronização, se você precisa de uma solução mais sofisticada, considere usar aws s3 sync
em vez de aws s3 cp
. O comando sync
foi especificamente projetado para manter diretórios em sincronia e tem capacidades adicionais para esse fim. Eu escrevi tudo sobre o comando sync no Tutorial de Sincronização do AWS S3.
Com essas opções avançadas, agora você tem um controle mais preciso sobre suas operações de arquivos no S3. Você pode direcionar arquivos específicos, otimizar custos de armazenamento e atualizar seus arquivos de forma eficiente. Na próxima seção, você aprenderá a automatizar essas operações usando scripts e tarefas agendadas.
Automatizando Transferências de Arquivos com AWS S3 cp
Até agora, você aprendeu como copiar arquivos manualmente de e para o S3 usando a linha de comando. Uma das maiores vantagens de usar aws s3 cp
é que você pode facilmente automatizar essas transferências, o que economizará muito tempo.
Vamos explorar como você pode integrar o comando aws s3 cp
em scripts e trabalhos agendados para transferências de arquivos sem intervenção manual.
Usando o AWS S3 cp em scripts
Aqui está um exemplo simples de script em bash que faz backup de um diretório no S3, adiciona um carimbo de data e hora ao backup, e implementa tratamento de erros e registro em um arquivo:
#!/bin/bash # Definir variáveis SOURCE_DIR="/Users/dradecic/Desktop/advanced_folder" BUCKET="s3://testbucket-aws-cp-dradecic/backups" DATE=$(date +%Y-%m-%d-%H-%M) BACKUP_NAME="backup-$DATE" LOG_FILE="/Users/dradecic/logs/s3-backup-$DATE.log" # Garantir que o diretório de logs exista mkdir -p "$(dirname "$LOG_FILE")" # Criar o backup e registrar a saída echo "Starting backup of $SOURCE_DIR to $BUCKET/$BACKUP_NAME" | tee -a $LOG_FILE aws s3 cp $SOURCE_DIR $BUCKET/$BACKUP_NAME --recursive 2>&1 | tee -a $LOG_FILE # Verificar se o backup foi bem-sucedido if [ $? -eq 0 ]; then echo "Backup completed successfully on $DATE" | tee -a $LOG_FILE else echo "Backup failed on $DATE" | tee -a $LOG_FILE fi
Salve isso como backup.sh
, torne-o executável com chmod +x backup.sh
, e você terá um script de backup reutilizável!
Você pode então executá-lo com o seguinte comando:
./backup.sh
Imagem 19 – Script sendo executado no terminal
Logo em seguida, a pasta backups
no bucket será populada:
Imagem 20 – Backup armazenado no bucket S3
Vamos levar isso para o próximo nível, executando o script em um agendamento.
Agendando transferências de arquivos com trabalhos cron
Agora que você tem um script, o próximo passo é agendá-lo para ser executado automaticamente em horários específicos.
Se você estiver no Linux ou macOS, você pode usar cron
para agendar seus backups. Veja como configurar um cron job para executar seu script de backup todos os dias à meia-noite:
1. Abra seu crontab para edição:
crontab -e
2. Adicione a seguinte linha para executar seu script diariamente à meia-noite:
0 0 * * * /path/to/your/backup.sh
Imagem 21 – Cron job para executar script diariamente
O formato para cron jobs é minuto hora dia-do-mês mês dia-da-semana comando
. Aqui estão mais alguns exemplos:
- Executar a cada hora:
0 * * * * /caminho/para/seu/backup.sh
- Executar toda segunda-feira às 9h:
0 9 * * 1 /caminho/para/seu/backup.sh
- Executar no dia 1 de todo mês:
0 0 1 * * /caminho/para/seu/backup.sh
E é isso! O script backup.sh
agora será executado no intervalo agendado.
Automatizar suas transferências de arquivos S3 é uma boa opção. É especialmente útil para cenários como:
- Backups diários de dados importantes
- Sincronização de imagens de produtos para um site
- Movendo arquivos de log para armazenamento de longo prazo
- Implantando arquivos de site atualizados
Técnicas de automação como essas ajudarão você a configurar um sistema confiável que lida com transferências de arquivos sem intervenção manual. Você só precisa escrever uma vez e depois pode esquecer.
Na próxima seção, vou cobrir algumas melhores práticas para tornar suas operações aws s3 cp
mais seguras e eficientes.
Melhores Práticas para Usar o AWS S3 cp
Enquanto o comando aws s3 cp
é fácil de usar, as coisas podem dar errado.
Se você seguir as melhores práticas, evitará armadilhas comuns, otimizará o desempenho e manterá seus dados seguros. Vamos explorar essas práticas para tornar suas operações de transferência de arquivos mais eficientes.
Gerenciamento eficiente de arquivos
Ao trabalhar com o S3, organizar seus arquivos de forma lógica economizará tempo e dores de cabeça no futuro.
Primeiramente, estabeleça uma convenção consistente de nomenclatura de bucket e prefixo. Por exemplo, você pode separar seus dados por ambiente, aplicativo ou data:
s3://company-backups/production/database/2023-03-13/ s3://company-backups/staging/uploads/2023-03/
Esse tipo de organização facilita:
- Encontrar arquivos específicos quando você precisar deles.
- Aplicar políticas de bucket e permissões no nível correto.
- Configurar regras de ciclo de vida para arquivar ou excluir dados antigos.
Outra dica: Ao transferir grandes conjuntos de arquivos, considere agrupar primeiro arquivos pequenos juntos (usando zip ou tar) antes de fazer o upload. Isso reduz o número de chamadas de API para o S3, o que pode reduzir os custos e acelerar as transferências.
# Em vez de copiar milhares de pequenos arquivos de log # compacte-os primeiro com tar e depois faça o upload tar -czf example-logs-2025-03.tar.gz /var/log/application/ aws s3 cp example-logs-2025-03.tar.gz s3://testbucket-aws-cp-dradecic/logs/2025/03/
Manuseio de transferências de dados grandes
Ao copiar arquivos grandes ou muitos arquivos de uma vez, existem algumas técnicas para tornar o processo mais confiável e eficiente.
Você pode usar a flag --quiet
para reduzir a saída ao executar scripts:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Isso suprime as informações de progresso para cada arquivo, o que torna os logs mais gerenciáveis. Também melhora ligeiramente o desempenho.
Para arquivos muito grandes, considere usar uploads multipartes com a flag --multipart-threshold
:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
A configuração acima diz ao AWS CLI para dividir arquivos maiores que 100MB em várias partes para upload. Fazer isso tem alguns benefícios:
- Se a conexão cair, apenas a parte afetada precisa ser reenviada.
- As peças podem ser carregadas em paralelo, potencialmente aumentando o rendimento.
- Você pode pausar e retomar uploads grandes.
Ao transferir dados entre regiões, considere usar o Acelerador de Transferência do S3 para uploads mais rápidos:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
O acima encaminha sua transferência pela rede de borda da Amazon, o que pode acelerar significativamente as transferências entre regiões.
Garantindo a segurança
A segurança deve ser sempre uma prioridade máxima ao trabalhar com seus dados na nuvem.
Primeiro, certifique-se de que suas permissões de IAM sigam o princípio do menor privilégio.Apenas conceda as permissões específicas necessárias para cada tarefa.
Aqui está um exemplo de política que você pode atribuir ao usuário:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::testbucket-aws-cp-dradecic/backups/*" } ] }
Esta política permite copiar arquivos para e de apenas o prefixo “backups” no “meu-bucket”.
Uma maneira adicional de aumentar a segurança é habilitar a criptografia para dados sensíveis. Você pode especificar a criptografia do lado do servidor ao fazer upload:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Ou, para mais segurança, use o Serviço de Gerenciamento de Chaves da AWS (KMS):
aws s3 cp secret-data.json s3://testbucket-aws-cp-dradecic/ --sse aws:kms --sse-kms-key-id myKMSKeyId
No entanto, para operações altamente sensíveis, considere usar pontos de extremidade da VPC para o S3. Isso mantém seu tráfego dentro da rede da AWS e evita a internet pública completamente.
Na próxima seção, você aprenderá como solucionar problemas comuns que você pode encontrar ao trabalhar com este comando.
Resolução de Erros AWS S3 cp
Uma coisa é certa – você ocasionalmente encontrará problemas ao trabalhar com aws s3 cp
. No entanto, ao entender os erros comuns e suas soluções, você economizará tempo e frustração quando as coisas não saírem como planejado.
Nesta seção, mostrarei os problemas mais frequentes e como resolvê-los.
Erros comuns e soluções
Erro: “Acesso Negado”
Este é provavelmente o erro mais comum que você encontrará:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
Geralmente isso significa uma das três coisas:
- Seu usuário IAM não tem permissões suficientes para realizar a operação.
- A política do bucket está restringindo o acesso.
- As suas credenciais da AWS expiraram.
Para solucionar:
- Verifique suas permissões IAM para garantir que você tenha as permissões necessárias
s3:PutObject
(para uploads) ous3:GetObject
(para downloads). - Verifique se a política do bucket não está restringindo suas ações.
- Execute
aws configure
para atualizar suas credenciais se elas estiverem expiradas.
Erro: “Arquivo ou diretório não encontrado”
Esse erro ocorre quando o arquivo ou diretório local que você está tentando copiar não existe:
upload failed: ./missing-file.txt to s3://testbucket-aws-cp-dradecic/missing-file.txt An error occurred (404) when calling the PutObject operation: Not Found
A solução é simples – verifique cuidadosamente seus caminhos de arquivo. Os caminhos diferenciam maiúsculas de minúsculas, então tenha isso em mente. Além disso, certifique-se de estar no diretório correto ao usar caminhos relativos.
Erro: “O bucket especificado não existe”
Se você ver esse erro:
upload failed: ./myfile.txt to s3://testbucket-aws-cp-dradecic/myfile.txt An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist
Verifique:
- Possíveis erros no nome do seu bucket.
- Se você está usando a região correta da AWS.
- Se o bucket realmente existe (pode ter sido excluído).
Você pode listar todos os seus buckets com aws s3 ls
para confirmar o nome correto.
Erro: “Conexão expirada”
Problemas de rede podem causar expiração de conexão:
upload failed: ./largefile.zip to s3://testbucket-aws-cp-dradecic/largefile.zip An error occurred (RequestTimeout) when calling the PutObject operation: Request timeout
Para resolver isso:
- Verifique sua conexão com a internet.
- Tente usar arquivos menores ou habilitar uploads multipart para arquivos grandes.
- Considere usar a Aceleração de Transferência da AWS para obter melhor desempenho.
Tratando falhas de upload
Erros são muito mais propensos a ocorrer ao transferir arquivos grandes. Nesse caso, tente lidar com as falhas de forma adequada.
Por exemplo, você pode usar a flag --only-show-errors
para facilitar o diagnóstico de erros em scripts:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/ --recursive --only-show-errors
Isso suprime mensagens de transferências bem-sucedidas, mostrando apenas erros, o que facilita a solução de problemas em transferências grandes.
Para lidar com transferências interrompidas, o comando --recursive
irá pular automaticamente arquivos que já existem no destino com o mesmo tamanho. No entanto, para ser mais minucioso, você pode usar as tentativas embutidas no AWS CLI para problemas de rede definindo essas variáveis de ambiente:
export AWS_RETRY_MODE=standard export AWS_MAX_ATTEMPTS=5 aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/
Isto diz ao AWS CLI para automaticamente tentar novamente operações falhadas até 5 vezes.
Mas para conjuntos de dados muito grandes, considere usar aws s3 sync
em vez de cp
, pois ele foi projetado para lidar melhor com interrupções:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
O comando sync
transferirá apenas arquivos diferentes dos que já estão no destino, tornando-o perfeito para retomar transferências interrompidas de arquivos grandes.
Se você entender esses erros comuns e implementar um tratamento de erros adequado em seus scripts, tornará suas operações de cópia no S3 muito mais robustas e confiáveis.
Resumindo, o comando AWS S3 cp
Para concluir, o comando aws s3 cp
é um ponto de parada para copiar arquivos locais para o S3 e vice-versa.
Você aprendeu tudo sobre isso neste artigo. Você começou com fundamentos e configuração de ambiente, e acabou escrevendo scripts agendados e automatizados para copiar arquivos. Você também aprendeu a lidar com alguns erros e desafios comuns ao mover arquivos, especialmente os grandes.
Portanto, se você é um desenvolvedor, profissional de dados ou administrador de sistemas, acredito que encontrará este comando útil. A melhor maneira de se sentir confortável com ele é usando-o regularmente. Certifique-se de entender os fundamentos e depois dedique algum tempo automatizando partes tediosas do seu trabalho.
Para saber mais sobre a AWS, siga estes cursos da DataCamp:
Você até pode usar a DataCamp para se preparar para os exames de certificação da AWS – Praticante de Nuvem da AWS (CLF-C02).