Compartilhar objetos com URLs pré-assinados - Amazon Simple Storage Service

Compartilhar objetos com URLs pré-assinados

Por padrão, todos os objetos do Amazon S3 são privados, somente o proprietário dos objetos tem permissão para acessá-los. No entanto, o proprietário dos objetos pode compartilhá-los com outras pessoas criando um URL pré-assinado. Um URL pré-assinado usa credenciais de segurança para conceder permissão por tempo limitado para baixar objetos. O URL pode ser inserido em um navegador ou usado por um programa para baixar o objeto. As credenciais usadas pelo URL pré-assinado são as do usuário da AWS que gerou o URL.

Para obter informações gerais sobre URLs pré-assinados, consulte Baixar e fazer upload de objetos com URLs pré-assinados.

É possível criar um URL pré-assinado para compartilhar um objeto sem escrever nenhum código usando o console do Amazon S3, o AWS Explorer for Visual Studio (Windows) ou AWS Toolkit for Visual Studio Code. Também é possível gerar um URL pré-assinado programaticamente usando a AWS Command Line Interface (AWS CLI) ou AWS SDKs.

É possível usar o console do Amazon S3 para gerar um URL pré-assinado para compartilhar um objeto seguindo estas etapas. Ao usar o console, o tempo máximo de validade de um URL pré-assinado é de 12 horas a partir do momento da criação.

Para gerar um URL pré-assinado usando o console do Amazon S3
  1. Faça login no AWS Management Console e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. No painel de navegação à esquerda, escolha Buckets de uso geral.

  3. Na lista Buckets de uso geral, escolha o nome do bucket de uso geral que contém o objeto para o qual você deseja obter um URL pré-assinado.

  4. Na lista Objects (Objetos), selecione o objeto para o qual deseja criar um URL pré-assinado.

  5. No menu Ações de objeto, escolha Compartilhar com um URL pré-assinado.

  6. Especifique por quanto tempo deseja que o URL pré-assinado seja válido.

  7. Escolha Create presigned URL (Criar URL pré-assinado).

  8. Quando uma confirmação é exibida, o URL é copiado automaticamente para a área de transferência. Você verá um botão para copiar o URL pré-assinado se precisar copiá-lo novamente.

O exemplo do comando da AWS CLI a seguir gera um URL pré-assinado para compartilhar um objeto de um bucket do Amazon S3. Ao usar a AWS CLI, o tempo máximo de validade de um URL pré-assinado é de sete dias a partir do momento da criação. Para usar esse exemplo, substitua os user input placeholders por suas próprias informações.

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800

nota

Para todas as Regiões da AWS lançadas após 20 de março de 2019, você precisa especificar o endpoint-url e a Região da AWS com a solicitação. Para obter uma lista de todos os endpoints e as regiões do Amazon S3, consulte Regiões e endpoints na Referência geral da AWS.

aws s3 presign s3://amzn-s3-demo-bucket/mydoc.txt --expires-in 604800 --region af-south-1 --endpoint-url https://s3.af-south-1.amazonaws.com

Para obter mais informações, consulte presign na Referência de comandos da AWS CLI.

Também é possível gerar um URL pré-assinado programaticamente usando SDKs da AWS.

Python

O script do Python a seguir gera um URL GET pré-assinado para compartilhar um objeto.

  1. Copie o conteúdo do script e salve-o como arquivo “get-only-url.py”. Para usar os exemplos a seguir, substitua os espaços reservados para entrada do usuário por suas próprias informações (como o nome de seu arquivo).

    import argparse import boto3 from botocore.exceptions import ClientError def generate_presigned_url(s3_client, client_method, method_parameters, expires_in): """ Generate a presigned Amazon S3 URL that can be used to perform an action. :param s3_client: A Boto3 Amazon S3 client. :param client_method: The name of the client method that the URL performs. :param method_parameters: The parameters of the specified client method. :param expires_in: The number of seconds the presigned URL is valid for. :return: The presigned URL. """ try: url = s3_client.generate_presigned_url( ClientMethod=client_method, Params=method_parameters, ExpiresIn=expires_in ) except ClientError: print(f"Couldn't get a presigned URL for client method '{client_method}'.") raise return url def main(): parser = argparse.ArgumentParser() parser.add_argument("bucket", help="The name of the bucket.") parser.add_argument( "key", help="The key (path and filename) in the S3 bucket.", ) args = parser.parse_args() # By default, this will use credentials from ~/.aws/credentials s3_client = boto3.client("s3") # The presigned URL is specified to expire in 1000 seconds url = generate_presigned_url( s3_client, "get_object", {"Bucket": args.bucket, "Key": args.key}, 1000 ) print(f"Generated GET presigned URL: {url}") if __name__ == "__main__": main()
  2. Para gerar um URL GET pré-assinado para compartilhar um arquivo, execute o script a seguir com o nome do bucket e o caminho do objeto desejado.

    O comando a seguir usa exemplo de valores. Substitua os espaços reservados para entrada do usuário por suas próprias informações.

    python get-only-url.py amzn-s3-demo-bucket <object-path>

    O script exibirá um URL GET pré-assinado:

    Generated GET presigned URL: https://amzn-s3-demo-bucket.s3.amazonaws.com/object.txt?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Signature=vjbyNxybdZaMmLa%2ByT372YEAiv4%3D&Expires=1741978496
  3. Agora você pode baixar o arquivo usando o URL pré-assinado gerado com curl:

    curl -X GET "generated-presigned-url" -o "path/to/save/file"

Para obter exemplos de uso de SDKs da AWS para gerar um URL pré-assinado e compartilhar um objeto, consulte Create a presigned URL for Amazon S3 by using an AWS SDK.

nota

Para todas as Regiões da AWS lançadas após 20 de março de 2019, você precisa especificar o endpoint-url e a Região da AWS com a solicitação. Para obter uma lista de todos os endpoints e as regiões do Amazon S3, consulte Regiões e endpoints na Referência geral da AWS.

nota

Ao usar AWS SDKs, o atributo de marcação deve ser um cabeçalho e não um parâmetro de consulta. Todos os outros atributos podem ser transmitidos como um parâmetro para o URL pré-assinado.

nota

No momento, o AWS Toolkit for Visual Studio não é compatível com o Visual Studio para Mac.

  1. Instale o AWS Toolkit for Visual Studio usando as instruções a seguir, Installing and setting up the Toolkit for Visual Studio no Guia do usuário do AWS Toolkit for Visual Studio.

  2. Conecte-se à AWS usando as etapas a seguir, Conectar-se ao AWS no Guia do usuário do AWS Toolkit for Visual Studio.

  3. No painel do lado esquerdo chamado AWS Explorer, clique duas vezes no bucket que contém seu objeto.

  4. Clique com o botão direito do mouse no objeto para o qual você deseja gerar um URL pré-assinado e selecione Criar URL pré-assinado….

  5. Na janela pop-up, defina a data e hora de validade para o URL pré-assinado.

  6. A Chave de objeto deve ser preenchida previamente com base no objeto selecionado.

  7. Escolha GET para especificar que esse URL pré-assinado será usado para baixar um objeto.

  8. Escolha o botão Generate (Gerar).

  9. Para copiar o URL para a área de transferência, escolha Copy (Copiar).

  10. Para usar o URL pré-assinado gerado, cole o URL em qualquer navegador.

Se estiver usando o Visual Studio Code, você poderá gerar um URL pré-assinado para compartilhar um objeto sem escrever nenhum código usando o AWS Toolkit for Visual Studio Code. Para obter informações gerais, consulte AWS Toolkit for Visual Studio Code no Guia do usuário do AWS Toolkit for Visual Studio Code.

Para obter instruções sobre como instalar o AWS Toolkit for Visual Studio Code, consulte Instalar o AWS Toolkit for Visual Studio Code no Guia do usuário do AWS Toolkit for Visual Studio Code.

  1. Conecte-se à AWS usando as etapas a seguir, Conectar-se ao AWS Toolkit for Visual Studio Code no Guia do usuário do AWS Toolkit for Visual Studio Code.

  2. Selecione o logotipo da AWS no painel esquerdo do Visual Studio Code.

  3. Em EXPLORER, selecione S3.

  4. Escolha um bucket e um arquivo e abra o menu de contexto (clique com o botão direito do mouse).

  5. Escolha Gerar URL pré-assinado e defina o tempo de validade (em minutos).

  6. Pressione Enter e o URL pré-assinado será copiado para a área de transferência.