

# Compartilhar objetos com URLs pré-assinados
<a name="ShareObjectPreSignedURL"></a>

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](using-presigned-url.md).

É 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.

## Usar o console do S3
<a name="generating-presigned-url"></a>

 É possível usar o console do Amazon S3 para gerar um URL pré-assinado para compartilhar um objeto com até 5 TB seguindo as etapas abaixo. 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 Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

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

1. 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.

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

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

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

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

1. 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.

## Como usar o AWS CLI
<a name="ShareObjectPresignedCLI"></a>

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
```

O parâmetro `--expires-in` especifica o tempo de expiração em segundos.



**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](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) 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 ter mais informações, consulte [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/presign.html) na *Referência de comandos da AWS CLI*.

## Usar SDKs da AWS
<a name="ShareObjectPreSignedURLSDK"></a>

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()
   ```

1. 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
   ```

1. 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](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_PresignedUrl_section.html). 

**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](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) 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. 

------

## Usar o AWS Toolkit for Visual Studio (Windows)
<a name="ShareObjectPreSignedURLVSExplorer"></a>

**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](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html) no *Guia do usuário do AWS Toolkit for Visual Studio*.

1. Conecte-se à AWS usando as etapas a seguir, [Conectar-se ao AWS](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/connect.html) no *Guia do usuário do AWS Toolkit for Visual Studio*.

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

1. 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…**.

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

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

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

1. Escolha o botão **Generate (Gerar)**.

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

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

## Usar o AWS Toolkit for Visual Studio Code
<a name="ShareObjectPreSignedURLVSCode"></a>

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](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html) 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](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html) 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](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/connect.html) no *Guia do usuário do AWS Toolkit for Visual Studio Code*.

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

1. Em **EXPLORER**, selecione **S3**.

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

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

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