Como o AWS Proton provisiona a infraestrutura - AWS Proton

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

Como o AWS Proton provisiona a infraestrutura

O AWS Proton pode provisionar a infraestrutura de várias maneiras:

  • Provisionamento gerenciado pelo AWS – O AWS Proton chama o mecanismo de provisionamento em seu nome. Esse método oferece suporte somente a pacotes de modelos do AWS CloudFormation. Para obter mais informações, consulte AWS CloudFormation Arquivos IaC.

  • Provisionamento do CodeBuild – O AWS Proton usa o AWS CodeBuild para executar comandos de shell fornecidos por você. Seus comandos podem ler as entradas que o AWS Proton fornece e são responsáveis por provisionar ou desprovisionar a infraestrutura e gerar valores de saída. Um pacote de modelos para esse método inclui seus comandos em um arquivo de manifesto e quaisquer programas, scripts ou outros arquivos que esses comandos possam precisar.

    Como exemplo do uso do provisionamento do CodeBuild, você pode incluir um código que usa o AWS Cloud Development Kit (AWS CDK) para provisionar recursos do AWS e um manifesto que instala o CDK e executa seu código do CDK.

    Para obter mais informações, consulte CodeBuild pacote de modelos de provisionamento.

    nota

    Você pode usar o provisionamento do CodeBuild com ambientes e serviços. No momento, você não pode provisionar componentes dessa forma.

  • Provisionamento autogerenciado – O AWS Proton emite uma pull request (PR) para um repositório que você fornece, onde seu próprio sistema de implantação de infraestrutura executa o processo de provisionamento. Esse método oferece suporte somente a pacotes de modelos do Terraform. Para obter mais informações, consulte Arquivos Terraform IaC.

O AWS Proton determina e define o método de provisionamento para cada ambiente e serviço separadamente. Quando você cria ou atualiza um ambiente ou serviço, o AWS Proton examina o pacote de modelos que você fornece e determina o método de provisionamento indicado pelo pacote de modelos. No nível do ambiente, você fornece os parâmetros que o ambiente e seus possíveis serviços podem precisar para seus métodos de provisionamento — perfis do AWS Identity and Access Management (IAM), uma conexão de conta de ambiente ou um repositório de infraestrutura.

Os desenvolvedores que usam o AWS Proton para provisionar um serviço têm a mesma experiência, independentemente do método de provisionamento. Os desenvolvedores não precisam conhecer o método de provisionamento e não precisam alterar nada no processo de provisionamento de serviços. O modelo de serviço define o método de provisionamento, e cada ambiente no qual um desenvolvedor implanta o serviço fornece os parâmetros necessários para o provisionamento da instância de serviço.

O diagrama a seguir resume algumas características principais dos diferentes métodos de provisionamento. As seções que seguem a tabela fornecem detalhes sobre cada método.

Método de provisionamento Modelos Provisionado por Status rastreado por

Gerenciado pelo AWS

manifesto, esquema, arquivo IaC (CloudFormation)

AWS Proton (por meio do CloudFormation)

AWS Proton (por meio do CloudFormation)

CodeBuild

manifesto (com comandos), esquema, dependências de comando (por exemplo, código do AWS CDK)

AWS Proton (por meio do CodeBuild)

AWS Proton (seus comandos retornam o status por meio do CodeBuild)

autogerenciado

manifesto, esquema, arquivos IaC (Terraform)

Seu código (por meio de ações do Git)

Seu código (passado ao AWS por meio de uma chamada de API)

Como funciona o provisionamento gerenciado pelo AWS

Quando um ambiente ou serviço usa provisionamento gerenciado pelo AWS, a infraestrutura é provisionada da seguinte forma:

  1. Um cliente (administrador ou desenvolvedor) do AWS Proton cria o recurso (um ambiente ou um serviço) do AWS Proton. O cliente seleciona um modelo para o recurso e fornece os parâmetros necessários. Para obter mais informações, consulte a seção Considerações sobre o provisionamento gerenciado pelo AWS a seguir.

  2. O AWS Proton renderiza um modelo completo do AWS CloudFormation para provisionar o recurso.

  3. O AWS Proton chama o AWS CloudFormation para iniciar o provisionamento usando o modelo renderizado.

  4. O AWS Proton monitora continuamente a implantação do AWS CloudFormation.

  5. Quando o provisionamento é concluído, o AWS Proton reporta os erros em caso de falha e captura as saídas do provisionamento, como o Amazon VPC ID, em caso de sucesso.

O diagrama a seguir mostra que o AWS Proton cuida diretamente da maioria dessas etapas.

Diagrama ilustrando o provisionamento gerenciado pelo AWS no AWS Proton

Considerações sobre o provisionamento gerenciado pelo AWS

  • Perfil de provisionamento de infraestrutura – Quando um ambiente ou qualquer uma das instâncias de serviço em execução nele pode usar o provisionamento gerenciado pelo AWS, um administrador precisa configurar um perfil do IAM (diretamente ou como parte de uma conexão de conta do ambiente do AWS Proton). O AWS Proton usa esse perfil para provisionar a infraestrutura desses recursos de provisionamento gerenciados pelo AWS. O perfil deve ter permissões para usar o AWS CloudFormation para criar todos os recursos que os modelos desses recursos incluem.

    Para obter mais informações, consulte Funções do IAM e AWS Proton IAMexemplos de políticas de função de serviço.

  • Provisionamento de serviços – Quando um desenvolvedor implanta uma instância de serviço que usa provisionamento gerenciado pelo AWS no ambiente, o AWS Proton usa o perfil fornecido a esse ambiente para provisionar a infraestrutura para a instância de serviço. Os desenvolvedores não veem esse perfil e não podem alterá-lo.

  • Serviço com pipeline – Um modelo de serviço que usa provisionamento gerenciado pelo AWS pode incluir uma definição de pipeline escrita no esquema YAML do AWS CloudFormation. O AWS Proton também cria o pipeline chamando o AWS CloudFormation. O perfil que o AWS Proton usa para criar um pipeline é separado do perfil de cada ambiente individual. Esse perfil é fornecido ao AWS Proton separadamente, apenas uma vez no nível da conta do AWS, e é usado para provisionar e gerenciar todos os pipelines gerenciados pelo AWS. Esse perfil deve ter permissões para criar pipelines e outros recursos de que seus pipelines precisam.

    Os procedimentos a seguir mostram como fornecer o perfil de pipeline para o AWS Proton.

    AWS Proton console
    Para fornecer o perfil do pipeline
    1. No console do AWS Proton, no painel de navegação, escolha Configurações > Configurações da conta e, em seguida, escolha Configurar.

    2. Use a seção Perfil de pipeline gerenciada pelo AWS para configurar um perfil de pipeline novo ou existente para provisionamento gerenciado pelo AWS.

    AWS Proton API
    Para fornecer o perfil do pipeline
    1. Use a ação da API UpdateAccountSettings.

    2. Forneça o nome do recurso da Amazon (ARN) do seu perfil de serviço de pipeline no parâmetro do pipelineServiceRoleArn.

    AWS CLI

    Para fornecer o perfil do pipeline

    Execute o seguinte comando :

    $ aws proton update-account-settings \ --pipeline-service-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Como funciona o provisionamento do CodeBuild

Quando um ambiente ou serviço usa provisionamento do CodeBuild, a infraestrutura é provisionada da seguinte forma:

  1. Um cliente (administrador ou desenvolvedor) do AWS Proton cria o recurso (um ambiente ou um serviço) do AWS Proton. O cliente seleciona um modelo para o recurso e fornece os parâmetros necessários. Para obter mais informações, consulte a seção Considerações sobre o provisionamento do CodeBuild a seguir.

  2. O AWS Proton renderiza um arquivo de entrada com valores de parâmetros de entrada para provisionar o recurso.

  3. O AWS Proton chama o CodeBuild para iniciar um trabalho. O trabalho do CodeBuild executa os comandos do shell do cliente especificados no modelo. Esses comandos provisionam a infraestrutura desejada e, opcionalmente, leem os valores de entrada.

  4. Quando o provisionamento é concluído, o comando final do cliente retorna o status do provisionamento para o CodeBuild e chama a ação da API do AWS Proton NotifyResourceDeploymentStatusChange para fornecer resultados, como Amazon VPC ID, se houver.

    Importante

    Certifique-se de que seus comandos retornem corretamente o status de provisionamento para o CodeBuild e forneçam as saídas. Caso contrário, o AWS Proton não conseguirá rastrear adequadamente o status do provisionamento e não poderá fornecer resultados corretos para as instâncias de serviço.

O diagrama a seguir ilustra as etapas que o AWS Proton executa e as etapas que seus comandos executam em uma tarefa do CodeBuild.

Diagrama ilustrando o provisionamento baseado em CodeBuild no AWS Proton

Considerações sobre o provisionamento do CodeBuild

  • Perfil de provisionamento de infraestrutura – Quando um ambiente ou qualquer uma das instâncias de serviço em execução nele pode usar o provisionamento baseado no CodeBuild, um administrador precisa configurar um perfil do IAM (diretamente ou como parte de uma conexão de conta do ambiente do AWS Proton). O AWS Proton usa esse perfil para provisionar a infraestrutura desses recursos de provisionamento do CodeBuild. O perfil deve ter permissões para usar o CodeBuild para criar todos os recursos que seus comandos nos modelos desses recursos provisionam.

    Para obter mais informações, consulte Funções do IAM e AWS Proton IAMexemplos de políticas de função de serviço.

  • Provisionamento de serviços – Quando um desenvolvedor implanta uma instância de serviço que usa provisionamento do CodeBuild no ambiente, o AWS Proton usa o perfil fornecido a esse ambiente para provisionar a infraestrutura para a instância de serviço. Os desenvolvedores não veem esse perfil e não podem alterá-lo.

  • Serviço com pipeline – Um modelo de serviço que usa o provisionamento do CodeBuild pode incluir comandos para provisionar um pipeline. O AWS Proton também cria o pipeline chamando o CodeBuild. O perfil que o AWS Proton usa para criar um pipeline é separado do perfil de cada ambiente individual. Esse perfil é fornecida ao AWS Proton separadamente, apenas uma vez no nível da conta do AWS, e é usada para provisionar e gerenciar todos os pipelines baseados no CodeBuild. Esse perfil deve ter permissões para criar pipelines e outros recursos de que seus pipelines precisam.

    Os procedimentos a seguir mostram como fornecer o perfil de pipeline para o AWS Proton.

    AWS Proton console
    Para fornecer o perfil do pipeline
    1. No console do AWS Proton, no painel de navegação, escolha Configurações > Configurações da conta e, em seguida, escolha Configurar.

    2. Use a seção Perfil de provisionamento do pipeline do Codebuild para configurar um perfil de pipeline novo ou existente para o provisionamento do CodeBuild.

    AWS Proton API
    Para fornecer o perfil do pipeline
    1. Use a ação da API UpdateAccountSettings.

    2. Forneça o nome do recurso da Amazon (ARN) do seu perfil de serviço de pipeline no parâmetro do pipelineCodebuildRoleArn.

    AWS CLI

    Para fornecer o perfil do pipeline

    Execute o seguinte comando :

    $ aws proton update-account-settings \ --pipeline-codebuild-role-arn \ "arn:aws:iam::123456789012:role/my-pipeline-role"

Como funciona o provisionamento autogerenciado

Quando um ambiente é configurado para usar provisionamento autogerenciado, a infraestrutura é provisionada da seguinte forma:

  1. Um cliente (administrador ou desenvolvedor) do AWS Proton cria o recurso (um ambiente ou um serviço) do AWS Proton. O cliente seleciona um modelo para o recurso e fornece os parâmetros necessários. Para um ambiente, o cliente também fornece um repositório de infraestrutura vinculado. Para obter mais informações, consulte a seção Considerações sobre o provisionamento autogerenciado a seguir.

  2. O AWS Proton renderiza um modelo completo do Terraform. Ele consiste em um ou mais arquivos do Terraform, potencialmente em várias pastas, e um arquivo de variáveis do .tfvars. O AWS Proton grava os valores dos parâmetros fornecidos ao chamar a criação do recurso nesse arquivo de variáveis.

  3. O AWS Proton envia um PR para o repositório de infraestrutura com o modelo renderizado do Terraform.

  4. Quando o cliente (administrador ou desenvolvedor) mescla o PR, a automação do cliente aciona o mecanismo de provisionamento para iniciar o provisionamento da infraestrutura usando o modelo mesclado.

    nota

    Se o cliente (administrador ou desenvolvedor) fechar o PR, o AWS Proton reconhecerá o PR como fechado e marcará a implantação como cancelada.

  5. Quando o provisionamento for concluído, a automação do cliente chama a ação da API do AWS Proton NotifyResourceDeploymentStatusChange para indicar a conclusão, fornecer o status (sucesso ou falha) e fornecer saídas, como Amazon VPC ID, se houver.

    Importante

    Certifique-se de que seu código de automação retorne ao AWS Proton com o status e as saídas do provisionamento. Caso contrário, o AWS Proton pode considerar o provisionamento pendente por mais tempo do que deveria e continuar mostrando o status Em andamento.

O diagrama a seguir ilustra as etapas que o AWS Proton executa e as etapas que seu próprio sistema de provisionamento executa.

Diagrama ilustrando o provisionamento autogerenciado no AWS Proton

Considerações sobre o provisionamento autogerenciado

  • Repositório de infraestrutura – Quando um administrador configura um ambiente para provisionamento autogerenciado, ele precisa fornecer um repositório de infraestrutura vinculado. O AWS Proton envia PRs a esse repositório para provisionar a infraestrutura do ambiente e todas as instâncias de serviço que são implantadas nele. A ação de automação de propriedade do cliente no repositório deve assumir um perfil do IAM com permissões para criar todos os recursos que seus modelos de ambiente e serviço incluem e uma identidade que reflita a conta de destino do AWS. Para ver um exemplo de Ação do GitHub que assume um perfil, consulte Assumir um perfil na documentação Ação “Configurar Credenciais do AWS” para o GitHub.

  • Permissões – Seu código de provisionamento precisa ser autenticado com uma conta conforme necessário (por exemplo, autenticar-se em uma conta do AWS) e fornecer autorização de provisionamento de recursos (por exemplo, fornecer um perfil).

  • Provisionamento de serviços – Quando um desenvolvedor implanta uma instância de serviço que usa provisionamento autogerenciado no ambiente, o AWS Proton envia um PR para o repositório para provisionar a infraestrutura para a instância de serviço. Os desenvolvedores não veem o repositório e não podem alterá-lo.

    nota

    Os desenvolvedores que criam serviços usam o mesmo processo, independentemente do método de provisionamento, e a diferença é abstraída deles. No entanto, com o provisionamento autogerenciado, os desenvolvedores podem ter uma resposta mais lenta, porque precisam esperar até que alguém (que pode não ser eles mesmos) mescle o PR no repositório de infraestrutura antes que o provisionamento possa começar.

  • Serviço com pipeline – Um modelo de serviço para um ambiente com provisionamento autogerenciado pode incluir uma definição de pipeline (por exemplo, um pipeline do AWS CodePipeline), escrita em Terraform HCL. Para permitir que o AWS Proton faça o provisionamento desses pipelines, um administrador fornece um repositório de pipeline vinculado ao AWS Proton. Ao provisionar um pipeline, a ação de automação de propriedade do cliente no repositório deve assumir um perfil do IAM com permissões para provisionar o pipeline e uma identidade que reflita a conta de destino do AWS. O repositório e o perfil do pipeline são separados daqueles usados para cada ambiente individual. Esse repositório vinculado é fornecido ao AWS Proton separadamente, apenas uma vez no nível da conta do , e é usada para provisionar e gerenciar todos os pipelines. O perfil deve ter permissões para criar pipelines e outros recursos de que seus pipelines precisam.

    Os procedimentos a seguir mostram como fornecer o repositório e o perfil de pipeline para o AWS Proton.

    AWS Proton console
    Para fornecer o perfil do pipeline
    1. No console do AWS Proton, no painel de navegação, escolha Configurações > Configurações da conta e, em seguida, escolha Configurar.

    2. Use a seção de repositório de pipeline de CI/CD para configurar um link de repositório novo ou existente.

    AWS Proton API
    Para fornecer o perfil do pipeline
    1. Use a ação da API UpdateAccountSettings.

    2. Forneça o provedor, o nome e a ramificação do seu repositório de pipeline no parâmetro do pipelineProvisioningRepository.

    AWS CLI

    Para fornecer o perfil do pipeline

    Execute o seguinte comando :

    $ aws proton update-account-settings \ --pipeline-provisioning-repository \ "provider=GITHUB,name=my-pipeline-repo-name,branch=my-branch"
  • Exclusão de recursos provisionados autogerenciados – os módulos do Terraform podem incluir elementos de configuração necessários para a operação do Terraform, além das definições de recursos. Portanto, o AWS Proton não pode excluir todos os arquivos do Terraform de um ambiente ou instância de serviço. Em vez disso, o AWS Proton marca os arquivos para exclusão e atualiza um sinalizador nos metadados do PR. Sua automação pode ler essa bandeira e usá-la para acionar um comando terraform destroy.