Curso
AWS S3 cp: O guia completo para transferências de arquivos do AWS S3
A cópia manual de arquivos para o armazenamento da AWS pode ser entediante, propensa a erros e ineficiente, especialmente quando você lida com grandes quantidades de dados. Você não quer isso.
A interface de linha de comando (CLI) do AWS oferece uma ferramenta conveniente chamada aws s3 cp
que simplifica esse processo. Esse comando permite que você copie arquivos de e para os buckets do Amazon S3 com comandos simples e com script que funcionam em todos os sistemas operacionais. O uso da CLI do AWS 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 recursivamente diretórios inteiros, filtrar arquivos com base em padrões e até mesmo especificar diferentes classes de armazenamento para otimização de custos.
Neste tutorial, mostrarei tudo o que você precisa saber sobre o uso eficaz do aws s3 cp
, desde comandos básicos até técnicas avançadas e estratégias de automação.
> Você é novo na AWS e não tem certeza sobre o armazenamento em nuvem e o S3? Nosso guia detalhadosobre S3 e EFS é o lugar perfeito para você começar. Se você estiver interessado especificamente no S3, confira nosso guia detalhado sobre o S3.
O que é o AWS S3 cp?
O comando aws s3 cp
é um utilitário da interface de linha de comando do AWS que permite que você copie arquivos entre o sistema local e o armazenamento do Amazon S3.
Essencialmente, ele foi projetado para oferecer uma experiência familiar de linha de comando semelhante ao comando padrão do Linux cp
, mas adaptado para interagir com os buckets do S3.
Em sua essência, o aws s3 cp
conecta sua máquina local à infraestrutura de armazenamento em nuvem da AWS. Quando você executa um comando aws s3 cp
, a CLI do AWS lida com aautenticação e a fragmentação de arquivos para grandes transferências e garante a integridade dos dados durante o processo de cópia. Esse utilitário suporta a cópia de arquivos individuais, vários arquivos usando curingas e estruturas de diretório inteiras usando operações recursivas.
O aws s3 cp
é capaz de muitas coisas, mas 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 a várias classes de armazenamento S3 (Standard, Intelligent-Tiering, Glacier, etc.).
- Filtragem de arquivos usando padrões de inclusão/exclusão.
- Preservação de metadados de 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 únicas de arquivos até soluções complexas e automatizadas de backup.
O comando é diferente de usar o Console de gerenciamento do AWS, que requer navegação manual e cliques. O comando aws s3 cp
pode ser executado diretamente do seu terminal ou incorporado a scripts e fluxos de trabalho automatizados. Esse acesso programático ao S3 é essencial para muitos profissionais de tecnologia, especialmente engenheiros de DevOps e cientistas de dados.
Para concluir, o aws s3 cp
oferece uma solução confiável e com script que pode lidar com transferências maciças e manter 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.
A seguir, orientarei você sobre a parte chata: configurar a CLI do AWS no seu sistema.
Configuração da CLI do AWS e do AWS S3
Antes de se aprofundar no comando aws s3 cp
, você precisa ter a AWS CLI instalada e configurada corretamente no sistema. Não se preocupe se você 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: instalar a ferramenta AWS CLI, configurar suas credenciais e criar seu primeiro bucket S3 para armazenamento.
Instalando a CLI do AWS
O processo de instalação difere um pouco de acordo com o sistema operacional que você está usando.
Para sistemas Windows:
- Navegue até a página oficial da documentação da CLI do AWS
- Baixe o instalador do Windows de 64 bits
- Inicie o arquivo baixado e siga o assistente de instalação
Para sistemas Linux:
Execute os três comandos a seguir 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:
Supondo que você tenha o Homebrew instalado, execute esta linha a partir do Terminal:
brew install awscli
Se você não tiver o Homebrew, use esses dois comandos:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Para confirmar que a instalação foi bem-sucedida, execute aws --version
em seu terminal. Você deverá ver algo parecido com isto:
Imagem 1 - Versão da CLI do AWS
Configuração da CLI do AWS
Com a CLI instalada, é hora de configurar suas credenciais do AWS para autenticação.
Primeiro, acesse sua conta do AWS e navegue até o painel de serviços do IAM. Crie um novo usuário com acesso programático e anexe a política de permissões S3 apropriada:
Imagem 2 - Usuário do AWS IAM
Em seguida, acesse a guia "Credenciais de segurança" e gere um novo par de chaves de acesso. Certifique-se de salvar o ID da chave de acesso e a chave de acesso secreta em algum lugar seguro - a Amazon não mostrará a você a chave secreta novamente após essa tela:
Imagem 3 - Credenciais de usuário do AWS IAM
Agora, abra o terminal e execute o comando aws configure
. Você será solicitado a fornecer quatro informações: o ID da chave de acesso, a chave de acesso secreta, a região padrão (estou usando eu-central-1
) e o formato de saída preferido (normalmente json
):
Imagem 4 - Configuração da CLI do AWS
Para ter certeza de que tudo está 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 da CLI da AWS
Criando um bucket S3
Por fim, você precisa criar um bucket S3 para armazenar os arquivos que serão copiados.
Vá para a seção de serviço S3 no Console do AWS e clique em "Criar bucket". Lembre-se de que os nomes dos buckets devem ser globalmente exclusivos em toda a AWS. Escolha um nome distinto, deixe as configurações padrão por enquanto e clique em "Create" (Criar):
Imagem 6 - Criação de um balde do 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, portanto, tenha isso em mente. Se você pretende usar esse bucket para arquivos acessíveis ao público, precisará 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 cp do AWS S3
Agora que você tem tudo configurado, vamos nos aprofundar no uso básico do comando aws s3 cp
. Como de costume na AWS, a beleza está na simplicidade, embora 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]
Em que
e podem ser caminhos de arquivos locais ou URIs S3 (que começam com
s3://
). Vamos explorar os três casos de uso mais comuns.
Copiar um arquivo do 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á um URI do S3:
aws s3 cp /Users/dradecic/Desktop/test_file.txt s3://testbucket-aws-cp-dradecic/test_file.txt
Esse comando faz o upload do arquivo test_file.txt
do diretório fornecido para o bucket S3 especificado. Se a operação for bem-sucedida, você verá uma saída do console como esta:
Imagem 8 - Saída do console após a cópia do arquivo local
E, no console de gerenciamento do AWS, você verá o arquivo carregado:
Imagem 9 - Conteúdo do bucket S3
Da mesma forma, se você quiser copiar uma pasta local para o seu bucket 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 S3 após o upload de uma pasta
O sinalizador --recursive
garantirá que todos os arquivos e subpastas dentro da pasta sejam copiados.
Lembre-se de que o S3 não tem pastas de fato - a estrutura do 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 caminho local:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt /Users/dradecic/Documents/s3-data/downloaded_test_file.txt
Esse comando faz o download de test_file.txt
do seu bucket S3 e o salva como downloaded_test_file.txt
no diretório fornecido. Você o verá imediatamente em 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 do arquivo original:
aws s3 cp s3://testbucket-aws-cp-dradecic/test_file.txt .
Imagem 12 - Conteúdo do arquivo baixado
O ponto (.
) representa o seu diretório atual, portanto, você fará o download de test_file.txt
para o seu local atual.
E, por fim, 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
Lembre-se de que o sinalizador --recursive
é essencial ao trabalhar com vários arquivos - sem ele, o comando falhará se a fonte 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 maior controle sobre o processo de cópia.
Opções e recursos avançados do AWS S3 cp
O AWS oferece algumas opções avançadas que permitem a você maximizar as operações de cópia de arquivos. Nesta seção, mostrarei alguns dos sinalizadores e parâmetros mais úteis que ajudarão você em suas tarefas diárias.
Usando os sinalizadores --exclude e --include
Às vezes, você deseja copiar apenas determinados arquivos que correspondam a padrões específicos. Os sinalizadores --exclude
e --include
permitem que você filtre arquivos com base em padrões e oferecem controle preciso sobre o que é copiado.
Apenas para preparar o cenário, esta é a estrutura de diretórios com a qual estou trabalhando:
Figura 14 - Estrutura do diretório
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"
Esse comando copiará todos os arquivos do diretório 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"
Esse comando primeiro exclui tudo (--exclude "*"
) e, em seguida, inclui apenas os arquivos com as extensões .html
e .css
. O resultado é o seguinte:
Imagem 16 - Resultados da cópia da pasta (2)
Lembre-se de que a ordem dos sinalizadores é importante - a CLI do AWS processa esses sinalizadores sequencialmente, portanto, se você colocar --include
antes de --exclude
, obterá resultados diferentes:
aws s3 cp /Users/dradecic/Desktop/advanced_folder s3://testbucket-aws-cp-dradecic/advanced_folder/ --recursive --include "*.html" --include "*.css" --exclude "*"
Dessa vez, nada foi copiado para o balde:
Imagem 17 - Resultados da cópia da pasta (3)
Especificando a classe de armazenamento S3
O Amazon S3 oferece diferentes classes de armazenamento, cada uma com diferentes custos e características de recuperação. Por padrão, o aws s3 cp
faz upload de arquivos para a classe de armazenamento Standard, mas você pode especificar uma classe diferente usando o sinalizador --storage-class
:
aws s3 cp /Users/dradecic/Desktop/large-archive.zip s3://testbucket-aws-cp-dradecic/archives/ --storage-class GLACIER
Esse comando faz upload de 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 - Cópia de arquivos para o S3 com diferentes classes de armazenamento
As classes de armazenamento disponíveis incluem:
STANDARD
(padrão): Armazenamento para fins gerais com alta durabilidade e disponibilidade.REDUCED_REDUNDANCY
(não é mais recomendado): Baixa durabilidade, opção de economia de custos, agora obsoleta.STANDARD_IA
(Acesso infrequente): Armazenamento de baixo custo para dados acessados com menos frequência.ONEZONE_IA
(Acesso infrequente de zona única): Armazenamento de acesso pouco frequente e de baixo custo em uma única zona de disponibilidade do AWS.INTELLIGENT_TIERING
: Mova automaticamente os dados entre os níveis de armazenamento com base nos padrões de acesso.GLACIER
: Armazenamento de arquivo de baixo custo para retenção de longo prazo, recuperação em minutos ou horas.DEEP_ARCHIVE
: Armazenamento de arquivo mais barato, recuperação em poucas horas, ideal para backup de longo prazo.
Se você estiver fazendo backup de arquivos aos quais não precisa de acesso imediato, usar GLACIER
ou DEEP_ARCHIVE
pode economizar custos significativos de armazenamento.
Sincronização de arquivos com o sinalizador --exact-timestamps
Quando você estiver atualizando arquivos no S3 que já existem, talvez queira copiar apenas os arquivos que foram alterados. O sinalizador --exact-timestamps
ajuda com isso, comparando os registros de data e hora 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 esse sinalizador, o comando só copiará os arquivos se seus registros de data e hora forem diferentes dos arquivos já existentes no S3. Isso pode reduzir o tempo de transferência e o uso da largura de banda quando você atualiza regularmente um grande conjunto de arquivos.
Então, por que isso é útil? Imagine cenários de implementação em que você deseja atualizar os arquivos do aplicativo sem transferir desnecessariamente ativos inalterados.
Embora --exact-timestamps
seja útil para executar algum tipo de sincronização, se você precisar de uma solução mais sofisticada, considere usar aws s3 sync
em vez de aws s3 cp
. O comando sync
foi projetado especificamente para manter os diretórios sincronizados e tem recursos adicionais para essa finalidade. Escrevi tudo sobre o comando sync no tutorial AWS S3 Sync.
Com essas opções avançadas, agora você tem um controle muito mais preciso sobre as operações de arquivos S3. Você pode direcionar arquivos específicos, otimizar os custos de armazenamento e atualizar seus arquivos com eficiência. Na próxima seção, você aprenderá a automatizar essas operações usando scripts e tarefas agendadas.
Automatizando as transferências de arquivos com o AWS S3 cp
Até agora, você aprendeu a copiar manualmente arquivos de e para o S3 usando a linha de comando. Uma das maiores vantagens de usar o aws s3 cp
é que você pode automatizar facilmente 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.
Usando o AWS S3 cp em scripts
Aqui está um exemplo simples de script bash que faz backup de um diretório no S3, adiciona um registro de data e hora ao backup e implementa o tratamento de erros e o registro em um arquivo:
#!/bin/bash
# Set variables
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"
# Ensure the logs directory exists
mkdir -p "$(dirname "$LOG_FILE")"
# Create the backup and log the output
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
# Check if the backup was successful
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-o como backup.sh
, torne-o executável com chmod +x backup.sh
e você terá um script de backup reutilizável!
Em seguida, você pode executá-lo com o seguinte comando:
./backup.sh
Imagem 19 - Script em execução no terminal
Imediatamente depois, a pasta backups
no bucket será preenchida:
Imagem 20 - Backup armazenado no bucket S3
Vamos levar isso para o próximo nível, executando o script em uma programação.
Agendamento de transferências de arquivos com trabalhos cron
Agora que você tem um script, a próxima etapa é programá-lo para ser executado automaticamente em horários específicos.
Se você estiver no Linux ou no macOS, poderá usar o site cron
para agendar seus backups. Veja como configurar um trabalho cron para executar o 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 - Trabalho Cron para executar o script diariamente
O formato dos trabalhos cron é minute hour day-of-month month day-of-week command
. Aqui estão mais alguns exemplos:
- Funciona a cada hora:
0 * * * * /path/to/your/backup.sh
- Você pode participar todas as segundas-feiras às 9 horas:
0 9 * * 1 /path/to/your/backup.sh
- Você pode participar no dia 1º de cada mês:
0 0 1 * * /path/to/your/backup.sh
E é isso! O script backup.sh
agora será executado no intervalo programado.
Automatizar as transferências de arquivos do S3 é um caminho a seguir. É especialmente útil para cenários como:
- Backups diários de dados importantes
- Sincronização de imagens de produtos em um site
- Mover arquivos de registro para armazenamento de longo prazo
- Implementação de 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 escrevê-la uma vez e depois pode esquecê-la.
Na próxima seção, abordarei algumas práticas recomendadas para tornar suas operações em aws s3 cp
mais seguras e eficientes.
Práticas recomendadas para usar o AWS S3 cp
Embora o comando aws s3 cp
seja fácil de usar, as coisas podem dar errado.
Se você seguir as práticas recomendadas, evitará as 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 poupará tempo e dores de cabeça no futuro.
Primeiro, 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 para você:
- Localize arquivos específicos quando você precisar deles.
- Aplique políticas e permissões de balde no nível certo.
- Configure regras de ciclo de vida para arquivar ou excluir dados antigos.
Outra dica: Ao transferir grandes conjuntos de arquivos, considere agrupar os arquivos pequenos primeiro (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.
# Instead of copying thousands of small log files
# tar them first, then 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 grandes transferências de dados
Quando você estiver copiando arquivos grandes ou muitos arquivos de uma vez, há algumas técnicas para tornar o processo mais confiável e eficiente.
Você pode usar o sinalizador --quiet
para reduzir a saída ao executar em scripts:
aws s3 cp large-directory/ s3://testbucket-aws-cp-dradecic/backups/ --recursive --quiet
Isso suprime as informações de progresso de cada arquivo, o que torna os registros mais gerenciáveis. Isso também melhora um pouco o desempenho.
Para arquivos muito grandes, considere o uso de uploads de várias partes com o sinalizador --multipart-threshold
:
aws s3 cp huge-file.iso s3://testbucket-aws-cp-dradecic/backups/ --multipart-threshold 100MB
A configuração acima diz à CLI do AWS para dividir arquivos maiores que 100 MB em várias partes para upload. Isso traz alguns benefícios:
- Se a conexão cair, somente a parte afetada precisará ser tentada novamente.
- As peças podem ser carregadas em paralelo, aumentando potencialmente o rendimento.
- Você pode pausar e retomar uploads grandes.
Quando você transferir dados entre regiõesconsidere usar o S3 Transfer Acceleration para fazer uploads mais rápidos:
aws s3 cp large-file.zip s3://testbucket-aws-cp-dradecic/backups/ --endpoint-url https://s3-accelerate.amazonaws.com
A opção acima encaminha sua transferência por meio da rede de borda da Amazon, o que pode acelerar significativamente as transferências entre regiões.
Garantia de segurança
A segurança deve ser sempre uma prioridade máxima quando você trabalha com seus dados na nuvem.
Primeiro, verifique se as permissões do IAM seguem o princípio do menor privilégio. Conceda apenas 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/*"
}
]
}
Essa política permite copiar arquivos de e para apenas o prefixo "backups" em "my-bucket".
Uma maneira adicional de aumentar a segurança é ativar a criptografia para dados confidenciais. Você pode especificar a criptografia no lado do servidor ao fazer o upload:
aws s3 cp confidential.docx s3://testbucket-aws-cp-dradecic/ --sse AES256
Ou, para maior segurança, use o AWS Key Management Service (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 confidenciais, considere o uso de endpoints de VPC para o S3. Isso mantém seu tráfego dentro da rede da AWS e evita totalmente a Internet pública.
Na próxima seção, você aprenderá a solucionar problemas comuns que poderá encontrar ao trabalhar com esse comando.
Solução de problemas de erros de cp do AWS S3
Uma coisa é certa: você ocasionalmente terá problemas ao trabalhar com aws s3 cp
. Mas, 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 a você os problemas mais frequentes e como corrigi-los.
Erros comuns e correções
Erro: "Acesso negado"
Esse é 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
Isso geralmente significa uma de três coisas:
- Seu usuário IAM não tem permissões suficientes para realizar a operação.
- A política de balde está restringindo o acesso.
- Suas credenciais do AWS expiraram.
Para solucionar problemas:
- Verifique suas permissões de IAM para garantir que você tenha as permissões necessárias
s3:PutObject
(para uploads) ous3:GetObject
(para downloads). - Verifique se a política de bucket não está restringindo suas ações.
- Execute
aws configure
para atualizar suas credenciais se elas tiverem expirado.
Erro: "Não existe tal arquivo ou diretório"
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 os caminhos dos arquivos. Os caminhos diferenciam maiúsculas de minúsculas, portanto, tenha isso em mente. Além disso, verifique se você está no diretório correto ao usar caminhos relativos.
Erro: "O intervalo especificado não existe"
Se você vir 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 se você tem:
- Erros de digitação no nome do seu balde.
- Se você está usando a região correta do AWS.
- Se o bucket realmente existir (ele pode ter sido excluído).
Você pode listar todos os seus buckets com aws s3 ls
para confirmar o nome correto.
Erro: "Connection timed out"
Problemas de rede podem causar tempos limite 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 ativar uploads de várias partes para arquivos grandes.
- Considere o uso do AWS Transfer Acceleration para melhorar o desempenho.
Tratamento de falhas de upload
É muito mais provável que ocorram erros durante a transferência de arquivos grandes. Quando esse for o caso, tente lidar com as falhas de forma graciosa.
Por exemplo, você pode usar o sinalizador --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 as mensagens de transferências bem-sucedidas, mostrando apenas os erros, o que facilita muito a solução de problemas de transferências grandes.
Para lidar com transferências interrompidas, o comando --recursive
ignorará automaticamente os arquivos que já existem no destino com o mesmo tamanho. No entanto, para ser mais minucioso, você pode usar as novas tentativas integradas da CLI do AWS 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/
Isso instrui a CLI do AWS a repetir automaticamente as operações com falha até 5 vezes.
Porém, para conjuntos de dados muito grandes, considere usar aws s3 sync
em vez de cp
, pois ele foi projetado para lidar melhor com as interrupções:
aws s3 sync large-directory/ s3://testbucket-aws-cp-dradecic/large-directory/
O comando sync
só transferirá arquivos diferentes dos que já estão no destino, o que o torna perfeito para retomar transferências grandes interrompidas.
Se você entender esses erros comuns e implementar o tratamento adequado de erros em seus scripts, tornará suas operações de cópia do S3 muito mais robustas e confiáveis.
Resumindo o AWS S3 cp
Para concluir, o comando aws s3 cp
é uma ferramenta completa para copiar arquivos locais para o S3 e vice-versa.
Você aprendeu tudo sobre isso neste artigo. Você começou com os fundamentos e a configuração do ambiente e acabou escrevendo scripts programados 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ê for um desenvolvedor, profissional de dados ou administrador de sistemas, acho que esse comando será útil. A melhor maneira de você se sentir confortável com ele é usá-lo regularmente. Certifique-se de que você entenda os fundamentos e, em seguida, passe algum tempo automatizando partes tediosas do seu trabalho.
Para saber mais sobre a AWS, siga estes cursos da DataCamp:
Você pode até mesmo usar a DataCamp para se preparar para os exames de certificação da AWS - AWS Cloud Practitioner (CLF-C02).
Perguntas frequentes
O que é o comando aws s3 cp e para que ele pode ser usado?
O comando aws s3 cp
é um utilitário da interface de linha de comando do AWS que permite que você copie arquivos entre o sistema local e o armazenamento do Amazon S3. Ele foi projetado para oferecer uma experiência familiar de linha de comando semelhante ao comando cp padrão do Linux, mas adaptado para interagir com os buckets do S3. Você pode usá-lo para transferências bidirecionais, cópia recursiva de estruturas de diretórios inteiras, filtragem de arquivos com base em padrões e até mesmo especificação de diferentes classes de armazenamento para otimização de custos. Ele é particularmente útil para engenheiros de DevOps, cientistas de dados e administradores de sistemas que precisam gerenciar dados em buckets S3 com eficiência.
Como faço para configurar a CLI do AWS para usar o comando aws s3 cp?
A configuração da CLI do AWS para usar o comando aws s3 cp envolve a instalação da CLI do AWS em seu sistema, a configuração com suas credenciais do AWS e a criação de um bucket do S3. O processo de instalação varia um pouco, dependendo do seu sistema operacional (Windows, Linux ou macOS). Após a instalação, você precisará executar o comando aws configure e fornecer o ID da chave de acesso, a chave de acesso secreta, a região padrão e o formato de saída preferido. Por fim, você precisará criar um bucket S3 por meio do Console de gerenciamento do AWS ou usando diretamente a CLI do AWS.
Quais são a sintaxe básica e os casos de uso comuns do aws s3 cp?
A sintaxe básica do aws s3 cp é aws s3 cp
, em que a origem e o destino podem ser caminhos de arquivos locais ou URIs do S3 (começando com s3://
). Os casos de uso comuns incluem o upload de um arquivo do seu sistema local para o S3, o download de um arquivo do S3 para o seu sistema local e a cópia de diretórios inteiros recursivamente usando o sinalizador --recursive
. Você também pode usar o comando para copiar arquivos entre diferentes compartimentos do S3, especificar nomes diferentes para os arquivos de destino e organizar arquivos em estruturas de "pastas" aninhadas nos compartimentos.
Como posso usar os sinalizadores --exclude e --include para filtrar arquivos específicos?
Os sinalizadores --exclude
e --include
permitem que você filtre arquivos com base em padrões ao usar o aws s3 cp, fornecendo controle preciso sobre o que é copiado. Por exemplo, você pode copiar todos os arquivos de um diretório, exceto aqueles com extensões específicas (como --exclude "*.log"
), ou pode direcionar apenas tipos de arquivos específicos (como --include "*.html" --include "*.css"
após excluir primeiro tudo com --exclude "*"
). A ordem desses sinalizadores é muito importante, pois a CLI do AWS os processa sequencialmente. Isso possibilita a criação de regras de filtragem sofisticadas para cenários complexos de transferência de arquivos.
Qual é a diferença entre o aws s3 cp com --exact-timestamps e o aws s3 sync?
Embora ambos os comandos possam ser usados para atualizar arquivos no S3, eles têm propósitos e comportamentos diferentes. O comando aws s3 cp com o sinalizador --exact-timestamps
copiará os arquivos somente se os registros de data e hora forem diferentes dos que já estão no S3, o que pode reduzir o tempo de transferência e o uso de largura de banda ao atualizar arquivos. No entanto, o aws s3 sync foi projetado especificamente para manter os diretórios sincronizados e oferece recursos de sincronização mais sofisticados. Se você precisar atualizar regularmente grandes conjuntos de arquivos e quiser transferir apenas o que foi alterado, o aws s3 sync geralmente é a melhor opção, embora o aws s3 cp com --exact-timestamps possa funcionar para necessidades de sincronização mais simples.
Saiba mais sobre a AWS com estes cursos!
Curso
Introdução ao AWS Boto em Python
Curso
Conceitos de segurança e gerenciamento de custos da AWS
blog
AWS Certified Cloud Practitioner: um guia completo

Srujana Maddula
13 min
Tutorial
Tutorial de armazenamento do AWS: Uma introdução prática ao S3 e ao EFS
Tutorial
Primeiros passos com o AWS Athena: Um guia prático para iniciantes

Tim Lu
15 min
Tutorial
Um guia completo para armazenamento de dados no AWS com o Redshift
Tutorial
O guia completo para machine learning na AWS com o Amazon SageMaker
Tutorial
Tutorial de push e pull do GIT
Olivia Smith
13 min