

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Enterprise Blueprint Factory の使用
<a name="using-factory"></a>

このセクションでは、 環境でブループリントを作成、更新、削除する方法について説明します。[ライフサイクル](architecture-blueprint-lifecycle.md)全体でブループリントを管理するための詳細な手順を示します。

カスタムブループリントを作成または更新するには、 AWS CloudFormation [テンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)や AWS Cloud Development Kit (AWS CDK) [コンストラクト](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html)などの IaC テンプレートを作成する方法を理解している必要があります。このガイドには、Enterprise Blueprint Factory を通じてリリースするブループリントを定義する方法に関する情報や手順は含まれていません。

## 前提条件
<a name="using-factory-prereqs"></a>

以下は、 AWS 環境で Enterprise Blueprint Factory を使用するための前提条件です。
+ AWS Command Line Interface （AWS CLI）、[インストール](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)および[設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)済み
+ `ServiceCatalogEndUserRole` AWS Identity and Access Management (IAM) ロールを引き受けるアクセス許可
+ CloudFormation テンプレートまたは AWS CDK コンストラクト

## ブループリントの作成
<a name="using-factory-create"></a>

Enterprise Blueprint Factory パイプラインは、設定ファイルで定義したブループリントをデプロイします。開発者は、設定ファイルを設定リポジトリにマージして設定パイプラインを開始します。次に、エンタープライズブループリントファクトリーは を使用して`ServiceCatalogLaunchConstraintRole`、ブループリントを Service Catalog の製品としてデプロイします。ブループリントの作成時に設定パイプラインとリリースパイプラインが実行するアクションの詳細については、このガイドの[「ブループリントの作成](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-create)」を参照してください。

**設計図を製品リポジトリに追加するには**

1. このガイドの「エンタープライズブループリントファクトリーのセットアップ」の指示に従って、[エンタープライズブループリントファクトリーをセットアップ](setup.md)していることを確認します。

1. `ServiceCataloglogLaunchConstraintRole` ロールのポリシーで、ブループリントで定義されたリソースをプロビジョニングできることを確認します。

1. 製品リポジトリ (`ServiceCatalog-BlueprintProductRepo`) で、新しいブループリントのフォルダを作成します。

1. IaC テンプレート (CloudFormation テンプレートまたは AWS CDK コンストラクト) を、作成したフォルダに貼り付けます。

1. 作成したフォルダに **product\_config.json** という名前のファイルを作成します。

1. ** product\_config.json** ファイルを開き、ファイルに以下を貼り付けます。

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

   コードの説明は以下のとおりです。
   + `<description>` は、ブループリントバージョンの簡単な説明です。
   + `<folder name>` は、製品リポジトリで作成したフォルダの名前です。
   + `<file name>` は IaC テンプレートの名前です
**注記**  
スキーマバージョンまたは製品バージョン名は、組織のポリシーに合わせて更新できます。

1. **product\_config.json** ファイルを保存して閉じます。

1. 次のコマンドを入力して、変更を製品リポジトリにマージします。

   ```
   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
   ```

**設定ファイルを更新するには**

1. 設定リポジトリ (`ServiceCatalog-ConfigRepo`) で、**config.yml** ファイルを開きます。

1. 新しいブループリントに必要な `portfolios` セクションと `products`セクションを編集します。詳細については、このガイドの[「設定ファイル](architecture-components.md#architecture-config-file)」を参照してください。

1. **config.yml** ファイルを保存して閉じます。

1. 次のコマンドを入力して、変更を設定リポジトリにマージします。

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

   このプルリクエストを承認すると、設定パイプラインが開始されます。設定パイプラインは、製品のリリースパイプラインを作成します。

**デプロイログを確認するには**

1. Enterprise Blueprint Factory 管理アカウントにサインインします。

1. [AWS CodePipeline コンソール](https://console.aws.amazon.com/codesuite/codepipeline/home)を開きます。

1. **Name** で、製品のリリースパイプラインを選択します。デフォルトでは、パイプライン名は です`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`。

1. [**View history (履歴の表示)**] を選択します。

1. パイプラインとステージ実行のステータスを表示します。ステータスの詳細については、CodePipeline ドキュメントの[「実行ステータスの表示](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console)」を参照してください。

1. パイプラインが失敗した場合、失敗の原因を確認します。パイプラインのモニタリングを設定する方法については、CodePipeline ドキュメントの[「パイプラインのモニタリング](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html)」を参照してください。cfn-lint または cfn\_nag チェックが原因でリリースパイプラインが失敗した場合は、テンプレートのエラーを修正します。別のプルリクエストを製品リポジトリに送信します。これにより、リリースパイプラインが再起動されます。テンプレートエラーの修正の詳細については、このガイドの[「トラブルシューティング](#using-factory-troubleshooting)」セクションを参照してください。

1. リリースパイプラインのステータスが になるまで待ちます`Succeeded`。

**デプロイを検証するには**

1. 組織内のコンシューマーアカウントにサインインします。

1. IAM `ServiceCatalogEndUserRole` ロールを引き受けます。

1. [Service Catalog コンソール](https://console.aws.amazon.com/servicecatalog/)を開きます。

1. ナビゲーションペインで、**[Products]** (製品) を選択します。

1. 新製品が製品リストで使用可能であることを確認します。

## 設計図の更新
<a name="using-factory-update"></a>

ブループリントの作成時に設定パイプラインとリリースパイプラインが実行するアクションの詳細については、このガイドの[「ブループリントの更新](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-update)」を参照してください。

**ブループリントを更新するには**

1. 製品リポジトリで、製品の フォルダに移動します。

1. 更新された IaC テンプレートを貼り付けます。ファイル名が以前のバージョンと同じであることを確認します。

1. **product\_config.json** ファイルを開きます。

1. では`ProductVersionName`、バージョン番号を更新します。

1. 以前の製品バージョンが将来デプロイされないようにするには、 に`Deprecated_Versions`以前のバージョン番号をカンマ区切りリストに入力します。

1. 次のコマンドを入力して、変更を製品リポジトリにマージします。

   ```
   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
   ```

   このプルリクエストを承認すると、製品のリリースパイプラインが開始されます。

**デプロイログを確認するには**

1. Enterprise Blueprint Factory 管理アカウントにサインインします。

1. [AWS CodePipeline コンソール](https://console.aws.amazon.com/codesuite/codepipeline/home)を開きます。

1. **Name** で、リリースパイプラインを選択します。デフォルトでは、パイプライン名は です`BluePrint_<Product-Name>-<CloudFormation-Stack-Name>`。

1. [**View history (履歴の表示)**] を選択します。

1. パイプラインとステージ実行のステータスを表示します。ステータスの詳細については、CodePipeline ドキュメントの[「実行ステータスの表示](https://docs.aws.amazon.com/codepipeline/latest/userguide/executions-view.html#pipelines-executions-status-console)」を参照してください。

1. パイプラインが失敗した場合、失敗の原因を確認します。パイプラインのモニタリングを設定する方法については、CodePipeline ドキュメントの[「パイプラインのモニタリング](https://docs.aws.amazon.com/codepipeline/latest/userguide/monitoring.html)」を参照してください。cfn-lint または cfn\_nag チェックが原因でリリースパイプラインが失敗した場合は、テンプレートのエラーを修正します。別のプルリクエストを製品リポジトリに送信します。これにより、リリースパイプラインが再起動されます。テンプレートエラーの修正の詳細については、このガイドの[「トラブルシューティング](#using-factory-troubleshooting)」セクションを参照してください。

1. リリースパイプラインのステータスが になるまで待ちます`Succeeded`。

**更新を検証するには**

1. 組織内のコンシューマーアカウントにサインインします。

1. IAM `ServiceCatalogEndUserRole` ロールを引き受けます。

1. [Service Catalog コンソール](https://console.aws.amazon.com/servicecatalog/)を開きます。

1. ナビゲーションペインで、**[Products]** (製品) を選択します。

1. 新しい製品バージョンが製品リストで使用可能であることを確認します。

## ブループリントの削除
<a name="using-factory-delete"></a>

製品を削除すると、Service Catalog は製品を含むすべてのポートフォリオからすべての製品バージョンを削除します。詳細については、Service Catalog ドキュメントの「製品[の削除](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html)」を参照してください。ブループリントの作成時に設定パイプラインとリリースパイプラインが実行するアクションの詳細については、このガイドの[「ブループリントの削除](architecture-blueprint-lifecycle.md#architecture-blueprint-lifecycle-delete)」を参照してください。

**ブループリントを削除するには**

1. 設定リポジトリで、**config.yml** ファイルを開きます。

1. 製品セクションを編集し、削除する製品を削除またはコメントアウトします。

1. **config.yml** ファイルを保存して閉じます。

1. 次のコマンドを入力して、変更を設定リポジトリにマージします。

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

   このプルリクエストを承認すると、設定パイプラインが開始されます。設定パイプラインは、製品とそのリリースパイプラインを削除します。

1. 製品リポジトリで、製品の内容を含む製品のフォルダを削除します。

1. 次のコマンドを入力して、変更を製品リポジトリにマージします。

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

**削除を検証するには**

1. 組織内のコンシューマーアカウントにサインインします。

1. IAM `ServiceCatalogEndUserRole` ロールを引き受けます。

1. [Service Catalog コンソール](https://console.aws.amazon.com/servicecatalog/)を開きます。

1. ナビゲーションペインで、**[Products]** (製品) を選択します。

1. 削除した製品が使用できなくなったことを確認します。

## トラブルシューティング
<a name="using-factory-troubleshooting"></a>

ブループリントを作成または更新すると、cfn-lint ツールと cfn-nag ツールによってブループリントが検証されます。リリースパイプラインの検証の詳細については、このガイドの[「リリースパイプライン](architecture-components.md#architecture-release-pipeline)」を参照してください。報告された構文またはセキュリティエラーにより、パイプラインは失敗します。リリースパイプラインを介してブループリントを正常にデプロイするには、ブループリントのエラーを修正する必要があります。

以下は、障害と警告の 2 つのセキュリティ関連のエラーを示す出力例です。

```
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
```

これらのエラーを修正するには、設計図ファイルで、Amazon Simple Notification Service (Amazon SNS) トピックポリシーの`*`プリンシパルを置き換え、 AWS Key Management Service （AWS KMS) キーをトピックに関連付けます。次のコード例は、これらの更新を示しています。

```
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
```