翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CodeBuild および CloudWatch Events を使用して、 から Amazon S3 CodeCommit へのイベント駆動型のバックアップを自動化する
作成者: Kirankumar Chandrashekar (AWS)
環境:本稼働 | テクノロジー: DevOps; ストレージとバックアップ | ワークロード:その他すべてのワークロード |
AWS サービス: Amazon S3、Amazon CloudWatch、AWS CodeBuild、 AWS CodeCommit |
[概要]
Amazon Web Services (AWS) クラウドでは、 AWS CodeCommit を使用して安全な Git ベースのリポジトリをホストできます。 CodeCommit はフルマネージドのソースコントロールサービスです。ただし、 CodeCommit リポジトリが誤って削除された場合、そのコンテンツも削除され、復元することはできません
このパターンでは、 CodeCommit リポジトリに変更を加えた後に、リポジトリを Amazon Simple Storage Service (Amazon S3) バケットに自動的にバックアップする方法について説明します。 CodeCommit リポジトリが後で削除された場合、このバックアップ戦略では復旧オプションが提供されます point-in-time。
前提条件と制限
前提条件
アクティブ AWS アカウント。
ユーザーアクセスが要件に従って設定された既存の CodeCommit リポジトリ。詳細については、 CodeCommit ドキュメントの「 のセットアップAWS CodeCommit」を参照してください。
CodeCommit バックアップをアップロードするための S3 バケット。
制約事項
このパターンは、すべての CodeCommit リポジトリを自動的にバックアップします。個々の CodeCommit リポジトリをバックアップする場合は、Amazon CloudWatch Events ルールを変更する必要があります。
アーキテクチャ
次の図は、このパターンのワークフローを図解したものです。
ワークフローは、以下の手順で構成されます。
コードは CodeCommit リポジトリにプッシュされます。
CodeCommit リポジトリは、リポジトリの変更 (
git push
コマンドなど) を CloudWatch イベントに通知します。CloudWatch イベントは、 CodeCommit リポジトリ情報を呼び出しAWS CodeBuild て送信します。
CodeBuild リポジトリ全体をクローン CodeCommit し、.zip ファイルにパッケージ化します。
CodeBuild は .zip ファイルを S3 バケットにアップロードします。
テクノロジースタック
CloudWatch イベント
CodeBuild
CodeCommit
Amazon S3
ツール
Amazon CloudWatch Events – CloudWatch イベントは、AWSリソースの変更を記述するシステムイベントのほぼリアルタイムのストリームを提供します。
AWS CodeBuild – CodeBuild は、ソースコードをコンパイルし、テストを実行し、デプロイする準備が整ったソフトウェアパッケージを生成するフルマネージドの継続的統合サービスです。
AWS CodeCommit – CodeCommit は、安全な Git ベースのリポジトリをホストするフルマネージドソースコントロールサービスです。
AWS Identity and Access Management (IAM) – は、AWSリソースへのアクセスを安全に制御するのに役立つウェブサービスIAMです。
「Amazon S3」— Amazon Simple Storage Service (Amazon S3)は、インターネット用のストレージです。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
CodeBuild サービスロールを作成します。 | AWS マネジメントコンソールにサインインし、IAMコンソールを開きます。[Roles (ロール)]、[Create role (ロールの作成)] の順に選択します。のサービスロールを作成して CodeCommit リポジトリの CodeBuild クローンを作成し、ファイルを S3 バケットにアップロードし、Amazon にログを送信します CloudWatch。詳細については、 CodeBuild ドキュメントの CodeBuild 「サービスロールの作成」を参照してください。 | クラウド管理者 |
CodeBuild プロジェクトを作成します。 | CodeBuild コンソールで、 CodeBuild プロジェクトの作成 を選択します。追加情報セクションの | クラウド管理者 |
タスク | 説明 | 必要なスキル |
---|---|---|
CloudWatch イベントのIAMロールを作成します。 | IAM コンソールで、ロールを選択し、 CloudWatch イベント用のIAMロールを作成します。詳細については、 IAMドキュメントのCloudWatch 「イベントIAMロール」を参照してください。 重要: CloudWatch イベントのIAMロールに | クラウド管理者 |
CloudWatch イベントルールを作成します。 |
重要: この CloudWatch イベントルールでは、すべての CodeCommit リポジトリの変更について説明します。個々の CodeCommit リポジトリをバックアップする場合や、異なるリポジトリバックアップに個別の S3 バケットを使用する場合は、 CloudWatch イベントルールを変更する必要があります。 | クラウド管理者 |
関連リソース
CodeBuild プロジェクトの作成
CloudWatch イベントルールの作成と設定
追加情報
CodeBuild buildspec.yml テンプレート
version: 0.2 phases: install: commands: - pip install git-remote-codecommit build: commands: - env - git clone -b $REFERENCE_NAME codecommit::$REPO_REGION://$REPOSITORY_NAME - dt=$(date '+%d-%m-%Y-%H:%M:%S'); - echo "$dt" - zip -yr $dt-$REPOSITORY_NAME-backup.zip ./ - aws s3 cp $dt-$REPOSITORY_NAME-backup.zip s3:// #substitute a valid S3 Bucket Name here
CloudWatch イベントルール
{ "source": [ "aws.codecommit" ], "detail-type": [ "CodeCommit Repository State Change" ], "detail": { "event": [ "referenceCreated", "referenceUpdated" ] } }
CloudWatch イベントルールターゲットのサンプル入力トランスフォーマー
入力パス:
{"referenceType":"$.detail.referenceType","region":"$.region","repositoryName":"$.detail.repositoryName","account":"$.account","referenceName":"$.detail.referenceName"}
入力テンプレート (必要に応じて値を入力してください):
{ "environmentVariablesOverride": [ { "name": "REFERENCE_NAME", "value": "" }, { "name": "REFERENCE_TYPE", "value": "" }, { "name": "REPOSITORY_NAME", "value": "" }, { "name": "REPO_REGION", "value": "" }, { "name": "ACCOUNT_ID", "value": "" } ] }