Como 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 AWS Proton provisiona a infraestrutura

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

  • AWS-provisionamento gerenciado — 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.

  • CodeBuild provisionamento — AWS Proton usa AWS CodeBuild para executar comandos de shell fornecidos por você. Seus comandos podem ler as entradas que AWS Proton fornecem 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 CodeBuild provisionamento, você pode incluir um código que usa o AWS Cloud Development Kit (AWS CDK) para provisionar AWS recursos e um manifesto que instala o CDK e executa seu código CDK.

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

    nota

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

  • Provisionamento autogerenciado — 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.

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 — funções AWS Identity and Access Management (IAM), uma conexão de conta de ambiente ou um repositório de infraestrutura.

Os desenvolvedores que costumam AWS Proton 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 pela AWS

manifesto, esquema, arquivo IaC () CloudFormation

AWS Proton (por meio de CloudFormation)

AWS Proton (por meio de CloudFormation)

CodeBuild

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

AWS Proton (por meio de CodeBuild)

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

autogerenciado

manifesto, esquema, arquivos IaC (Terraform)

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

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

Como funciona o provisionamento AWS gerenciado

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

  1. Um AWS Proton cliente (administrador ou desenvolvedor) cria o AWS Proton recurso (um ambiente ou um serviço). 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 AWS gerenciado a seguir.

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

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

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

  5. Quando o provisionamento é concluído, 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 AWS Proton que ele executa a maioria dessas etapas diretamente.

Diagrama ilustrando o AWS provisionamento gerenciado em AWS Proton

Considerações sobre o provisionamento AWS gerenciado

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

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

  • Provisionamento de serviços — Quando um desenvolvedor implanta uma instância de serviço que usa provisionamento AWS gerenciado no ambiente, AWS Proton usa a função fornecida 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 AWS gerenciado pode incluir uma definição de pipeline escrita no esquema YAML. AWS CloudFormation AWS Proton também cria o pipeline chamando AWS CloudFormation. A função AWS Proton usada para criar um pipeline é separada da função de cada ambiente individual. Essa função é fornecida AWS Proton separadamente, apenas uma vez no nível da AWS conta, e é usada para provisionar e gerenciar todos os pipelines AWS gerenciados. 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 Função AWS gerenciada por pipeline para configurar uma função de pipeline nova ou existente para provisionamento AWS gerenciado.

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

    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 CodeBuild provisionamento

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

  1. Um AWS Proton cliente (administrador ou desenvolvedor) cria o AWS Proton recurso (um ambiente ou um serviço). 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 CodeBuild provisionamento a seguir.

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

  3. AWS Proton chamadas CodeBuild para começar um trabalho. O CodeBuild trabalho 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 CodeBuild e chama a ação da NotifyResourceDeploymentStatusChange AWS Proton API para fornecer resultados, como o Amazon VPC ID, se houver.

    Importante

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

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

Diagrama ilustrando o provisionamento CodeBuild baseado em AWS Proton

Considerações sobre o CodeBuild provisionamento

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

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

  • Provisionamento de serviços — Quando um desenvolvedor implanta uma instância de serviço que usa CodeBuild provisionamento no ambiente, AWS Proton usa a função fornecida 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 CodeBuild provisionamento pode incluir comandos para provisionar um pipeline. AWS Proton também cria o pipeline chamando CodeBuild. A função AWS Proton usada para criar um pipeline é separada da função de cada ambiente individual. Essa função é fornecida AWS Proton separadamente, apenas uma vez no nível da AWS conta, e é usada para provisionar e gerenciar todos os pipelines CodeBuild baseados. 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 Função de provisionamento de pipeline do Codebuild para configurar uma função de pipeline nova ou existente para provisionamento. CodeBuild

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

    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 AWS Proton cliente (administrador ou desenvolvedor) cria o AWS Proton recurso (um ambiente ou um serviço). 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. 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 .tfvars variáveis. AWS Proton grava os valores dos parâmetros fornecidos na chamada de criação do recurso nesse arquivo de variáveis.

  3. 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, AWS Proton reconhecerá o PR como fechado e marcará a implantação como cancelada.

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

    Importante

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

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

Diagrama ilustrando o provisionamento autogerenciado em 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. AWS Proton se submete 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 uma função 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. AWS Para ver um exemplo de GitHub ação que assume uma função, consulte Assumindo uma função na documentação “Configurar AWS credenciais” da ação para GitHub ações.

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

  • Provisionamento de serviços — Quando um desenvolvedor implanta uma instância de serviço que usa provisionamento autogerenciado no ambiente, AWS Proton envia um PR ao repositório associado ao ambiente 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 AWS CodePipeline pipeline), escrita em Terraform HCL. AWS Proton Para permitir o provisionamento desses pipelines, um administrador fornece um repositório de pipeline vinculado a. AWS Proton Ao provisionar um pipeline, a ação de automação de propriedade do cliente no repositório deve assumir uma função do IAM com permissões para provisionar o pipeline e uma identidade que reflita a conta de destino. AWS O repositório e o perfil do pipeline são separados daqueles usados para cada ambiente individual. O repositório vinculado é fornecido AWS Proton separadamente, somente uma vez no nível da AWS conta, e é usado 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 UpdateAccountSettingsda API.

    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, não é AWS Proton possível excluir todos os arquivos do Terraform de um ambiente ou instância de serviço. Em vez disso, 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.