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.
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.
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.
Para listar os arquivos:
aws s3 ls s3://<bucket-name> --endpoint-url https://s3.hmstorage.net
Para enviar arquivos, use o comando cp. Exemplo:
aws s3 cp test.txt s3://<bucket-name> --endpoint-url https://s3.hmstorage.net
Para excluir um arquivo:
aws s3 rm s3://<bucket-name>/test.txt --endpoint-url https://s3.hmstorage.net
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.
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.
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.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.
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.
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>
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>
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>
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).
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
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%2Fru-1%2Fs3%2Faws4_request&X-Amz-Date=20241113T104406Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=737a677e78f88ab989b1c9b8edb454f70ea8da42e6b79774e68aa0fc6a52cb81