AWS でサードパーティーの Git ソースリポジトリを使用する CodePipeline - AWS 規範ガイダンス

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

AWS でサードパーティーの Git ソースリポジトリを使用する CodePipeline

作成者: Kirankumar Chandrashekar (AWS)

環境:PoC またはパイロット

テクノロジー: DevOps

ワークロード: オープンソース

AWS サービス: AWS CodeBuild、AWS CodePipeline、AWS Lambda

[概要]

このパターンでは、サードパーティーの Git ソースリポジトリ CodePipeline で AWS を使用する方法について説明します。

AWS CodePipeline は、ソフトウェアの構築、テスト、デプロイのタスクを自動化する継続的デリバリーサービスです。このサービスは現在、、AWS CodeCommit GitHub、および Atlassian Bitbucket によって管理される Git リポジトリをサポートしています。ただし、一部の企業では、シングルサインオン (SSO) サービスとMicrosoft Active Directoryと統合されたサードパーティ製の Git リポジトリを認証に使用しています。カスタムアクションとウェブフックを作成 CodePipeline することで、これらのサードパーティーの Git リポジトリを のソースとして使用できます。

ウェブフックは、 GitHub リポジトリなどの別のツールのイベントを検出し、それらの外部イベントをパイプラインに接続する HTTP 通知です。でウェブフックを作成すると CodePipeline、サービスは Git リポジトリのウェブフックで使用できる URL を返します。Git リポジトリの特定のブランチにコードをプッシュすると、Git ウェブフックはこの URL を介して CodePipeline ウェブフックを開始し、パイプラインのソースステージを進行中に設定します。パイプラインがこの状態にある場合、ジョブワーカーはカスタムジョブ CodePipeline をポーリングし、ジョブを実行し、成功または失敗のステータスを に送信します CodePipeline。この場合、パイプラインはソースステージにあるため、ジョブワーカーは Git リポジトリのコンテンツを取得して圧縮し、ポーリングされたジョブによって提供されたオブジェクトキーを使用して、パイプラインのアーティファクトが保存されている Amazon Simple Storage Service (Amazon S3) バケットにアップロードします。カスタムアクションの移行を Amazon のイベントに関連付けて CloudWatch、イベントに基づいてジョブワーカーを開始することもできます。この設定により、サービスがネイティブにサポートしていないサードパーティーの Git リポジトリを のソースとして使用できます CodePipeline。

前提条件と制限

前提条件

  • アクティブなAWS アカウント

  • ウェブフックをサポートし、インターネット経由で CodePipeline ウェブフック URL に接続できる Git リポジトリ

  • AWS コマンドラインインターフェイス (AWS CLI) が「インストールされ」、AWS アカウントと連携するように「設定されている

アーキテクチャ

このパターンには以下のステップが含まれます。

  1. ユーザーは Git リポジトリにコードをコミットします。

  2. Git ウェブフックが呼び出されます。

  3. CodePipeline ウェブフックが呼び出されます。

  4. パイプラインは「進行中」に設定され、ソースステージは「進行中」状態に設定されます。

  5. ソースステージアクションは、開始されたことを示す CloudWatch イベントルールを開始します。

  6. CloudWatch イベントは Lambda 関数を開始します。

  7. Lambda 関数はカスタムアクションジョブの詳細を取得します。

  8. Lambda 関数は AWS を開始し CodeBuild 、すべてのジョブ関連情報を渡します。

  9. CodeBuild は、Secrets Manager から HTTPS Git アクセス用のパブリック SSH キーまたはユーザー認証情報を取得します。

  10. CodeBuild は、特定のブランチの Git リポジトリをクローンします。

  11. CodeBuild はアーカイブを圧縮し、 CodePipeline アーティファクトストアとして機能する S3 バケットにアップロードします。

AWS のソースとしてサードパーティーの Git ソースリポジトリを使用するワークフロー CodePipeline。

ツール

  • AWS CodePipeline – AWS CodePipeline は、アプリケーションとインフラストラクチャの更新を迅速かつ確実に行うためにリリースパイプラインを自動化するのに役立つフルマネージド型の継続的デリバリーサービスです。 は、定義したリリースモデルに基づいて、コード変更ごとにリリースプロセスのビルド、テスト、デプロイフェーズ CodePipeline を自動化します。機能とアップデートをすばやく、信頼性の高い方法で配信できます。AWS は、 GitHub や CodePipeline などのサードパーティーサービスと独自のカスタムプラグインと統合できます。

  • AWS Lambda – AWS Lambda を使用すると、サーバーをプロビジョニングまたは管理しなくてもコードを実行できます。Lambda を使用すれば、実質どのようなタイプのアプリケーションやバックエンドサービスでも、管理をまったく必要とせずに実行できます。コードをアップロードするだけで、コードの実行とスケールに必要な処理はすべて Lambda により自動的に実行され、高い可用性が維持されます。コードは、他の AWS サービスから自動的に開始するよう設定することも、ウェブやモバイルアプリケーションから直接呼び出すよう設定することもできます。

  • AWS CodeBuild – AWS CodeBuild は、ソースコードをコンパイルし、テストを実行し、すぐにデプロイできるソフトウェアパッケージを生成するフルマネージドの継続的統合サービスです。では CodeBuild、独自のビルドサーバーをプロビジョニング、管理、スケーリングする必要はありません。 は継続的に CodeBuild スケーリングし、複数のビルドを同時に処理するため、ビルドはキューに待機したままにされません。パッケージ済みのビルド環境を使用、またはご自分のビルドツールを使用するカスタムビルド環境を作成できることですぐに開始できます。

  • AWS Secrets Manager – AWS Secrets Manager は、アプリケーション、サービス、IT リソースへのアクセスに必要なシークレットの保護に役立ちます。このサービスを使用すると、データベースクレデンシャル、APIキー、およびその他のシークレットをライフサイクル全体で簡単にローテーション、管理、および取得できます。ユーザーとアプリケーションは、機密情報をプレーンテキストにハードコーディングしなくても、Secrets Manager API を呼び出すことでシークレットを取得します。Secrets Manager では、Amazon Relational Database Service (Amazon RDS)、Amazon Redshift、Amazon DocumentDB の統合が組み込まれています。このサービスは、API キーや OAuth トークンなど、他のタイプのシークレットをサポートするように拡張できます。さらに、Secrets Manager では、きめ細かい権限を使用してシークレットへのアクセスを制御したり、AWS クラウド、サードパーティサービス、オンプレミス環境内のリソースに対するシークレットのローテーションを一元的に監査したりできます。

  • Amazon CloudWatch – Amazon CloudWatch は、 DevOps エンジニア向けに構築されたモニタリングおよび監視サービスです。 デベロッパー、 サイト信頼性エンジニア (SREs、 と IT managers. CloudWatch は、アプリケーションを監視するためのデータと実用的なインサイトを提供します。 システム全体のパフォーマンスの変化に対応する リソース使用率の最適化 と は、運用状態の統合ビューを取得します。 は、モニタリングデータと運用データをログの形式で CloudWatch 収集します。 メトリクス、 および イベント、 AWS リソースの統合ビュー、 アプリケーション、 AWS サーバーとオンプレミスサーバーで実行される および サービス。 CloudWatch を使用して、環境内の異常な動作の検出、アラームの設定、ログとメトリクスの並列表示、自動アクションの実行、問題のトラブルシューティング、およびアプリケーションのスムーズな実行を維持するためのインサイトの検出を行うことができます。

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) は、ウェブサイト、モバイルアプリケーション、バックアップおよび復元、アーカイブ、エンタープライズアプリケーション、IoT デバイス、ビッグデータ分析など、広範なユースケースのデータを容量にかかわらず、保存して保護することができます。Amazon S3 には、特定のビジネス、組織、コンプライアンス要件を満たすようにデータを整理し、微調整されたアクセスコントロールを設定するのに役立つ easy-to-use 管理機能が用意されています。

エピック

タスク説明必要なスキル

AWS CLI または AWS を使用してカスタムアクションを作成します CloudFormation。

このステップでは、特定のリージョンの AWS アカウントのパイプラインのソースステージで使用できるカスタムソースアクションを作成します。カスタムソースアクションを作成するには、AWS CLI または AWS CloudFormation (コンソールではない) を使用する必要があります。このエピックやその他のエピックで説明されているコマンドとステップの詳細については、このパターンの最後にある「関連リソース」セクションを参照してください。AWS CLI では、 create-custom-action-type コマンドを使用します。--configuration-properties を使用して、ジョブワーカーが CodePipeline ジョブをポーリングするときに処理するために必要なすべてのパラメータを指定します。このカスタムソースステージでパイプラインを作成するときに同じ値を使用できるように、--provider オプションと--action-version オプションに指定されている値を必ず書き留めてください。リソース AWS::CodePipeline::CustomActionタイプ CloudFormation を使用して、AWS でカスタムソースアクションを作成することもできます。

AWS 全般
タスク説明必要なスキル

SSH キーペア を作成します。

Secure Shell (SSH) key pair を作成します。手順については、 GitHub ドキュメントを参照してください。

システム/DevOps エンジニア

AWS Secrets Manager でシークレットを作成します。

SSH キーkey pair からプライベートキーの内容をコピーし、AWS Secrets Manager でシークレットを作成します。このシークレットは、Git リポジトリにアクセスするときの認証に使用されます。

AWS 全般

パブリックキーを Git リポジトリに追加します。

SSH キーペアのパブリックキーを Git リポジトリアカウント設定に追加して、プライベートキーに対する認証を行います。

システム/DevOps エンジニア
タスク説明必要なスキル

カスタムソースアクションを含むパイプラインを作成します。

でパイプラインを作成します CodePipeline。ソースステージを設定するときは、以前に作成したカスタムソースアクションを選択します。これは、AWS CodePipeline コンソールまたは AWS CLI で実行できます。カスタムアクションで設定した設定プロパティを CodePipeline プロンプトします。この情報は、ジョブワーカーがカスタムアクションのジョブを処理するために必要です。ウィザードに従い、パイプラインの次のステージを作成します。

AWS 全般

CodePipeline ウェブフックを作成します。

カスタムソースアクションで作成したパイプライン用の Webhook を作成します。ウェブフックを作成するには、AWS CLI または AWS CloudFormation (コンソールではない) を使用する必要があります。AWS CLI で put-webhook コマンドを実行し、ウェブフックオプションに適切な値を指定します。コマンドから返される Webhook URL を書き留めておきます。AWS を使用してウェブフック CloudFormation を作成する場合は、リソースタイプ を使用します AWS::CodePipeline::Webhook。作成したリソースからウェブフック URL を出力し、書き留めておいてください。

AWS 全般

Lambda 関数と CodeBuild プロジェクトを作成します。

このステップでは、Lambda と を使用して、カスタムアクション CodePipeline のジョブリクエストをポーリングし、ジョブを実行し、ステータス結果を に返すジョブワーカー CodeBuild を作成します CodePipeline。パイプラインのカスタムソースアクションステージが「進行中」に移行したときに Amazon CloudWatch Events ルールによって開始される Lambda 関数を作成します。Lambda 関数が開始されると、ジョブをポーリングしてカスタムアクションジョブの詳細を取得する必要があります。 PollForJobs API を使用してこの情報を返すことができます。ポーリングされたジョブ情報を取得したら、Lambda 関数は確認を返し、カスタムアクションの設定プロパティから取得したデータを使用して情報を処理する必要があります。ワーカーが Git リポジトリと通信する準備ができたら、 CodeBuild プロジェクトを開始できます。これは、SSH クライアントを使用して Git タスクを処理すると便利なためです。

AWS 全般、コード開発者
タスク説明必要なスキル

CloudWatch イベントルールを作成します。

パイプラインのカスタムアクションステージが「進行中」に移行するたびに、ターゲットとして Lambda 関数を開始する CloudWatch イベントルールを作成します。

AWS 全般

関連リソース

でのカスタムアクションの作成 CodePipeline

認証の設定

パイプラインと Web フックの作成

イベントの作成

その他のリファレンス