View a markdown version of this page

Enterprise Blueprint Factory のセットアップ - AWS 規範ガイダンス

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

Enterprise Blueprint Factory のセットアップ

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

前提条件

以下は、 AWS 環境で Enterprise Blueprint Factory をセットアップするための前提条件です。

  • 以下を実行します AWS アカウント。

    • Enterprise Blueprint Factory の管理と製品のリリースに使用される アカウント

    • リリースされた製品を消費する 1 つ以上のアカウント

  • すべてのアカウントは次のとおりです。

  • AWS Command Line Interface (AWS CLI)、インストールおよび設定済み

  • 次の 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 ドキュメント」および「最小特権アクセス許可のポリシーの実装 AWS CloudFormation」を参照してください。

  • GitHub アカウント

ベストプラクティス

AWS 環境で Enterprise Blueprint Factory を設定するときは、次のベストプラクティスに従うことをお勧めします。

  • Enterprise Blueprint Factory をデプロイするために必要なアクセス許可を設定するときは、最小権限の原則に従い、必要な最小限のアクセス許可を付与します。詳細については、IAM ドキュメントの「最小特権の付与」と「セキュリティのベストプラクティス」を参照してください。

  • Service Catalog ポートフォリオへのアクセスを設定するときは、最小特権の原則に従い、特定のロール、ユーザー、または管理者にのみアクセスを許可します。Service Catalog のセキュリティのベストプラクティスに従ってください。

リポジトリの作成

このセクションでは、Enterprise Blueprint Factory の設定リポジトリ製品リポジトリを設定するのに役立ちます。リポジトリを設定するには、GitHub で指定されたリポジトリをフォークします。次に、 AWS CodeConnections を使用して GitHub リポジトリへの接続を作成します。次に、GitHub リポジトリをローカルマシンにクローンします。

GitHub リポジトリをフォークするには
  1. GitHub にログインします。

  2. Configuration repo GitHub リポジトリに移動します。

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

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

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

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

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

  8. これらのステップを繰り返して、Code repo GitHub リポジトリをフォークします。このリポジトリServiceCatalog-CodeRepoの名前を入力します。

  9. これらのステップを繰り返して、Product repo GitHub リポジトリをフォークします。このリポジトリServiceCatalog-BlueprintProductRepoの名前を入力します。

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

    aws codeconnections create-connection --provider-type GitHub --connection-name <MyConnection>
  2. AWS デベロッパーツールコンソールを使用して接続を完了します。詳細については、「Update a pending connection」を参照してください。

フォークされたリポジトリのクローンを作成するには
  • 次のコマンドを入力して、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 のセットアップ

このセクションの手順では、ターゲットアカウントで 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" } }
  2. 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 製品をプロビジョニングします。このロールには、ブループリントで定義されたリソースを作成するためのアクセス許可は必要ありません。これは、最小特権のアクセス許可と職務分離のベストプラクティスに従います。

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

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  4. 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
  5. IAM ServiceCataloglogLaunchConstraintRole ロールに次のポリシーを追加します。Service Catalog ドキュメントの「起動ロールの設定」で説明されているように、製品リソースに必要なその他のアクセス許可を含めます。

    { "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":"*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/servicecatalog:provisioning":"true" } } ] }
    注記

    Service Catalog は、このロールを使用して CloudFormation スタックを Service Catalog の製品としてデプロイします。このロールの信頼ポリシーにより、Service Catalog のみが引き受けることができます。他のユーザーまたはサービスは、このロールを引き受けることができません。これは職務分離のベストプラクティスに従います。

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

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": { "Service": "codebuild.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  7. 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 バケットを設定するには
AWS Systems Manager パラメータを設定するには
  • 次の表の Systems Manager パラメータを作成するには、「Systems Manager でパラメータストアパラメータを作成する」の手順に従います。これらのパラメータは、設定パイプラインをデプロイする CloudFormation テンプレートで使用されます。

    パラメータ名 説明
    /blueprints/resources/vpc_id 文字列 ターゲット Virtual Private Cloud (VPC) の ID を保存するパラメータ。
    /blueprints/resources/subnets StringList ターゲットサブネットIDs を保存するパラメータ。
    /blueprints/resources/securitygroups StringList ターゲットセキュリティグループの IDs を保存するパラメータ。
    /blueprints/resources/artifacts-bucket-name 文字列 CodePipeline アーティファクトに使用される Amazon S3 バケット名を保存するパラメータ。
    /blueprints/resources/BlueprintRepo 文字列 Enterprise Blueprint Factory ブループリントが保存されている GitHub リポジトリを保存するパラメータ。デフォルト値は <user>/aws-enterprise-blueprint-factory-blueprint-repo です。
    /blueprints/resources/CodeRepo 文字列 Enterprise Blueprint Factory 設定パイプラインコードとBootstrapping-Admin-Productコードが保存される GitHub リポジトリを保存するパラメータ。デフォルト値は <user>/aws-enterprise-blueprint-factory-code-repo です。
    /blueprints/resources/ConfigRepo 文字列 Enterprise Blueprint Factory 設定ファイルが保存されている GitHub リポジトリを保存するパラメータ。デフォルト値は <user>/aws-enterprise-blueprint-factory-config-repo です。
CloudFormation テンプレートを更新するには
  1. コードリポジトリ (ServiceCatalog-CodeRepo) で、ServiceCatalog-Pipeline.yml ファイルを開きます。

  2. このファイルの次のパラメータのデフォルト値を編集します。

    • 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) です。

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

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

    cd ServiceCatalog-CodeRepo git add ServiceCatalog-Pipeline.yml git commit -m "<description of change>" git push origin main
  5. 設定リポジトリ (ServiceCatalog-ConfigRepo) で、bp_config.yml ファイルを開きます。

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

  7. bp_config.yml ファイルを保存して閉じます。

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

    cd ServiceCatalog-ConfigRepo git add bp_config.yml git commit -m "<description of change>" git push origin main
CloudFormation スタックをデプロイするには
  1. Enterprise Blueprint Factory 管理アカウントにサインインします。

  2. 管理権限を持つ IAM ロールに切り替えます。

  3. クラウドフォーメーション コンソールを開きます。

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

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

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

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

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

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

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

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

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

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

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

  15. スタックデプロイの進行状況をモニタリングします。詳細については、CloudFormation ドキュメントを参照してください。

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

デプロイを検証するには
  1. AWS Service Catalog コンソールを開きます。

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

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

  4. AWS CodePipeline コンソールを開きます。

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

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

  7. パイプラインとステージの実行のステータスを表示します。ステータスの詳細については、CodePipeline ドキュメントの「実行ステータスの表示」を参照してください。

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

  9. Service Catalog コンソールを開きます。

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

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

  12. Enterprise Blueprint Factory のセットアップ時にデプロイしたサンプルブループリントを削除する場合は、「ブループリントの削除」の手順に従います。

Enterprise Blueprint Factory を削除する

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
  2. Enterprise Blueprint Factory の CloudFormation スタックを削除します。手順については、CloudFormation コンソールからスタックを削除する」または「 からスタックを削除する AWS CLI」を参照してください。

  3. CodePipeline アーティファクトの保存に使用される Amazon S3 バケットを削除します。手順については、Amazon S3 ドキュメントの「バケットの削除」を参照してください。

  4. 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 ドキュメントの「パラメータストアからのパラメータの削除」を参照してください。