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á.
Consolide a geração de URL pré-assinada e os downloads de objetos do Amazon S3 usando um endpoint associado a endereços IP estáticos
Song Jin, Eunhye Jo e Jun Soung Lee, da 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. Ele é feito sob medida para clientes que precisam da consolidação da API e dos endpoints do Amazon S3 em um domínio unificado com endereços IP estáticos. O caso de uso envolve usuários seguindo uma política de firewall de IP e lista de permissões de domínio, limitando 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 benéfica para clientes com políticas rígidas 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 pública hospedada para seu nome de domínio personalizado
Um domínio importado em AWS Certificate Manager (ACM) no Região da AWS de sua escolha
Limitações
O nome do bucket do Amazon S3 deve corresponder ao nome de domínio do endpoint. Esse requisito é garantir que o endpoint do Amazon S3 possa ser servido 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 único endpoint da API.
Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para saber a disponibilidade da região, consulte AWS Serviços por região
. Para endpoints específicos, consulte Endpoints e cotas de serviço e escolha o link para o serviço.
Arquitetura
O diagrama a seguir mostra a arquitetura de destino e o fluxo de trabalho desse 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 Lambda gera o URL pré-assinado, apontando para o endpoint personalizado. Ele responde com um redirecionamento 301 que contém o URL pré-assinado gerado. Por meio do URL pré-assinado redirecionado, o usuário baixa o objeto automaticamente usando o endpoint personalizado servido pelo Global Accelerator.
Os componentes da arquitetura geral para geração de URL pré-assinada e fluxo de trabalho 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 VPC para o API Gateway e o serviço Amazon S3.
Configuração de um Application Load Balancer interno para se conectar ao Global Accelerator.
Atribuição de um nome de domínio personalizado para o API Gateway com um certificado ACM anexado.
Implantação de um API Gateway privado integrado a uma função 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.
AWS Global Acceleratoré um serviço global que oferece suporte a vários Regiões da AWS endpoints. 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 Epics contém instruções para os dois 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 aumentar a segurança no ambiente de produção, é fundamental implementar mecanismos de autorização, como o Amazon Cognito, para restringir o acesso à API de
PresignedUrl
geração.Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar 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 | Descrição | Habilidades necessárias |
---|---|---|
Escolha um nome de domínio. | Escolha um nome de domínio público 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, administrador de rede |
Crie uma zona hospedada pública. | Crie uma zona hospedada pública no Amazon Route 53. Seu nome de domínio deve corresponder ao nome de domínio usado no API Gateway. | Administrador da AWS, administrador de rede |
Prepare 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, administrador de rede |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure o ambiente de desenvolvimento do Terraform. | Para configurar o ambiente de desenvolvimento, faça o seguinte:
| Administrador da AWS, administrador de nuvem |
Modifique |
Observe o seguinte:
| Administrador da AWS, administrador de nuvem |
Provisionar recursos de rede. | Para provisionar recursos de rede, execute os seguintes comandos:
Durante a execução do | Administrador da AWS, administrador de nuvem |
Provisione o API Gateway, Amazon S3 e Lambda. | Para provisionar recursos de rede, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configure o ambiente AWS CDK de desenvolvimento. | Para configurar o ambiente de desenvolvimento, faça o seguinte:
| Administrador da AWS, administrador de nuvem |
Defina as configurações do domínio no | Para editar as opções da variável constante, use os seguintes comandos:
Nos comandos, substitua cada espaço reservado por 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 o aplicativo, use o seguinte comando:
| Administrador da AWS, administrador de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Verifique os endereços IP do endpoint. | Para verificar se o domínio desse padrão tem endereços IP estáticos, use o seguinte comando:
| Administrador de rede |
Faça upload de um arquivo de teste que você possa baixar posteriormente. | Faça o upload do arquivo de teste para a | Administrador da AWS, administrador de nuvem |
Invoque a API para gerar um URL pré-assinado. | Para gerar uma URL pré-assinada, chame a URL de um navegador ou cliente de API (por exemplo, Postman
Substitua os valores do espaço reservado em | Proprietário do App |
Confira o resultado. | O resultado esperado é que você receba um código de status de redirecionamento 301 (movido permanentemente). Essa resposta conterá o URL pré-assinado, que deve iniciar automaticamente o download do seu arquivo de teste. | Engenheiro de testes |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Destrua os recursos do API Gateway, Amazon S3 e Lambda. | Para excluir recursos, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
Destrua os recursos da rede. | Para excluir recursos de rede, use os seguintes comandos:
| Administrador da AWS, administrador de nuvem |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Destrua as pilhas. | Para destruir as pilhas de VPC e de aplicativos, use o seguinte comando:
| Administrador da AWS, administrador de nuvem |
Esvazie e exclua os buckets do Amazon S3. | Esvazie e exclua o objeto Amazon S3 bucket e os logs do Amazon S3 bucket que não são excluídos por padrão. Os nomes dos buckets do Amazon S3 são e. Se você preferir usar o AWS Command Line Interface (AWS CLI) para excluir os buckets, use os seguintes comandos:
Substitua | Administrador da AWS, administrador de nuvem |
Recursos relacionados
AWS Blogs