【初心者向け】AWS CodeCommitのパラメータをまとめてみた

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

こんにちは!エンタープライズクラウド部技術2課の日高です。
本日は、AWS CodeCommitを使い始めたいという方に向けて、構築するうえで設定が必要なパラメータについて、理解していただけるようにブログを書きたいと思います!

AWS CodeCommitの概要

AWS CodeCommitとは、マネージド型のリポジトリサービスです。
基本的な使い方はGithub等のリポジトリと大差がなく、作成したリポジトリはgitコマンドによって操作できます。

ちなみに公式ドキュメントには以下のように記載されています。

AWS CodeCommit は、クラウド内のアセット(ドキュメント、ソースコード、バイナリファイルなど) を非公開で保存および管理するために使用できるアマゾン ウェブ サービスによってホストされるバージョン管理サービスです。
AWS CodeCommit とは-抜粋

AWS CodeCommitの接続方法としては、SSHまたはHTTPSを使って接続することができます。
また、SSH、HTTPS接続に使用する認証情報はIAMユーザーごとに生成します。

AWS CodeCommitのパラメータ一覧

ここから以下のパラメータについて記載していきます。

通知

AWS CodeCommitでは、リポジトリに対して「特定のイベントが発生したらターゲット(通知先)この内容を通知する」という通知ルールを設定することで、通知ができるようになります。

それぞれ太文字に対応するマネジメントコンソールのパラメータは以下のようになります。

  • 特定のイベント:「通知をトリガーするイベント」で設定します。
  • この内容:「詳細タイプ」で設定します。
  • ターゲット(通知先):ターゲットで設定します。

通知をトリガーするイベント

このパラメータで選択したイベントが発生した際に、通知がトリガーされます。
例として、「コメント」と「プルリクエスト」が発生した際に通知をトリガーしたい場合は、以下のようにイベントを選択します。

Codecommitで用意されている「通知をトリガーするイベント」は以下のようになります。
上記のマネジメントコンソールのイベントと見比べてみてください。

詳細タイプ

詳細タイプは「フル」「ベーシック」の2つが存在していて、通知に含まれる内容を選択できます。
以下がタイプごとに含まれる情報になります。

  • フル:「通知をトリガーするイベント」に対して利用可能な情報をすべて含む。
  • ベーシック:「通知をトリガーするイベント」に対して利用可能な情報の一部のみを含む。

「ベーシック」に含まれる利用可能な情報の一部とは、何か気になったので調べてみるとAWSの公式ドキュメントに例が記載されていました。

そちらから、「通知をトリガーするイベント」がコメントだった場合を抜粋して記載します。

  • フル:すべてのイベントの詳細とコメントの内容 (返信やコメントスレッドを含む)。また、行番号とコメントが作成されたコード行も含まれます。
  • ベーシック:コメントの内容。行番号、コード行、またはコメント スレッドが含まれない。

上記のようにベーシックでは一部の情報しか含まないため、基本的には、すべての情報が含まれる「フル」を選択するのが個人的にはおススメです。

ターゲット

ターゲット(通知先)として利用できるものとしてAmazon SNSとAWS Chatbotの2つがあります。
AWS Chatbotを選択することでSlack、もしくはMicrosoft Teams チャネルを通知先に設定できます。

注意点としては、AWS Chatbotをターゲットとして利用する場合、あらかじめAWS Chatbotコンソールでクライアントを作成しておく必要があります。

※AWS Chatbotにてクライアントを作成する方法は以下をご覧ください。

docs.aws.amazon.com

トリガー

リポジトリに対しコードプッシュなどのイベントをトリガーに、Amazon SNSやAWS Lambdaの呼び出しをすることができます。
1つのリポジトリごとに、最大 10 個のトリガーを作成することができます。

トリガーとして選択できるイベントは「すべてのリポジトリイベント」「既存のブランチにプッシュする」「ブランチまたはタグを作成する」「ブランチまたはタグを削除する」の4つから選択できます。

また、ブランチ名を指定することができます。
ここで、ブランチを選択しない場合は、トリガーはリポジトリのすべてのブランチに適用されます。

※注意点
トリガーを設定する場合、AWS CodeCommitにアクセスする許可をAmazon SNSやAWS Lambdaに付与する必要があるため注意が必要です。

Amazon CodeGuru Reviewer for Java and Python

有効にすることでリポジトリを Amazon CodeGuru Reviewer に関連付けることができます。
Amazon CodeGuru Reviewer は、プログラム分析と機械学習を使用したコードレビューサービスです。

具体的な動作としては、有効化された後のPullRequest の作成をトリガーにレビューを実施して、問題を検出すると推奨事項とともにコメントが投稿されます。

※実際の動作については弊社のブログをご覧ください

blog.serverworks.co.jp

料金については、CodeGuru Reviewerを関連付けたリポジトリのコードの合計行数による(1)月額固定料金+(2)月3回以上のフルリポジトリスキャンにかかる料金になります。
東京リージョンの場合、(1)の月額固定料金’は以下のようになります。

  • 最初の10万行のコード:10.00USD
  • 追加の10万行のコード(10万行未満は切り上げされる):30.00USD

また、(1)の月額固定料金には、2回までのフルリポジトリスキャンが含まれています。
そのため、月3回以上のフルリポジトリスキャンを行うと10万行のコード当たり10.00USDが追加課金されます。

※詳しくは以下をご覧ください

aws.amazon.com

承認ルールテンプレート

承認ルールテンプレートを利用することで、「リポジトリで作成されたプルリクエストの一部またはすべてに対して一定数以上または特定ユーザーの承認を得た場合にのみコードをマージさせる様に制限」することができます。

それぞれ太文字に対応するマネジメントコンソールのパラメータは以下のようになります。

  • 一部またはすべて:「ブランチフィルター」で設定します。
  • 一定数以上の承認:「必要な承認の数」で設定します。
  • 特定ユーザーの承認:「承認プールのメンバー」で設定します。

具体的には承認ルールテンプレートを適用すると、以下のような動作になりマージの制限をします。
承認ルールがないレポジトリであれば「プルリクエストを閉じる」の横に「マージ」が表示されていますが、承認ルールテンプレートを適用しているリポジトリだと承認されるまで「マージ」が表示されません。

  • 承認ルールがないレポジトリ

  • 承認ルールテンプレートを適用していて、かつ承認されていない状態のレポジトリ

※補足
補足として「承認ルールテンプレートの更新は、その更新前に作成されているプルリクエストに対しては反映されない」という挙動があるため注意が必要です。

AWSサポートに問い合わせたところ、 「更新前の承認ルールテンプレート設定ではプルリクエストを承認できる IAM ユーザー・ロールが厳しく制限されていたが、その承認プールには含まれていないものの承認ルールテンプレートの設定を変更できるアクション許可をもつ IAM ユーザー・ロールによって、誰でも承認可能なテンプレートに更新された」というようなケースを考えますと、承認ルールテンプレートの変更内容が既存のプルリクエストに適用されてしまうのは意図しない変更をマージしてしまう可能性があるためこのような挙動になっているようです。

ブランチフィルター

このブランチフィルターで指定したブランチが、プルリクエストの送信先の場合承認ルールテンプレートが適用されます。
一部のブランチに対してのプルリクエストのみに、承認ルールテンプレートを適用させたい場合はブランチフィルターを利用します。
ブランチフィルターを選択しない場合、すべてのプルリクエストに承認ルールテンプレートが適用されます。

例)ブランチフィルターで「master」を指定した場合
「master」ブランチに対してプルリクエストを送った場合承認ルールテンプレートは適用されますが、「main」というブランチに対していてプルリクエストを送った場合承認ルールテンプレートは適用されません。

必要な承認の数

こちらは言葉通りのパラメータです。
承認ルールテンプレートにて、承認が必要な数を設定します。
例を使って説明していきます。

例)必要な承認の数を「1」と設定した場合を考えてみます。
プルリクエストをしたユーザーをAとし、Bにより承認をしたとします。

そうしたことにより、承認が「1」にカウントされ、必要な承認の数を満たしたのでマージできるようになります。
この際に、必要な承認の数を「2」と設定していた場合は、承認が「2」になるまでマージできません。

承認プールのメンバー

承認プールのメンバーが指定されている場合、これらのメンバーからの承認のみが承認ルールテンプレートを満たすための条件としてカウントされます。
ワイルドカードを使用することで、1 つの値により複数の承認者を登録することができます。

承認者のタイプとして選択できるものとして「IAMユーザー名またはIAMロール」「完全修飾ARN」の2つがあります。

まとめ

AWS CodeCommitのパラメータについてまとめてみました。
AWS CodeCommitを作成する前にサラッと本ブログを確認して概要をつかんでいただければと思います。

本ブログが誰かの助けになれば幸いです。

日高 僚太(執筆記事の一覧)

EC部ソリューションアーキテクト2課 / AWS認定資格 12冠

2022年IT未経験で新卒入社しました。
最近はダーツとサウナが気になっています!
記事に関するお問い合わせや修正依頼⇒ hidaka@serverworks.co.jp