【CI/CD】別のアカウントのCodeCommitを利用したCodePipeline構成について(CFnによる構築編)

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

今回は、以前ご紹介した以下の構成をCloudFormationで作成する方法をご紹介します。

blog.serverworks.co.jp

概要

今回は、以下の2つのテンプレートを作成しました。 GitHub

  • リポジトリアカウントに必要なリソース構築用(pipeline-account.yaml)
  • パイプラインアカウントに必要なリソース構築用(repo-account.yaml)

補足

今回の構成を取る場合、環境ごとにパイプラインを作成することになることが多いと思うため、 全環境で共通となるCodeCommitについては手動で構築することにします。

つまり、環境ごとに必要なリソースのみ、テンプレートに含めることにしています。

やること

リポジトリアカウントで実施

①CodeCommitリポジトリの作成(手動構築)
②リポジトリアカウントに必要なリソースの作成(CFn構築)

パイプラインアカウントで実施

③パイプラインアカウント必要なリソースの作成(CFn構築)

両方のアカウントで実施

④動作確認

①CodeCommitリポジトリの作成(手動構築)

aws codecommit create-repository \
--repository-name sample-codecommit

②リポジトリアカウントに必要なリソースの作成(CFn構築)

GitHubからソースコードをCloneします。

git clone git@github.com:kazuya9831/blog-sample.git

パイプラインアカウントのIDを変数に設定します。

PIPELINE_ACCOUNT_ID="222222222222"

CloudFormationをデプロイします。

aws cloudformation create-stack \                                                
--stack-name repo-resources \
--template-body file://blog-sample/codepipeline-using-cross-account-codecommit/repo-account.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--parameters \
    "ParameterKey=pApplicationName,ParameterValue=sample" \
    "ParameterKey=pEnvironment,ParameterValue=dev" \
    "ParameterKey=pCodeCommitRepoName,ParameterValue=sample-codecommit" \
    "ParameterKey=pBranchName,ParameterValue=main" \
    "ParameterKey=pPipelineAccount,ParameterValue=${PIPELINE_ACCOUNT_ID}"

以下の値を設定できるため、変更したい場合は必要に応じて修正します。

  • pApplicationName: アプリケーション名
  • pEnvironment: 環境名
  • pCodeCommitRepoName: CodeCommitのリポジトリ名
  • pBranchName: ブランチ名
  • pPipelineAccount: パイプラインアカウントのID

③パイプラインアカウント必要なリソースの作成(CFn構築)

リポジトリアカウントのIDを変数に設定します。

REPO_ACCOUNT_ID="111111111111"

CloudFormationをデプロイします。

aws cloudformation create-stack \
--stack-name pipeline-resources \
--template-body file://blog-sample/codepipeline-using-cross-account-codecommit/pipeline-account.yaml \
--capabilities CAPABILITY_NAMED_IAM \
--parameters \
    "ParameterKey=pApplicationName,ParameterValue=sample" \
    "ParameterKey=pEnvironment,ParameterValue=dev" \
    "ParameterKey=pCodeCommitRepoName,ParameterValue=sample-codecommit" \
    "ParameterKey=pBranchName,ParameterValue=main" \
    "ParameterKey=pRepoAccount,ParameterValue=${REPO_ACCOUNT_ID}"

以下の値を設定できるため、変更したい場合は必要に応じて修正します。

  • pApplicationName: アプリケーション名
  • pEnvironment: 環境名
  • pCodeCommitRepoName: CodeCommitのリポジトリ名
  • pBranchName: ブランチ名
  • pRepoAccount: リポジトリアカウントのID

④動作確認(両方のアカウントで実施)

対象のCodeCommitにアクセスし、「ファイルを作成」を押下(リポジトリアカウントで実施)

コミットする内容を入力し、「変更のコミット」を押下(リポジトリアカウントで実施)

コードエディター: test
ファイル名: test.txt
作成者名: test
E メールアドレス: test

CodePipelineの確認(パイプラインアカウントで実施)

CodePipelineが正常終了すればOKです。

デプロイ先のS3の確認(パイプラインアカウントで実施)

S3を確認すると、アーティファクトがデプロイされていることが分かります。

解答して中を覗くとtest.txtファイルが保存されていることが分かります。

終わりに

今回は、別のアカウントのCodeCommitを利用したCodePipeline構成をCloudFormationで作成する方法をご紹介しました。

どなたかのお役に立てれば幸いです。

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。