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á.
Consolidação da geração de URLs assinados previamente do Amazon S3 e o download de objetos por meio de um endpoint associado a endereços IP estáticos
Song Jin, Eunhye Jo e Jun Soung Lee, Amazon Web Services
Resumo
Esse padrão simplifica o acesso ao Amazon Simple Storage Service (Amazon S3) criando um padrão seguro e personalizado para downloads de objetos. URLs A solução fornece um único endpoint com um domínio exclusivo e endereços IP estáticos. É voltada para clientes que precisam consolidar tanto endpoints de API quanto do Amazon S3 sob um domínio unificado com endereços IP estáticos. O caso de uso consiste em usuários que adotam uma política de firewall com lista de permissões de IPs e domínios, restringindo o acesso à API a domínios e endereços IP específicos.
A arquitetura emprega chaves Serviços da AWS, incluindo AWS Global Accelerator Amazon API Gateway AWS Lambda, Application Load Balancer AWS PrivateLink e Amazon S3. Esse design centraliza a API para gerar o endpoint pré-assinado URLs e o Amazon S3 em um único domínio, vinculado a um acelerador com dois endereços IP estáticos. Consequentemente, os usuários podem facilmente solicitar objetos pré-assinados do Amazon S3 URLs e baixá-los por meio de um endpoint de domínio unificado com endereços IP estáticos.
Essa arquitetura é especialmente útil para clientes com políticas rigorosas ou requisitos de conformidade, como os dos setores público, médico e financeiro.
Pré-requisitos e limitações
Pré-requisitos
Um ativo Conta da AWS
Uma zona hospedada pública para o seu domínio personalizado
Um domínio importado em AWS Certificate Manager (ACM) no Região da AWS de sua escolha
Limitações
O bucket do Amazon S3 deve ter um nome que coincida com o nome de domínio do endpoint. Esse requisito garante que o endpoint do Amazon S3 possa ser disponibilizado por meio de um único endpoint de API.
O nome de domínio personalizado usado no API Gateway deve estar alinhado com o nome de domínio do endpoint único da API.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region
. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.
Arquitetura
O diagrama apresentado a seguir ilustra a arquitetura de destino e o fluxo de trabalho para este padrão.

O diagrama ilustra o seguinte conceito e fluxo de trabalho:
Um usuário inicia uma solicitação para gerar um URL pré-assinado usando o endpoint personalizado servido por meio do AWS Global Accelerator nome de domínio personalizado e os endereços IP associados.
Uma função do Lambda gera o URL assinado previamente e direcionado ao endpoint personalizado. A resposta consiste em um redirecionamento 301 que contém o URL assinado previamente gerado. Por meio do URL assinado previamente e redirecionado, o usuário realiza o download do objeto automaticamente pelo endpoint personalizado que é fornecido pelo Global Accelerator.
Os componentes da arquitetura geral para a geração de URL assinado previamente e o fluxo de download de objetos são os seguintes:
Provisionamento de endereços IP estáticos pelo Global Accelerator.
Registro do alias do acelerador como um registro A na zona hospedada pública do Amazon Route 53 com o nome de domínio personalizado.
Criação de um bucket do Amazon S3 com um nome de bucket que corresponda ao nome de domínio personalizado registrado.
Criação de endpoints da VPC para o API Gateway e para o serviço Amazon S3.
Configuração de um Application Load Balancer voltado para uso interno, conectado ao Global Accelerator.
Atribuição de um domínio personalizado para o API Gateway, com certificado do ACM associado.
Implantação de um API Gateway privado integrado com uma função do Lambda.
A função Lambda é equipada com uma função AWS Identity and Access Management (IAM) anexada (com GetObjectpermissões).
Ferramentas
Serviços da AWS
O Amazon API Gateway ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
Os Application Load Balancers distribuem o tráfego de entrada do aplicativo em vários destinos, como instâncias do Amazon Elastic Compute Cloud (Amazon EC2), em várias zonas de disponibilidade.
AWS Certificate Manager (ACM) ajuda você a criar, armazenar e renovar certificados e chaves SSL/TLS X.509 públicos e privados que protegem seus AWS sites e aplicativos.
AWS Cloud Development Kit (AWS CDK)é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar Nuvem AWS infraestrutura em código.
O AWS Global Accelerator é um serviço global com suporte para endpoints em várias Regiões da AWS. Você pode criar aceleradores que direcionam o tráfego para endpoints ideais na rede AWS global. Isso melhora a disponibilidade e o desempenho de seus aplicativos da Internet que são usados por um público global.
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
AWS PrivateLinkajuda você a criar conexões unidirecionais e privadas de suas nuvens privadas virtuais (VPCs) para serviços fora da VPC.
O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
Outras ferramentas
O Terraform
é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar recursos na nuvem e no local.
Repositório de código
Você pode implantar esse padrão usando o AWS CDK ou o Terraform de acordo com sua preferência. A seção Épicos contém instruções para ambos os métodos de implantação. O código desse padrão está disponível nos seguintes GitHub repositórios:
Terraform — s3
- -terraform presignedurl-staticips-endpoint-with
Práticas recomendadas
Para reforçar a segurança no ambiente de produção, é fundamental implementar mecanismos de autorização, como o Amazon Cognito, para restringir o acesso à API de geração
PresignedUrl.Respeite o princípio de privilégio mínimo, garantindo somente as permissões estritamente necessárias para a execução de uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Defina qual será o nome de domínio. | Decida qual nome de domínio público será usado para o endpoint unificado do Amazon S3. O nome de domínio também é usado como o nome do bucket do Amazon S3. | Administrador da AWS e administrador de rede |
Crie uma zona hospedada pública. | Crie uma zona hospedada pública no Amazon Route 53. O nome de domínio deve corresponder ao nome de domínio usado no API Gateway. | Administrador da AWS e administrador de rede |
Providencie um certificado SSL. | Use AWS Certificate Manager (ACM) para solicitar ou importar um certificado SSL para o domínio do seu aplicativo web. | Administrador da AWS e administrador de rede |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o ambiente de desenvolvimento do Terraform. | Para configurar o ambiente de desenvolvimento, realize as seguintes ações:
| Administrador da AWS, administrador de nuvem |
Modifique os arquivos |
Observe o seguinte:
| Administrador da AWS, administrador de nuvem |
Provisione os recursos de rede. | Para provisionar recursos de rede, execute os seguintes comandos:
Durante a execução do comando | Administrador da AWS, administrador de nuvem |
Provisione o API Gateway, o Amazon S3 e o Lambda. | Para provisionar recursos de rede, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o ambiente AWS CDK de desenvolvimento. | Para configurar o ambiente de desenvolvimento, realize as seguintes ações:
| Administrador da AWS, administrador de nuvem |
Defina as configurações de domínio no arquivo | Para editar as opções da variável constante, use os seguintes comandos:
Nos comandos, substitua cada espaço reservado pelas suas próprias informações:
| Administrador da AWS, administrador de nuvem |
Implante as pilhas. | Para implantar duas pilhas, uma para a nuvem privada virtual (VPC) e outra para a aplicação, use o seguinte comando:
| Administrador da AWS, administrador de nuvem |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Verifique os endereços IP do endpoint. | Para verificar se o domínio deste padrão conta com endereços IP estáticos, use o seguinte comando:
| Administrador de rede |
Faça o upload de um arquivo de teste que você poderá baixar posteriormente. | Faça o upload do arquivo de teste para a pasta | Administrador da AWS, administrador de nuvem |
Invoque a API para gerar um URL assinado previamente. | Para gerar um URL assinado previamente, acesse o URL por meio de um navegador ou de um cliente de API (por exemplo, o Postman
Substitua os valores de espaço reservado em | Proprietário do App |
Verifique o resultado. | O resultado esperado é a obtenção do código de status de redirecionamento 301 (Movido permanentemente). Essa resposta conterá o URL assinado previamente, que deverá iniciar automaticamente o download do arquivo de teste. | Engenheiro de testes |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Remova os recursos do API Gateway, do Amazon S3 e do Lambda. | Para excluir recursos, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
Remova os recursos de rede. | Para excluir recursos de rede, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Remova as pilhas. | Para remover as pilhas da VPC e da aplicação, use o seguinte comando:
| Administrador da AWS, administrador de nuvem |
Esvazie e exclua os buckets do Amazon S3. | Esvazie e exclua o bucket de objetos do Amazon S3 e o bucket de logs do Amazon S3 que não são excluídos por padrão. Os nomes dos buckets do Amazon S3 são Se você preferir usar a AWS Command Line Interface (AWS CLI) para excluir os buckets, execute os seguintes comandos:
Substitua | Administrador da AWS, administrador de nuvem |
Recursos relacionados
AWS Blogs