

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

# Enterprise Blueprint Factory コンポーネント
<a name="architecture-components"></a>

Enterprise Blueprint Factory は、次のコンポーネントで構成されています。
+ [製品リポジトリ](#architecture-product-repo) – ブループリントを保存するリポジトリ。
+ [設定リポジトリ](#architecture-config-repo) – AWS Service Catalog ポートフォリオと製品を定義する設定ファイルを保存するリポジトリ。
+ [設定ファイル](#architecture-config-file) ­ – 使用可能なブループリント、使用できるユーザー、使用方法を定義する設定ファイル。
+ [設定パイプライン](#architecture-config-pipeline) – Service Catalog ポートフォリオとポートフォリオ共有をセットアップし、各製品のリリースパイプラインを作成する DevOps CI/CD パイプライン。
+ [リリースパイプライン](#architecture-release-pipeline) – Service Catalog 製品としてブループリントをリリースする DevOps CI/CD パイプライン。 

クラウドインフラストラクチャチームは、通常、各ブループリントを承認する必要があるため、エンタープライズブループリントファクトリー全体を管理します。ただし、DevOps コードチームは通常、設定パイプラインとリリースパイプラインを担当します。新しいブループリントをリリースするために、デベロッパーは製品リポジトリ、設定リポジトリ、および設定ファイルとのみやり取りします。

## 製品リポジトリ
<a name="architecture-product-repo"></a>

製品リポジトリは、組織が承認するブループリントを保存する一元的な場所です。 ブループリント管理チームとセキュリティチームは、このリポジトリへのプルリクエストを確認して、各ブループリントが組織およびセキュリティ要件を満たしていることを確認します。このガイドでは、リポジトリに GitHub を使用しますが、別の方法を使用することもできます。

## 設定リポジトリ
<a name="architecture-config-repo"></a>

設定リポジトリ (設定リポジトリ) は、組織が Enterprise Blueprint Factory を通じてリリースされた Service Catalog ポートフォリオと製品の設定ファイルを保存する場所です。このガイドでは、リポジトリに GitHub を使用しますが、別の方法を使用することもできます。

## 設定ファイル
<a name="architecture-config-file"></a>

Enterprise Blueprint Factory 設定ファイル (設定ファイル) は、設計図管理チームが所有する設定リポジトリに保存されます。このファイルの名前は **bp\_config.yml** です。開発者がこのファイルを更新すると、ブループリント管理チームが変更を確認します。変更をメインブランチにマージすると、設定パイプラインが開始されます。設定ファイルは、Enterprise Blueprint Factory を通じて管理されるすべてのブループリントの公開、共有、配布を調整します。

設定ファイルは、 `portfolios`と の 2 つのメインオブジェクトで構成される YAML ファイルです`products`。以下は、サンプル設定ファイルの例です。

```
portfolios:  
  - portfolio_name: blueprint-portfolio
    owner: Blueprint-team
    provider_name: AWS
    description: "Blueprint portfolio"
    portfolio_access_role:
       - arn:aws:iam::123456789012:role/examplerole
       - arn:aws:iam::123456789012:user/exampleuser
    share_to_ou:
     - org_id: "o-exampleOrgID"
    stack_tags:
      DataClassification: Confidential
      Organization: AWS
products:
  - name: BP-S3-Product
    description: "Blueprint for BP-S3 product"
    product_config_file: 'BP-S3/product_config.json'
    owner: Blueprint-team
    stack_tags:
      DataClassification: Confidential
      Organization: AWS
    portfolio_associations:
      - blueprint-portfolio
    launch_constraint_role: arn:aws:iam::123456789012:role/examplelaunchrole
```

`portfolios` オブジェクトで、ターゲット Service Catalog ポートフォリオを定義します。ポートフォリオごとに、次の属性を指定します。
+ `portfolio_name` はポートフォリオの名前です。この属性は必須です。
+ `owner` は、ポートフォリオを所有するチームの名前です。この属性はオプションです。
+ `provider_name` は、ポートフォリオを管理するチームまたは組織の名前です。デフォルト値は `AWS` です。この属性は必須です。
+ `description` はポートフォリオの簡単な説明です。この属性はオプションです。
+ `portfolio_access_roles` は、ポートフォリオとその関連製品へのアクセスが許可されている AWS Identity and Access Management (IAM) [ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (ユーザー、ロール、またはグループ) です。この属性はオプションです。
+ `share_to_ou` は、ポートフォリオが共有 AWS Organizations されている の[組織単位](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_ous.html) (OU) です。エンドユーザーは、ターゲット OU のメンバー AWS アカウント である にこのポートフォリオの製品をデプロイできます。この属性はオプションです。
+ `stack_tags` は、ポートフォリオに適用される[タグ](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html)です。この属性はオプションです。

`products` オブジェクトで、Service Catalog で製品としてリリースする各ブループリントを定義します。製品ごとに、次の属性を指定します。
+ `name` は、Service Catalog の製品の名前です。この属性は必須です。
+ `description` は製品の簡単な説明です。この属性は必須です。
+ `product_config_file` は、製品リポジトリに保存されているブループリント製品設定ファイルの名前です。この属性は必須です。
+ `owner` は、製品を所有するチームの名前です。この属性は必須です。
+ `stack_tags` は、製品に適用されるタグです。この属性はオプションです。
+ `portfolio_associations` は、製品を含むターゲットポートフォリオです。この属性はオプションです。
**注記**  
Enterprise Blueprint Factory で管理されるポートフォリオにのみ製品を追加することをお勧めします。Enterprise Blueprint Factory で管理されていないポートフォリオに製品を追加する場合は、ユーザーの IAM ポリシーで [AssociateProductWithPortfolio](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_AssociateProductWithPortfolio.html) アクションを許可する必要があります。ただし、セキュリティのベストプラクティスとして、このアクションは Enterprise Blueprint Factory 設定パイプラインにのみ許可することをお勧めします。
+ `launch_constraint_role` は、エンドユーザーが製品を起動するときに Service Catalog が引き受ける起動[ロール](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html)です。この属性は必須です。

## 設定パイプライン
<a name="architecture-config-pipeline"></a>

設定パイプライン (設定パイプライン) は、Service Catalog ポートフォリオとポートフォリオ共有の設定を自動化します。また、各製品のリリースパイプラインも作成します。このパイプラインは [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)リソースです。設定ファイルを更新すると、設定パイプラインが呼び出されます。

設定パイプラインを初めて呼び出すと、設定ファイルで定義されていない 2 つの追加のポートフォリオが作成されます。
+ `Blueprint-portfolio` – Enterprise Blueprint Factory を通じてデプロイするすべての製品が、このポートフォリオに追加されます。このポートフォリオは、設定ファイル で指定した IAM プリンシパルと組織単位で使用できます。
+ `Bootstrapping-Admin-Portfolio` – `Bootstrapping-Admin-Product`製品はこのポートフォリオに関連付けられています。この製品は、リリースパイプライン用の CloudFormation テンプレートです。ブループリント管理チームのみがこのポートフォリオにアクセスして、管理製品を管理できるようにします。

**設定パイプラインステージ**

次の図は、設定パイプラインのステージと、パイプラインがやり取りするリソースを示しています。パイプラインの各ステージは [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)プロジェクトです。



![Enterprise Blueprint Factory 設定パイプラインのステージ。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/enterprise-blueprint-factory/images/configuration-pipeline-stages.png)


設定パイプラインのステージは次のとおりです。

1. **ポートフォリオのデプロイ** – 設定パイプラインは、設定ファイルに追加されたポートフォリオをデプロイするか、設定ファイルから削除されたポートフォリオを削除します。ポートフォリオに変更がない場合、パイプラインはこのステージをスキップします。

1. **ポートフォリオの共有** – 設定パイプラインは、ポートフォリオをターゲット組織単位 (OUs。ポートフォリオ共有に変更がない場合、パイプラインはこのステージをスキップします。

1. **Blueprint-Admin-Bootstrapping-Product** – 設定パイプラインは`ServiceCatalog-CodeRepo`、リポジトリから`bp-pipeline`** **ブループリントを取得し、 として Service Catalog にデプロイします`Bootstrapping-Admin-Product`。** **この製品は、リリースパイプラインの作成に使用される CloudFormation テンプレートです。このテンプレートを Service Catalog 製品** **としてデプロイすると、バージョン管理を維持できます。`bp-pipeline`** **ブループリントに変更がない場合、パイプラインはこのステージをスキップします。

1. **リリースパイプラインの作成** – 設定ファイルの製品属性に基づいて、設定パイプラインはスタックパラメータを準備し、製品のリリースパイプラインを作成する CloudFormation スタックを起動します。 詳細については、このガイドの[「リリースパイプライン](#architecture-release-pipeline)」を参照してください。

1. **製品のデプロイ** – リリースパイプラインは、設計図を Service Catalog 製品としてデプロイし、ターゲットポートフォリオに関連付けます。エンドユーザーは、ターゲット OU のメンバー AWS アカウント である製品を にデプロイできるようになりました。

## リリースパイプライン
<a name="architecture-release-pipeline"></a>

リリースパイプラインは、Service Catalog 製品としてのブループリントのリリースを自動化します。このパイプラインは [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)リソースです。組織が新しいブループリントをリリースする場合、開発者は IaC テンプレートとその製品設定ファイルを製品リポジトリにアップロードします。製品の詳細を設定ファイルに追加すると、設定パイプラインがトリガーされます。設定パイプラインは、このブループリントのリリースパイプラインを作成します。ブループリントの後続の更新により、このリリースパイプラインがトリガーされ、Service Catalog の製品が新しいバージョンで更新されます。

リリースパイプラインには、ブループリントのセキュリティとコンプライアンスチェックを自動化する[プロアクティブコントロール](apg-gloss.md#glossary-proactive-control)が含まれています。*プロアクティブコントロール*は、非準拠のリソースの作成を防ぐように設計されています。これらのコントロールは、応答コントロールや検出コントロールなど、他のタイプの[セキュリティコントロールによって処理されるセキュリティ](apg-gloss.md#glossary-security-control)イベントの数を減らすことができます。プロアクティブコントロールにより、デプロイされたリソースがデプロイ前に準拠していることが確認されるため、対応や修復が必要な検出イベントはありません。

設定パイプラインを初めて呼び出すと、 という名前の Service Catalog 製品が作成されます`Bootstrapping-Admin-Product`。この製品は、リリースパイプラインの CloudFormation テンプレートです。次の図に示すように、設定パイプラインは `Bootstrapping-Admin-Product`製品を使用して、新しいブループリントごとに専用のリリースパイプラインを作成します。ブループリントとリリースパイプラインの間には one-to-one の関係があります。



![設定パイプラインは、製品を使用して、各ブループリントのリリースパイプラインを作成します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/enterprise-blueprint-factory/images/blueprint-pipeline-ratio.png)


**リリースパイプラインステージ**

次の図は、リリースパイプラインのデフォルトステージと、パイプラインがやり取りするリソースを示しています。パイプラインの各ステージは CodeBuild プロジェクトです。



![Enterprise Blueprint Factory リリースパイプラインのステージ。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/enterprise-blueprint-factory/images/release-pipeline-stages.png)


リリースパイプラインのステージは次のとおりです。

1. **ファイルアラインメント** – このステージでは、ブループリントが CloudFormation [テンプレート](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-overview.html#cfn-concepts-templates)または AWS Cloud Development Kit (AWS CDK) [コンストラクト](https://docs.aws.amazon.com/cdk/v2/guide/constructs.html)であることを確認します。ブループリントが AWS CDK コンストラクトの場合、このステージは AWS CDK コンストラクトを CloudFormation テンプレートに合成します。このプロセスは、CloudFormation を通じてデプロイを自動化および標準化します。エラーが見つかった場合、パイプラインは失敗します。

1. **構文チェック** — 構文エラーは CloudFormation デプロイエラーの一般的な原因です。この段階では、[AWS CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) はテンプレートを[AWS CloudFormation リソース仕様](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html)と比較することで構文エラーをチェックします。また、リソースプロパティの有効な値の確認やベストプラクティスの遵守などの他のチェックも実行します。エラーが見つかった場合、パイプラインは失敗し、cfn-lint は提案を返します。

1. **コントロールチェック** – この段階では、[cfn\_nag](https://github.com/stelligent/cfn_nag) はパターンを検索して潜在的なセキュリティ問題をチェックします。たとえば、過度に寛容なセキュリティグループと AWS Identity and Access Management (IAM) ポリシー、暗号化の欠落、パスワードリテラルをチェックします。エラーが見つかった場合、パイプラインは失敗し、cfn\_nag は候補を返します。

1. **バージョンチェック **– リリースパイプラインは、製品設定ファイルで定義されているバージョン戦略に基づいてバージョン管理を実行します。製品バージョンが[イミュータブル](apg-gloss.md#glossary-immutable-infrastructure)と定義されている場合、Service Catalog は以前の製品バージョンを非アクティブ化します。

1. **製品の公開** – リリースパイプラインは、Service Catalog で製品をリリースします。

**注記**  
リリースパイプラインはカスタマイズ可能です。たとえば、ユースケースに適用されないステージを削除できます。他のコントロールチェック、追加の検証、または手動承認ステップを追加する場合は、ステージをさらに追加することもできます。このガイドには、リリースパイプラインを変更する手順は含まれていません。詳細については、[CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) と [CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) のドキュメントを参照してください。