

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração do acesso privado a um bucket do Amazon S3 por meio de um endpoint da VPC
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint"></a>

*Martin Maritsch, Nicolas Jacob Baer, Gabriel Rodriguez Garcia, Shukhrat Khodjaev, Mohan Gowda Purushothama e Joaquin Rinaudo, Amazon Web Services*

## Resumo
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-summary"></a>

No Amazon Simple Storage Service (Amazon S3), os URLs pré-assinados permitem que você compartilhe arquivos de tamanho arbitrário com os usuários-alvo. Por padrão, os Amazon S3 pré-assinados podem ser URLs acessados pela Internet dentro de um prazo de validade, o que os torna fáceis de usar. No entanto, ambientes corporativos geralmente exigem que o acesso ao Amazon S3 pré-assinado URLs seja limitado apenas a uma rede privada.

Esse padrão apresenta uma solução sem servidor para interagir com segurança com objetos do S3 usando URLs pré-assinados de uma rede privada sem passagem pela Internet. Na arquitetura, os usuários acessam um Application Load Balancer por meio de um nome de domínio interno. O tráfego é roteado internamente pelo Amazon API Gateway e por um endpoint da nuvem privada virtual (VPC) para o bucket do S3. A AWS Lambda função gera arquivos pré-assinados URLs para download por meio do endpoint VPC privado, o que ajuda a aumentar a segurança e a privacidade de dados confidenciais.

## Pré-requisitos e limitações
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-prereqs"></a>

**Pré-requisitos **
+ Uma VPC que inclui uma sub-rede implantada em uma Conta da AWS que está conectada à rede corporativa (por exemplo, por meio de). AWS Direct Connect

**Limitações**
+ O bucket do S3 deve ter o mesmo nome do domínio, portanto, recomendamos que você verifique as [regras de nomenclatura para buckets do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
+ Essa arquitetura de amostra não inclui recursos de monitoramento para a infraestrutura implantada. Se o seu caso de uso exigir monitoramento, considere adicionar os [serviços de monitoramento da AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ Essa arquitetura de amostra não inclui validação de entradas. Se seu caso de uso exigir validação de entrada e um maior nível de segurança, considere [usar AWS WAF para proteger sua API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-aws-waf.html).
+ Essa arquitetura de amostra não inclui registro em log de acesso com o Application Load Balancer. Se o seu caso de uso exigir registro em log de acessos, considere [habilitar os logs de acesso do balanceador de carga](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html).

**Versões**
+ Python versão 3.11 ou posterior
+ Terraform versão 1.6 ou posterior

## Arquitetura
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-architecture"></a>

**Pilha de tecnologias de destino**

Os seguintes serviços da AWS fazem parte da pilha de tecnologia de destino:
+ O **Amazon S3** é o serviço principal de armazenamento, usado para fazer upload, download e armazenar arquivos com segurança.
+ O **Amazon API Gateway** disponibiliza recursos e endpoints para interagir com o bucket do S3. Esse serviço desempenha um papel na geração de dados pré-assinados URLs para download ou upload.
+ **AWS Lambda**gera arquivos pré-assinados URLs para baixar arquivos do Amazon S3. A função do Lambda é acionada pelo API Gateway.
+ A **Amazon VPC** implanta recursos dentro de uma VPC para fornecer isolamento de rede. A VPC inclui sub-redes e tabelas de rotas para controlar o fluxo de tráfego.
+ O **Application Load Balancer** roteia o tráfego de entrada para o API Gateway ou para o endpoint da VPC do bucket do S3. Isso permite o acesso interno a recursos por parte de usuários da rede corporativa.
+ O **endpoint da VPC para o Amazon S3** permite comunicação direta e privada entre os recursos na VPC e o Amazon S3, sem usar a internet pública.
+ **AWS Identity and Access Management (IAM)** controla o acesso aos AWS recursos. As permissões são configuradas para garantir interações seguras com a API e com outros serviços.

**Arquitetura de destino**

![\[Configuração do acesso privado a um bucket do S3 por meio de um endpoint da VPC\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/683ca6a1-789c-4444-bcbf-e4e80d253df3/images/1ca7ee17-d346-4eb9-bf61-ccf42528a401.png)


O diagrama ilustra o seguinte:

1. Os usuários da rede corporativa podem acessar o Application Load Balancer por meio de um nome de domínio interno. Supomos que exista uma conexão entre a rede corporativa e a sub-rede da intranet no Conta da AWS (por exemplo, por meio de uma Direct Connect conexão).

1. O Application Load Balancer encaminha o tráfego de entrada para o API Gateway para gerar dados pré-assinados URLs para download ou upload para o Amazon S3 ou para o endpoint VPC do bucket do S3. Em ambos os cenários, as solicitações são tratadas internamente, sem a necessidade de usar a internet.

1. O API Gateway disponibiliza recursos e endpoints para interagir com o bucket do S3. Neste exemplo, fornecemos um endpoint para download de arquivos do bucket do S3, mas a funcionalidade poderia ser ampliada para incluir uploads.

1. A função do Lambda gera o URL assinado previamente para fazer o download de um arquivo do Amazon S3 usando o nome de domínio do Application Load Balancer em vez do domínio público do Amazon S3.

1. O usuário obtém o URL assinado previamente e o usa para fazer o download do arquivo do Amazon S3 por meio do Application Load Balancer. O balanceador de carga inclui uma rota padrão para enviar o tráfego que não se destina à API para o endpoint da VPC do bucket do S3.

1. O endpoint da VPC roteia o URL assinado previamente com o nome de domínio personalizado para o bucket do S3. É necessário que o bucket do S3 tenha o mesmo nome do domínio.

**Automação e escala**

Esse padrão usa o Terraform para implantar a infraestrutura do repositório de código em uma Conta da AWS.

## Ferramentas
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-tools"></a>

**Ferramentas**
+ O [Python](https://www.python.org/) é uma linguagem de programação de computador de uso geral.
+ [O Terraform](https://www.terraform.io/) é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) é uma ferramenta de código aberto que ajuda você a interagir com AWS serviços por meio de comandos em seu shell de linha de comando.

**Repositório de código**

O código desse padrão está disponível em um GitHub repositório em [https://github.com/aws-samples/private-s3-vpce](https://github.com/aws-samples/private-s3-vpce).

## Práticas recomendadas
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-best-practices"></a>

A arquitetura de amostra para esse padrão usa [permissões do IAM](https://docs.aws.amazon.com/apigateway/latest/developerguide/permissions.html) para controlar o acesso à API. Qualquer pessoa com credenciais válidas do IAM pode chamar a API. Se o seu caso de uso exigir um modelo de autorização mais complexo, talvez você precise [usar um mecanismo de controle de acesso diferente](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html).

## Épicos
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-epics"></a>

### Implemente a solução em um Conta da AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Obtenha AWS credenciais. | Revise suas AWS credenciais e seu acesso à sua conta. Para obter instruções, consulte [Configurações e configurações do arquivo de credenciais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) na AWS CLI documentação. | AWS DevOps, AWS geral | 
| Clonar o repositório. | Clone o GitHub repositório fornecido com esse padrão:<pre>git clone https://github.com/aws-samples/private-s3-vpce</pre> | AWS DevOps, AWS geral | 
| Configure as variáveis. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS geral | 
| Implante a solução. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS geral | 

### Testar a solução
<a name="test-the-solution"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie um arquivo de teste. | Faça upload de um arquivo para o Amazon S3 para criar um cenário de teste para o download do arquivo. Você pode usar o [console do Amazon S3](https://console.aws.amazon.com/s3/) ou o seguinte comando: AWS CLI <pre>aws s3 cp /path/to/testfile s3://your-bucket-name/testfile</pre> | AWS DevOps, AWS geral | 
| Teste a funcionalidade do URL assinado previamente. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint.html) | AWS DevOps, AWS geral | 
| Limpeza. | Certifique-se de remover os recursos quando não forem mais necessários:<pre>terraform destroy</pre> | AWS DevOps, AWS geral | 

## Solução de problemas
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-troubleshooting"></a>


| Problema | Solução | 
| --- | --- | 
| Os nomes de chaves de objetos do S3 com caracteres especiais, como o símbolo de cerquilha (\$1), quebram os parâmetros da URL e causam erros. | Faça a codificação adequada dos parâmetros do URL e garanta que o nome da chave do objeto S3 esteja em conformidade com as [diretrizes do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html). | 

## Recursos relacionados
<a name="set-up-private-access-to-an-amazon-s3-bucket-through-a-vpc-endpoint-resources"></a>

Amazon S3:
+ [Compartilhando objetos com presignados URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)
+ [Controle do acesso a partir de VPC endpoints com políticas de bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html)

Amazon API Gateway:
+ [Use políticas de endpoint VPC para uso privado APIs no API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)

Application Load Balancer:
+ [Hospedagem de sites estáticos HTTPS internos com ALB, S3 e PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) (AWS postagem do blog)