Login
Login
Atualizado em 26 de February de 2026

Uma URL presignada no S3 permite acesso temporário a um objeto no armazenamento sem precisar alterar as permissões de acesso do objeto. É uma ferramenta prática para permitir que usuários de terceiros façam download de arquivos. Neste artigo, veremos como criar uma URL presignada de duas maneiras: no painel de controle da Hostman ou via AWS CLI.

Pelo painel de controle da Hostman

A geração de URL presignada está disponível apenas para buckets privados. Para gerar uma URL presignada:

  1. Vá até a seção Armazenamento S3 e clique no bucket.
  2. Na aba Objetos, passe o cursor sobre o objeto e clique no botão Link do arquivo.

Fbdee33e Dc4f 4c5e 84fc D194ba675ec7

O link será copiado para a área de transferência e permanecerá ativo por 60 minutos. Depois disso, o link retornará um erro 403. O painel de controle não permite alterar esse parâmetro.

Você também pode gerar um link para uma versão específica do objeto se o versionamento estiver habilitado no bucket. Para isso:

  1. Clique nos três pontos ao lado do objeto e selecione Histórico de versões
  2. Сlique em Link do arquivo ao lado da versão desejada.

Via AWS CLI

Você pode criar uma URL presignada usando a AWS CLI com o seguinte comando:

aws s3 presign s3://<bucket>/<object> --expires-in 60 --endpoint-url https://s3.hmstorage.net

O parâmetro --expires-in é opcional. Ele define por quanto tempo o objeto ficará disponível pelo link (em segundos). Se o parâmetro não for especificado, o objeto ficará disponível por 3600 segundos (1 hora).

As ferramentas padrão não oferecem suporte à geração de uma URL presignada para uma versão diferente da atual. Para criar um link para uma versão específica do objeto, você pode usar scripts personalizados. Por exemplo, o seguinte script em Python pode ser usado:

#!/usr/bin/env python3
import argparse
import boto3

parser = argparse.ArgumentParser()
parser.add_argument('--bucket', required=True)
parser.add_argument('--key', required=True)
parser.add_argument('--expires-in', type=int, default=3600)
parser.add_argument('--version-id')
parser.add_argument('--method', default='get_object')
args = parser.parse_args()

client = boto3.client('s3', endpoint_url='https://s3.hmstorage.net')
params = {'Bucket': args.bucket, 'Key': args.key}

if args.version_id:
    params.update({'VersionId': args.version_id})

url = client.generate_presigned_url(args.method, Params=params, ExpiresIn=args.expires_in)

print(url)

Execute o script com:

python ./main.py --bucket <bucket-name> --key <object-key> --expires-in 6969 --version-id <object-version>

Onde:

  • --expires-in é o tempo em segundos até o link expirar.
  • --version-id é a versão do objeto (VersionId), que pode ser obtida, por exemplo, via AWS CLI.

O script usará as credenciais de autenticação de ~/.aws/credentials.

Gerar uma URL presignada para upload de objeto

Você pode gerar previamente uma URL presignada para enviar um objeto, mesmo que o objeto ainda não exista no bucket. Ferramentas padrão como a AWS CLI não oferecem suporte a isso, mas é possível fazer usando um SDK, como o boto3 para Python.

Exemplo de script:

import boto3
from botocore.client import Config

# Enter your credentials
AWS_ACCESS_KEY_ID = 'S3 Access Key'
AWS_SECRET_ACCESS_KEY = 'S3 Secret Access Key'
BUCKET_NAME = 'Bucket Name'
OBJECT_KEY = 'example.txt'  # name of the future object
EXPIRES_IN = 3600  # link expiration time in seconds

s3 = boto3.client(
    's3',
    endpoint_url='https://s3.hmstorage.net',
    aws_access_key_id=AWS_ACCESS_KEY_ID,
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
    config=Config(signature_version='s3v4'),
    region_name='us-2'
)

# Generate presigned URL
url = s3.generate_presigned_url(
    ClientMethod='put_object',
    Params={
        'Bucket': BUCKET_NAME,
        'Key': OBJECT_KEY,
    },
    ExpiresIn=EXPIRES_IN
)

print(url)

Não é necessário especificar Content-Type ao gerar o link, pois incluí-lo pode causar um erro.

Depois de executar o script, será gerado um link temporário para upload.

Você pode enviar o arquivo usando curl:

curl -X PUT -T /path/to/file.txt -H "Content-Type: text/plain" "<presigned-url-from-script>"
Esta página foi útil?
Atualizado em 26 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support