

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

# Usando o Enterprise Blueprint Factory
<a name="using-factory"></a>

Esta seção ajuda você a criar, atualizar ou excluir blueprints em seu ambiente. Ele fornece instruções detalhadas para gerenciar um blueprint durante todo o seu [ciclo de vida](architecture-blueprint-lifecycle.md).

[Para criar ou atualizar esquemas personalizados, você deve ter uma compreensão de como criar modelos de IaC, como AWS CloudFormation[modelos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) ou AWS Cloud Development Kit (AWS CDK) construções.](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html) Este guia não inclui informações ou instruções sobre como definir os blueprints que você lança por meio do Enterprise Blueprint Factory.

## Pré-requisitos
<a name="using-factory-prereqs"></a>

A seguir estão os pré-requisitos para usar o Enterprise Blueprint Factory em seu ambiente: AWS 
+ AWS Command Line Interface (AWS CLI), [instalado](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ Permissões para assumir a função `ServiceCatalogEndUserRole` AWS Identity and Access Management (IAM)
+ Um CloudFormation modelo ou AWS CDK construção

## Criação de um plano
<a name="using-factory-create"></a>

Os pipelines do Enterprise Blueprint Factory implantam os blueprints que você define no arquivo de configuração. O desenvolvedor inicia o pipeline de configuração mesclando o arquivo de configuração no repositório de configuração. Em seguida, o Enterprise Blueprint Factory usa o `ServiceCatalogLaunchConstraintRole` para implantar o blueprint como um produto no Service Catalog. Para obter mais informações sobre as ações que o pipeline de configuração e o pipeline de lançamento executam quando você cria um blueprint, consulte [Criação de blueprint](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-create) neste guia.

**Para adicionar o blueprint ao repositório do produto**

1. Certifique-se de ter configurado seu Enterprise Blueprint Factory de acordo com as instruções em [Configurando o Enterprise Blueprint Factory](setup.md) neste guia.

1. Confirme se a política da `ServiceCataloglogLaunchConstraintRole` função permite que você provisione os recursos definidos no blueprint.

1. No repositório do produto (`ServiceCatalog-BlueprintProductRepo`), crie uma pasta para o novo blueprint.

1. Cole o modelo do IaC (CloudFormation modelo ou AWS CDK construção) na pasta que você criou.

1. Crie um arquivo chamado **product\_config.json** na pasta que você criou.

1. Abra o arquivo **product\_config.json** e cole o seguinte no arquivo:

   ```
   {
       "SchemaVersion": "1.0",
       "ProductVersionName": "1.0.1",
       "Deprecated_Versions" : [],
       "ProductVersionDescription": "<description>",
       "ProductType": "CLOUD_FORMATION_TEMPLATE",
       "Properties": {
           "TemplateFilePath": "./<folder name>/<file name>"
       }
   }
   ```

   Em que:
   + `<description>`é uma breve descrição da versão do blueprint
   + `<folder name>`é o nome da pasta que você criou no repositório do produto
   + `<file name>`é o nome do modelo IaC
**nota**  
Você pode atualizar a versão do esquema ou os nomes das versões do produto de acordo com as políticas da sua organização.

1. Salve e feche o arquivo **product\_config.json**.

1. Insira os seguintes comandos para mesclar as alterações no repositório do produto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add <folder name>/<file name> <folder name>\product_config.json
   git commit -m "The first version of <file name> blueprint"
   git push origin main
   ```

**Para atualizar o arquivo de configuração**

1. No repositório de configuração (`ServiceCatalog-ConfigRepo`), abra o arquivo **config.yml**.

1. Edite a `portfolios` seção e a `products` seção conforme necessário para o novo blueprint. Para obter mais informações, consulte [Arquivo de configuração](architecture-components.md#architecture-config-file) neste guia.

1. Salve e feche o **arquivo config.yml.**

1. Insira os seguintes comandos para mesclar as alterações no repositório de configuração:

   ```
   cd ServiceCatalog-ConfigRepo
   git add config.yml
   git commit -m "<description of change>"
   git push origin main
   ```

   A aprovação dessa pull request inicia o pipeline de configuração. O pipeline de configuração cria um pipeline de lançamento para o produto.

**Para revisar os registros de implantação**

1. Faça login na conta administrativa do Enterprise Blueprint Factory.

1. Abra o [console de AWS CodePipeline](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Em **Nome**, escolha o pipeline de lançamento do produto. Por padrão, o nome do pipeline é`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`.

1. Selecione **Visualizar histórico**.

1. Visualize o status da execução do pipeline e do estágio. Para obter mais informações sobre o status, consulte [Exibir status de execução](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) na CodePipeline documentação.

1. Se a tubulação falhar, analise a causa da falha. Para obter instruções sobre como configurar o monitoramento para seus pipelines, consulte [Monitoramento de pipelines](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html) na CodePipeline documentação. Se o pipeline de lançamento falhar devido a uma verificação de cfn-lint ou cfn\_nag, corrija o erro no modelo. Envie outra pull request para o repositório do produto. Isso reinicia o pipeline de lançamento. Para obter mais informações sobre como corrigir erros de modelo, consulte a seção [Solução de problemas](#using-factory-troubleshooting) neste guia.

1. Espere até que o status do pipeline de lançamento seja`Succeeded`.

**Para validar a implantação**

1. Faça login em uma conta de consumidor na organização.

1. Assuma a função `ServiceCatalogEndUserRole` do IAM.

1. Abra o [console do Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. No painel de navegação, escolha **Produtos**.

1. Confirme se o novo produto está disponível na lista de produtos.

## Atualizar um esquema
<a name="using-factory-update"></a>

Para obter mais informações sobre as ações que o pipeline de configuração e o pipeline de lançamento executam quando você cria um blueprint, consulte [Atualização do blueprint](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-update) neste guia.

**Para atualizar um blueprint**

1. No repositório do produto, navegue até a pasta do produto.

1. Cole o modelo atualizado do IaC. Verifique se o nome do arquivo é o mesmo da versão anterior.

1. Abra o arquivo **product\_config.json**.

1. Para`ProductVersionName`, atualize o número da versão.

1. Se você quiser evitar que a versão anterior do produto seja implantada futuramente, para`Deprecated_Versions`, insira os números da versão anterior em uma lista separada por vírgulas.

1. Insira os seguintes comandos para mesclar as alterações no repositório do produto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add <folder name>/<file name> <folder name>\product_config.json
   git commit -m "Version <number> of <file name> blueprint"
   git push origin main
   ```

   A aprovação dessa pull request inicia o pipeline de lançamento do produto.

**Para revisar os registros de implantação**

1. Faça login na conta administrativa do Enterprise Blueprint Factory.

1. Abra o [console de AWS CodePipeline](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. Em **Nome**, escolha o pipeline de lançamento. Por padrão, o nome do pipeline é`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`.

1. Selecione **Visualizar histórico**.

1. Visualize o status da execução do pipeline e do estágio. Para obter mais informações sobre o status, consulte [Exibir status de execução](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console) na CodePipeline documentação.

1. Se a tubulação falhar, analise a causa da falha. Para obter instruções sobre como configurar o monitoramento para seus pipelines, consulte [Monitoramento de pipelines](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html) na CodePipeline documentação. Se o pipeline de lançamento falhar devido a uma verificação de cfn-lint ou cfn\_nag, corrija o erro no modelo. Envie outra pull request para o repositório do produto. Isso reinicia o pipeline de lançamento. Para obter mais informações sobre como corrigir erros de modelo, consulte a seção [Solução de problemas](#using-factory-troubleshooting) neste guia.

1. Espere até que o status do pipeline de lançamento seja`Succeeded`.

**Para validar a atualização**

1. Faça login em uma conta de consumidor na organização.

1. Assuma a função `ServiceCatalogEndUserRole` do IAM.

1. Abra o [console do Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. No painel de navegação, escolha **Produtos**.

1. Confirme se a nova versão do produto está disponível na lista de produtos.

## Excluindo um blueprint
<a name="using-factory-delete"></a>

Quando você exclui um produto, o Service Catalog remove todas as versões do produto de cada portfólio que contém o produto. Para obter mais informações, consulte [Excluindo produtos](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) na documentação do Service Catalog. Para obter mais informações sobre as ações que o pipeline de configuração e o pipeline de lançamento executam quando você cria um blueprint, consulte [Exclusão de blueprint neste guia.](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-delete)

**Para excluir um blueprint**

1. No repositório de configuração, abra o arquivo **config.yml.**

1. Edite a seção de produtos, remova ou comente o produto que você deseja excluir.

1. Salve e feche o **arquivo config.yml.**

1. Insira os seguintes comandos para mesclar as alterações no repositório de configuração:

   ```
   cd ServiceCatalog-ConfigRepo
   git add config.yml
   git commit -m "<description of change>"
   git push origin main
   ```

   A aprovação dessa pull request inicia o pipeline de configuração. O pipeline de configuração exclui o produto e seu pipeline de lançamento.

1. No repositório do produto, exclua a pasta do produto, incluindo seu conteúdo.

1. Insira os seguintes comandos para mesclar as alterações no repositório do produto:

   ```
   cd ServiceCatalog-BlueprintProductRepo
   git add .
   git commit -m "Delete <file name> blueprint"
   git push origin main
   ```

**Para validar a exclusão**

1. Faça login em uma conta de consumidor na organização.

1. Assuma a função `ServiceCatalogEndUserRole` do IAM.

1. Abra o [console do Service Catalog](https://console.aws.amazon.com/servicecatalog/).

1. No painel de navegação, escolha **Produtos**.

1. Confirme se o produto excluído não está mais disponível.

## Solução de problemas
<a name="using-factory-troubleshooting"></a>

Quando você cria ou atualiza um blueprint, as ferramentas cfn-lint e cfn-nag validam o blueprint. Para obter mais informações sobre validação no pipeline de lançamento, consulte [Release pipeline](architecture-components.md#architecture-release-pipeline) neste guia. Qualquer erro de sintaxe ou segurança relatado faz com que o pipeline falhe. Para implantar com êxito o blueprint por meio do pipeline de lançamento, você deve corrigir os erros no blueprint.

Veja a seguir um exemplo de saída que mostra dois erros relacionados à segurança, uma falha e um aviso.

```
BP-SNS.yml
---------------------------------------------------
BP-SNS.yml
---------------------------------------------------
| WARN W47
|
| Resource: ["ExampleTopic"]
| Line numbers: [5]
|
| SNS Topic should specify KmsMasterKeyId property
---------------------------------------------------
| FAIL F18
|
| Resource: ["ExampleTopicPolicy"]
| Line numbers: [10]
|
| SNS topic policy should not allow * principal

Failures count: 1
Warnings count: 1
```

Para corrigir esses erros, no arquivo do blueprint, você substituiria o `*` principal na política de tópicos do Amazon Simple Notification Service (Amazon SNS) e associaria uma chave AWS Key Management Service (AWS KMS) ao tópico. O exemplo de código a seguir demonstra essas atualizações.

```
ExampleTopic:
    Type: AWS::SNS::Topic  
    Properties:
      TopicName: ExampleTopic
  ExampleTopicPolicy:
    Type: AWS::SNS::TopicPolicy
    Properties: 
      KmsMasterKeyId: alias/aws/sns  # Added KMS key
      PolicyDocument:
        Id: Id1
        Version: '2012-10-17'
        Statement:
        - Sid: Sid2
          Effect: Allow
          Principal:            
            "Service" : "s3.amazonaws.com"  # Replaced "AWS": '*'
          Action: 'sns:Publish'
          Resource: !Ref ExampleTopic
      Topics: 
        - !Ref ExampleTopic
```