

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

# Enterprise Blueprint Factory のセットアップ
<a name="setup"></a>

このセクションでは、 AWS 環境で Enterprise Blueprint Factory をセットアップする方法について説明します。これには、Enterprise Blueprint Factory に必要なリポジトリと AWS リソースをセットアップするための詳細な手順が含まれています。

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

以下は、 AWS 環境で Enterprise Blueprint Factory をセットアップするための前提条件です。
+ 以下を実行します AWS アカウント。
  + Enterprise Blueprint Factory の管理と製品のリリースに使用される アカウント
  + リリースされた製品を消費する 1 つ以上のアカウント
+ すべてのアカウントは次のとおりです。
  + で組織として管理 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)
  + 同じ[組織単位 (OU)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) にある
  + 組織は[account-per-tenantモデルに従います。](https://aws.amazon.com/blogs/mt/managing-the-account-lifecycle-in-account-per-tenant-saas-environments-on-aws/)
+ 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)済み
+ 次の AWS リソースを作成する AWS CloudFormation スタックをデプロイするアクセス許可。
  + Amazon CloudWatch Logs ロググループ
  + AWS CodePipeline パイプライン
  + AWS CodeBuild プロジェクト
  + Amazon EventBridge イベントバスポリシーとルール
  + AWS Identity and Access Management (IAM) ロールとポリシー
  + AWS Key Management Service （AWS KMS) キーとキーポリシー
  + AWS Service Catalog ポートフォリオ、製品、プロビジョニング済み製品
  + Amazon Simple Notification Service (Amazon SNS) トピック、トピックポリシー、サブスクリプション
  + Amazon Simple Storage Service (Amazon S3) の バケット
  + AWS Systems Manager Parameter Store パラメータ

  これらのアクセス許可の設定の詳細については、[CloudFormation ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html)」および[「最小特権アクセス許可のポリシーの実装 AWS CloudFormation](https://docs.aws.amazon.com/prescriptive-guidance/latest/least-privilege-cloudformation/introduction.html)」を参照してください。
+ GitHub アカウント

## ベストプラクティス
<a name="setup-best-practices"></a>

 AWS 環境で Enterprise Blueprint Factory を設定するときは、次のベストプラクティスに従うことをお勧めします。
+ Enterprise Blueprint Factory をデプロイするために必要なアクセス許可を設定するときは、最小権限の原則に従い、必要な最小限のアクセス許可を付与します。詳細については、IAM ドキュメントの「[最小特権の付与](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv)」と「[セキュリティのベストプラクティス](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html)」を参照してください。
+ Service Catalog ポートフォリオへのアクセスを設定するときは、最小特権の原則に従い、特定のロール、ユーザー、または管理者にのみアクセスを許可します。Service Catalog [のセキュリティのベストプラクティス](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html)に従ってください。

## リポジトリの作成
<a name="setup-create-repos"></a>

このセクションでは、Enterprise Blueprint Factory [の設定リポジトリ](architecture-components.md#architecture-config-repo)と[製品リポジトリ](architecture-components.md#architecture-product-repo)を設定するのに役立ちます。リポジトリを設定するには、GitHub で指定されたリポジトリを[フォーク](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo)します。次に、 AWS CodeConnections を使用して GitHub リポジトリ[への接続](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-create-github.html)を作成します。次に、GitHub リポジトリをローカルマシンにクローンします。

**GitHub リポジトリをフォークするには**

1. [GitHub](https://github.com/login) にログインします。

1. Configuration [repo](https://github.com/aws-samples/aws-enterprise-blueprint-factory-config-repo) GitHub リポジトリに移動します。

1. **フォーク**を選択します。

1. **「新しいフォークを作成する**」ページの**「リポジトリ名」ボックスに**「」と入力します`ServiceCatalog-ConfigRepo`。

1. (オプション) 説明を入力します。

1. メイン**ブランチのみをコピーを選択します**。

1. **フォークの作成** を選択します。

1. これらのステップを繰り返して、[Code repo](https://github.com/aws-samples/aws-enterprise-blueprint-factory-code-repo) GitHub リポジトリをフォークします。このリポジトリ`ServiceCatalog-CodeRepo`の名前を入力します。

1. これらのステップを繰り返して、[Product repo](https://github.com/aws-samples/aws-enterprise-blueprint-factory-blueprint-repo) GitHub リポジトリをフォークします。このリポジトリ`ServiceCatalog-BlueprintProductRepo`の名前を入力します。

**CodeConnections 接続を作成するには**

1. AWS CLI で次のコマンドを入力して、GitHub への CodeConnections 接続を作成します。

   ```
   aws codeconnections create-connection --provider-type GitHub --connection-name <MyConnection>
   ```

1.  AWS デベロッパーツールコンソールを使用して接続を完了します。詳細については、「[Update a pending connection](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html)」を参照してください。

**フォークされたリポジトリのクローンを作成するには**
+ 次のコマンドを入力して、GitHub リポジトリをローカルワークステーションにクローンします。

  ```
  git clone git@github.com:<user>/aws-enterprise-blueprint-factory-config-repo ServiceCatalog-ConfigRepo
  git clone git@github.com:<user>/aws-enterprise-blueprint-factory-blueprint-repo ServiceCatalog-BlueprintProductRepo
  git clone git@github.com:<user>/aws-enterprise-blueprint-factory-code-repo ServiceCatalog-CodeRepo
  ```

## Enterprise Blueprint Factory のセットアップ
<a name="setup-factory"></a>

このセクションの手順では、ターゲットアカウントで Enterprise Blueprint Factory を設定する方法について説明します。GitHub からクローンした製品リポジトリには、2 つのサンプル CloudFormation テンプレート `BP-S3`と が含まれています`BP-SNS`。これらの手順に従って、これら 2 つのサンプルブループリントを製品として Service Catalog にデプロイします。

**ロールを設定するには**

1. ブループリント開発者のアカウントで、次の信頼ポリシーを作成し、次のように保存します`sc-enduserrole-trust-policy.json`。

   ```
   { 
     "Version": "2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {
         "AWS": "arn:aws:iam::123456789012:role/ServiceCatalogEndUserRole"
       },
       "Action": "sts:AssumeRole"
     }
   }
   ```

1. `ServiceCatalogEndUserRole` IAM ロールを作成するには、次のコマンドを入力します。

   ```
   aws iam create-role \
   --role-name ServiceCatalogEndUserRole \
   --assume-role-policy-document file://sc-enduserrole-trust-policy.json  
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess \
   -- role-name ServiceCatalogEndUserRole
   ```
**注記**  
開発者は、 `ServiceCatalogEndUserRole`ロールを使用して Service Catalog 製品をプロビジョニングします。このロールには、ブループリントで定義されたリソースを作成するためのアクセス許可は必要ありません。これは、最小特権のアクセス許可と職務分離のベストプラクティスに従います。

1. 次の信頼ポリシーを作成し、 として保存します`sc-launchconstraintrole-trust-policy.json`。

   ```
   { 
     "Version": "2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {
         "Service": "servicecatalog.amazonaws.com"
       },
       "Action": "sts:AssumeRole"
     }
   }
   ```

1. `ServiceCataloglogLaunchConstraintRole` IAM ロールを作成するには、次のコマンドを入力します。

   ```
   aws iam create-role \
   --role-name ServiceCataloglogLaunchConstraintRole \
   --assume-role-policy-document file://sc-launchconstraintrole-trust-policy.json  
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AmazonSNSFullAccess \
   --role-name ServiceCataloglogLaunchConstraintRole
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AWSCloudFormationFullAccess \
   --role-name ServiceCataloglogLaunchConstraintRole
   ```

1. IAM `ServiceCataloglogLaunchConstraintRole` ロールに次のポリシーを追加します。Service Catalog ドキュメントの[「起動ロールの設定](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html#constraints-launch-role)」で説明されているように、製品リソースに必要なその他のアクセス許可を含めます。

   ```
   {
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**注記**  
Service Catalog は、このロールを使用して CloudFormation スタックを Service Catalog の製品としてデプロイします。このロールの信頼ポリシーにより、Service Catalog のみが引き受けることができます。他のユーザーまたはサービスは、このロールを引き受けることができません。これは職務分離のベストプラクティスに従います。

1. 次の信頼ポリシーを作成し、次のように保存します`sc-codebuild-trust-policy.json`。

   ```
   { 
     "Version": "2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Allow",
       "Principal": {
         "Service": "codebuild.amazonaws.com"
       },
       "Action": "sts:AssumeRole"
     }
   }
   ```

1. IAM `codebuild-servicecatalog-admin-role` ロールを作成するには、次のコマンドを入力します。

   ```
   aws iam create-role \
   --role-name codebuild-servicecatalog-admin-role \
   --assume-role-policy-document file://sc-codebuild-trust-policy.json  
   aws iam attach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess \
   --role-name codebuild-servicecatalog-admin-role
   ```
**注記**  
設定パイプラインの CodeBuild ジョブはこのロールを使用します。

**Amazon S3 バケットを設定するには**
+ CodePipeline アーティファクトの保存に使用される Amazon Simple Storage Service (Amazon S3) バケットを作成するには、Amazon S3 ドキュメントの[「バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」の手順に従います。[Amazon S3 のセキュリティのベストプラクティス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)に従います。

**AWS Systems Manager パラメータを設定するには**
+ 次の表の [Systems Manager パラメータを作成するには、「Systems Manager でパラメータストア](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)パラメータを作成する」の手順に従います。これらのパラメータは、設定パイプラインをデプロイする CloudFormation テンプレートで使用されます。  
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/enterprise-blueprint-factory/setup.html)

**CloudFormation テンプレートを更新するには**

1. コードリポジトリ (`ServiceCatalog-CodeRepo`) で、**ServiceCatalog-Pipeline.yml** ファイルを開きます。

1. このファイルの次のパラメータのデフォルト値を編集します。
   + `ConfigRepositoryName` は、Enterprise Blueprint Factory 設定ファイルが保存されている GitHub リポジトリを保存する Systems Manager パラメータです。デフォルト値は `/blueprints/resources/ConfigRepo` です。
   + `CodeRepositoryName` は、Enterprise Blueprint Factory 設定パイプラインコードと`Bootstrapping-Admin-Product`コードが保存されている GitHub リポジトリを保存する Systems Manager パラメータです。デフォルト値は `/blueprints/resources/CodeRepo` です。
   + `BlueprintRepositoryName` は、Enterprise Blueprint Factory ブループリントが保存されている GitHub リポジトリを保存する Systems Manager パラメータです。デフォルト値は `/blueprints/resources/BlueprintRepo` です。
   + `BranchName` は、設定ファイルが保存されている設定リポジトリのブランチです。デフォルト値は `main` です。
   + `VPCID` は、ターゲット VPC の ID を保存する Systems Manager パラメータです。デフォルト値は `/blueprints/resources/vpc_id` です。
   + `Subnets` は、ターゲットサブネットの IDs を保存する Systems Manager パラメータです。デフォルト値は `/blueprints/resources/subnets` です。
   + `SecurityGroupIds` は、ターゲットセキュリティグループの IDs パラメータです。デフォルト値は `/blueprints/resources/securitygroups` です。
   + `IamRoleName` は、CodeBuild ジョブが使用する IAM ロールの名前です。デフォルト値は です`codebuild-servicecatalog-admin-role`。
   + `EnvironmentType` は、Enterprise Blueprint Factory をデプロイする環境です。デフォルト値は `DEV` です。
   + `ArtifactBucket` は、CodePipeline がアーティファクトを保存する Amazon S3 バケットを保存する Systems Manager パラメータです。デフォルト値は です`/blueprints/resources/artifacts-bucket-name`。
   + `CodeConnectionArn` は、GitHub への CodeConnections 接続の Amazon リソースネーム (ARN) です。

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

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

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

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

1. 組織に必要なポートフォリオセクションの値を更新します。たとえば、 `portfolio_access_roles`および `share_to_ou` 属性を更新します。詳細については、このガイドの[「設定ファイル](architecture-components.md#architecture-config-file)」を参照してください。

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

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

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

**CloudFormation スタックをデプロイするには**

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

1. [管理権限を持つ](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html) IAM ロールに切り替えます。

1. [ クラウドフォーメーション コンソール](https://console.aws.amazon.com/cloudformation/)を開きます。

1. 画面上部のナビゲーションバーで、ターゲットを選択します AWS リージョン。

1. **[スタック]** ページでは、右上の **[スタックの作成]** を選択してから、**[新しいリソースを使用 (標準)]** を選択します。

1. **[Prepare template]** (テンプレートの準備) の **[Template is ready]** (テンプレートの準備が完了しました) を選択します。

1. **[テンプレートの指定]** で、**[テンプレートファイルのアップロード]** を選択します。

1. **ファイルの選択** を選択し、 `ServiceCatalog-CodeRepo`フォルダに移動し、**ServiceCatalog-Pipeline.yml** を選択します。

1. **[次へ]** を選択して続行し、テンプレートを検証します。

1. **スタック名**には、スタックの名前を入力します。

1. **パラメータ**セクションで、デフォルト値を変更しないでください。

1. [**次へ**] を選択します。

1. **スタックオプションの設定**ページで、デフォルト値を変更せずに、**次へ**を選択します。

1. **確認と作成**ページで、テンプレートとスタックの詳細を確認し、**送信**を選択します。

1. スタックデプロイの進行状況をモニタリングします。詳細については、[CloudFormation ドキュメント](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/monitor-stack-progress.html)を参照してください。

1. ステータスが に変わるまで待ちます`CREATE_COMPLETE`。

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

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

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

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

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

1. **Name** で、設定パイプラインを選択します。デフォルトでは、パイプライン名は です`ServiceCatalog-Pipeline`。

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

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

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

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

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

1. **BP-S3-Product** および **BP-SNS-Product** 製品が使用可能であることを確認します。これは、サンプルブループリントの製品リリースパイプラインが正常に完了したことを示します。

1. Enterprise Blueprint Factory のセットアップ時にデプロイしたサンプルブループリントを削除する場合は、[「ブループリントの削除](using-factory.md#using-factory-delete)」の手順に従います。

## Enterprise Blueprint Factory を削除する
<a name="setup-delete-factory"></a>

Enterprise Blueprint Factory を使用していない場合は、それを削除して、その AWS リソースに関連するコストの発生を停止できます。

**リソースを削除するには**

1. Enterprise Blueprint Factory 管理アカウントにデプロイされた IAM ロールを削除するには、次のコマンドを入力します。

   ```
   aws iam detach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess \
   --role-name ServiceCatalogEndUserRole
   aws iam delete-role --role-name ServiceCatalogEndUserRole
   aws iam detach-role-policy \
   --policy-arn arn:aws:iam::aws:policy/AmazonSNSFullAccess \
   --role-name ServiceCataloglogLaunchConstraintRole
   aws iam delete-role --role-name ServiceCataloglogLaunchConstraintRole
   ```

1. Enterprise Blueprint Factory の CloudFormation スタックを削除します。手順については、[CloudFormation コンソールからスタック](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)を削除する」または「 [からスタックを削除する AWS CLI](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/service_code_examples.html#delete-stack-sdk)」を参照してください。

1. CodePipeline アーティファクトの保存に使用される Amazon S3 バケットを削除します。手順については、Amazon S3 ドキュメント[の「バケットの削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)」を参照してください。

1. Parameter Store から次の Systems Manager パラメータを削除します。
   + `/blueprints/resources/vpc_id`
   + `/blueprints/resources/subnets`
   + `/blueprints/resources/securitygroups`
   + `/blueprints/resources/artifacts-bucket-name`
   + `/blueprints/resources/BlueprintRepo`
   + `/blueprints/resources/CodeRepo`
   + `/blueprints/resources/ConfigRepo`

   手順については、Systems Manager ドキュメントの[「パラメータストアからのパラメータの削除](https://docs.aws.amazon.com/systems-manager/latest/userguide/deleting-parameters.html)」を参照してください。