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 -yApós a instalação, verifique a versão com:
aws --versionVocê 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 configureUm 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]: jsonIsso 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.netEnviar 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.netExcluir um arquivo no bucket Copiar link
Para excluir um arquivo:
aws s3 rm s3://<bucket-name>/test.txt --endpoint-url https://s3.hmstorage.netSincronizar 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.netPara 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, use5M)<path_to_file>: caminho para o arquivo fonte<part_name_prefix>: prefixo dos nomes das partes. Por exemplo, se você especificarpart, as partes serão nomeadaspartaa,partabetc.
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.netPara 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.netComo 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