翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Step Functions と Lambda プロキシ関数を使用してAWSアカウント間で CodeBuild プロジェクトを起動する
作成者: Richard Milner-Watts (AWS) と Amit Anjarlekar (AWS)
コードリポジトリ: Cross-Account CodeBuild Proxy | 環境:本稼働 | テクノロジー: DevOps、管理とガバナンス、オペレーション、サーバーレス |
AWS サービス: AWS CodeBuild、AWSLambda、AWSStep Functions、AWSX-Ray、 AWS CloudFormation |
[概要]
このパターンは、AWSStep Functions と AWS Lambda プロキシ関数を使用して、複数のAWSアカウントでAWS CodeBuild プロジェクトを非同期的に起動する方法を示しています。パターンのサンプル Step Functions ステートマシンを使用して、 CodeBuild プロジェクトの成功をテストできます。
CodeBuild は、フルマネージドランタイム環境から AWS コマンドラインインターフェイス (AWS CLI) を使用して運用タスクを起動するのに役立ちます。環境変数を上書きすることで、実行時に CodeBuild プロジェクトの動作を変更できます。さらに、 CodeBuild を使用してワークフローを管理できます。詳細については、AWS「ワークショップウェブサイト」の「サービスカタログツール
前提条件と制限
前提条件
2 つのアクティブなAWSアカウント: Step Functions を使用して Lambda プロキシ関数を呼び出すためのソースアカウントと、リモート CodeBuild サンプルプロジェクトを構築するためのターゲットアカウント
制約事項
このパターンを使用して、アーティファクトをアカウント間でコピーすることはできません。
アーキテクチャ
このパターンが構築するアーキテクチャを次の図に示します。
この図表は、次のワークフローを示しています:
Step Functions ステートマシンは、指定された入力マップを解析し、定義したアカウント、リージョン、プロジェクトごとに Lambda プロキシ関数 (
codebuild-proxy-lambda
) を呼び出します。Lambda プロキシ関数は、AWSSecurity Token Service (AWS STS) を使用して、ターゲットアカウントのIAMポリシー (
codebuild-proxy-role
) に関連付けられているIAMプロキシロール (codebuild-proxy-policy
) を引き受けます。引き受けたロールを使用して、Lambda 関数は CodeBuild プロジェクトを起動し、 CodeBuild ジョブ ID を返します。Step Functions は、マシンループをステートし、成功または失敗のステータスを受信するまで CodeBuild ジョブをポーリングします。
ステートマシンロジックを次の図に示します。
テクノロジースタック
AWS CloudFormation
CodeBuild
IAM
Lambda
Step Functions
X-Ray
ツール
AWS CloudFormation は、AWSリソースをセットアップし、迅速かつ一貫してプロビジョニングし、AWSアカウントとリージョン全体のライフサイクルを通じてリソースを管理するのに役立ちます。
AWS CloudFormation Designer には、 CloudFormation テンプレートの表示と編集に役立つ統合JSONエディタとYAMLエディタが用意されています。
AWS CodeBuild は、ソースコードのコンパイル、ユニットテストの実行、デプロイの準備が整ったアーティファクトの生成に役立つフルマネージドビルドサービスです。
AWS Identity and Access Management (IAM) は、誰が認証され、誰に使用を許可されているかを制御することで、AWSリソースへのアクセスを安全に管理します。
AWS Lambda は、サーバーのプロビジョニングや管理を必要とせずにコードを実行するのに役立つコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。
AWS Step Functions は、Lambda AWS 関数とその他のサービスを組み合わせてビジネスクリティカルなアプリケーションを構築するのに役立つサーバーレスオーケストレーションAWSサービスです。
AWS X-Ray は、アプリケーションが処理するリクエストに関するデータを収集するのに役立ちます。また、そのデータを表示、フィルタリング、インサイトを取得して、最適化の問題や機会を特定できるツールも提供します。
コード
このパターンのサンプルコードは GitHub、クロスアカウント CodeBuild プロキシ
ベストプラクティス
Step Function ステートマシンの待機時間値を調整して、ジョブステータスのポーリングリクエストを最小限に抑えます。 CodeBuild プロジェクトで予想される実行時間を使用します。
Step Functions でマップの
MaxConcurrency
プロパティを調整して、並列に実行できる CodeBuild プロジェクトの数を制御します。必要に応じて、サンプルコードを確認して本番稼働準備を整えます。ソリューションによってログに記録される可能性のあるデータと、デフォルトの Amazon CloudWatch 暗号化で十分かどうかを検討します。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
AWS アカウント を記録しますIDs。 | AWS アカウント間のアクセスを設定するには、 アカウントIDsが必要です。 ソースAWSアカウントとターゲットアカウントのアカウント ID を記録します。詳細については、IAMドキュメントのAWS「アカウント ID の検索」を参照してください。 | AWS DevOps |
AWS CloudFormation テンプレートをダウンロードします。 |
注: AWS CloudFormation テンプレートでは、 | AWS DevOps |
AWS CloudFormation スタックを作成してデプロイします。 |
注: ターゲットアカウントにリソースを作成する前に、プロキシ Lambda 関数のAWS CloudFormation スタックを作成する必要があります。ターゲットアカウントに信頼ポリシーを作成すると、IAMロールはロール名から内部識別子に変換されます。そのため、IAMロールはすでに存在している必要があります。 | AWS DevOps |
プロキシ関数とステートマシンが作成されていることを確認します。 |
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
AWS CloudFormation スタックを作成してデプロイします。 |
| AWS DevOps |
サンプル CodeBuild プロジェクトの作成を確認します。 |
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
ステートマシンを起動します。 |
| AWS DevOps |
環境変数を検証します。 |
| AWS DevOps |
トラブルシューティング
問題 | ソリューション |
---|---|
Step Functions の実行に想定以上に時間がかかります。 | Step Function ステートマシンのマップの |
CodeBuild ジョブの実行に予想以上に時間がかかります。 |
|