AWS CLI


A AWS CLI é uma interface de linha de comando para trabalhar com serviços da Amazon. Ela fornece um conjunto de comandos para gerenciar arquivos no armazenamento em nuvem.

Instalar AWS CLI
Copiar link

Para instalar a AWS CLI no Ubuntu, use o comando:

sudo apt install awscli -y

Após a instalação, verifique a versão com:

aws --version

Você pode consultar a instalação em outros sistemas operacionais na documentação oficial da AWS.

Configurar AWS CLI
Copiar link

Para configurar a AWS CLI para trabalhar com o nosso armazenamento S3, use:

aws configure

Um prompt interativo solicitará as credenciais de conexão. Informe os dados conforme os valores do seu bucket no painel de controle:

AWS Access Key ID [None]: <Access Key>
AWS Secret Access Key [None]: <Secret Access Key>
Default region name [None]: us-2
Default output format [None]: json

Isso criará um diretório oculto .aws com arquivos config e credentials, que contêm as configurações da AWS e as chaves de autorização, respectivamente.

Trabalhar com arquivos
Copiar link

Listar arquivos em um bucket
Copiar link

Para listar os arquivos:

aws s3 ls s3://<bucket-name> --endpoint-url https://s3.hmstorage.net

Enviar um arquivo local para o bucket
Copiar link

Para enviar arquivos, use o comando cp. Exemplo:

aws s3 cp test.txt s3://<bucket-name> --endpoint-url https://s3.hmstorage.net

Excluir um arquivo no bucket
Copiar link

Para excluir um arquivo:

aws s3 rm s3://<bucket-name>/test.txt --endpoint-url https://s3.hmstorage.net

Sincronizar arquivos
Copiar link

Para sincronizar arquivos entre um diretório local (neste exemplo, o diretório atual .) e o bucket:

aws s3 sync . s3://<bucket-name> --endpoint-url https://s3.hmstorage.net

Para mais informações sobre esses e outros comandos, consulte a documentação da AWS.

Upload multipart
Copiar link

Para realizar um upload multipart com a AWS CLI, utilize o comando aws s3api. O processo envolve criar e concluir o upload multipart em algumas etapas.

Preparar o arquivo
Copiar link

Antes de iniciar, o arquivo deve ser dividido em partes. Use o utilitário split:

split -b <part_size> <path_to_file> <part_name_prefix>
  • <part_size>: tamanho de cada parte (por exemplo, para 5 MB, use 5M)
  • <path_to_file>: caminho para o arquivo fonte
  • <part_name_prefix>: prefixo dos nomes das partes. Por exemplo, se você especificar part, as partes serão nomeadas partaa, partab etc.

Etapa 1. Inicializar o upload
Copiar link

Inicie o upload multipart para obter um UploadId, necessário para os próximos passos:

aws s3api create-multipart-upload --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net --key <file_name_in_bucket>

O comando retornará um UploadId. Salve-o, pois será usado para enviar as partes e concluir o processo.

Etapa 2. Enviar as partes
Copiar link

Use o comando upload-part para enviar cada parte, especificando UploadId, PartNumber e caminho da parte do arquivo. Exemplo para a primeira parte:

aws s3api upload-part --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net --key <file_name_in_bucket> --part-number 1 --body <path_to_part> --upload-id <UploadId>

Repita para cada parte, incrementando --part-number e atualizando --body com a parte correspondente.

Etapa 3. Concluir o upload
Copiar link

Após enviar todas as partes, crie um arquivo JSON com detalhes sobre as partes enviadas, incluindo ETag e PartNumber:

{
  "Parts": [
    {
      "ETag": "<ETag_of_part_1>",
      "PartNumber": 1
    },
    {
      "ETag": "<ETag_of_part_2>",
      "PartNumber": 2
    }
  ]
}

Então, conclua o upload:

aws s3api complete-multipart-upload --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net --key <file_name_in_bucket> --upload-id <UploadId> --multipart-upload file://<path_to_JSON_file>

Cancelar o upload
Copiar link

Para cancelar o upload:

aws s3api abort-multipart-upload --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net --key <file_name_in_bucket> --upload-id <UploadId>

Listar partes do upload multipart
Copiar link

Para verificar as partes enviadas:

aws s3api list-parts --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net --key <file_name_in_bucket> --upload-id <UploadId>

URLs pré-assinadas (Presigned URLs) 
Copiar link

As URLs pré-assinadas permitem criar links temporários para acessar objetos privados no S3. Diferente de alterar a ACL do objeto, essas URLs têm tempo de expiração definido (máximo 7 dias).

Gerar uma URL pré-assinada
Copiar link

Use o comando presign para gerar um link temporário:

aws s3 presign s3://<bucket_name>/<file_path> --endpoint-url https://s3.hmstorage.net

Para definir um tempo de expiração personalizado, utilize a flag --expires-in, que especifica o tempo em segundos (padrão: 3600 segundos):

aws s3 presign s3://<bucket_name>/<file_path> --expires-in <time_in_seconds> --endpoint-url https://s3.hmstorage.net

Como funcionam as URLs pré-assinadas
Copiar link

As URLs pré-assinadas usam o mecanismo padrão de autorização da AWS. A diferença é que os valores de autorização, normalmente enviados nos cabeçalhos, são adicionados à URL como parâmetros de consulta. Isso permite que usuários externos acessem o link via navegador ou outro cliente sem configuração adicional.

Exemplo de URL gerada:

https://s3.hmstorage.net/841b4a72-presigned/README.md?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=4AP1MJKIJFLUJN9ABQZ1%2F20241113%2Fus-2%2Fs3%2Faws4_request&X-Amz-Date=20241113T104406Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=737a677e78f88ab989b1c9b8edb454f70ea8da42e6b79774e68aa0fc6a52cb81