![[アップデート] AWS Security Agent の PR 自動レビューが対象ブランチやラベルで絞れるようになりました](https://images.ctfassets.net/ct0aopd36mqt/5HhaOnXgcaK80eorXpnxyD/57c471f47b2f7e9c65e7bc2f185a9184/aws-security-agent.png?w=3840&fm=webp)
[アップデート] AWS Security Agent の PR 自動レビューが対象ブランチやラベルで絞れるようになりました
いわさです。
AWS Security Agent の機能の一つにコードレビュー機能があります。
リポジトリを連携しておくとプルリクエストが作成された時に自動でセキュリティレビューを実施し PR 上へコメントしてくれます。
先日のアップデートで、この起動条件を対象ブランチ・ラベル・PR イベントで絞れるトリガーフィルターが追加されました。
AWS CLI では 2.37.9 の変更履歴に載っています。
Adds trigger filters that control which pull request events, target branches, and labels start an automatic code review.
今回こちらを確認してみたので紹介します。
前提:コードレビュー管理機能はプライベートリポジトリが対象
まだ私のエージェントスペースだとコードレビュー機能を連携していなかったので、まずは GitHub リポジトリを連携しコードレビューコメントの機能を有効化してみます。
今回設定していて知ったのですが公開リポジトリではコードレビューコメントが「サポートされていません」になっていて、トリガーフィルターの設定欄も出てきませんでした。

確かに冒頭の浅野さんの記事でもプライベートリポジトリ選んでますね。
カーソルを合わせると、コード変更へのコメント投稿はプライベートリポジトリのみという注記が表示されました。
公式ドキュメントを調べてみると同じ記載があります。
Pull request comments are only available for private GitHub repositories.
ということで今回は適当なプライベートリポジトリを用意して検証します。

フィルターグループを設定してみる
上記で対象リポジトリに対してコードレビューコメントを有効にすると「コードレビューコメントトリガーフィルター」が現れ、フィルターグループを追加できるようになっていました。これか!!

グループには、トリガーイベントと条件(対象ブランチ・ラベル)を設定できます。


条件の書式や上限などの詳細は、公式ドキュメントにまとまっていますが、ざっくり抑えておくべきところは以下のあたり。
- 条件のパターンはワイルドカードではなく正規表現で、ブランチ名・ラベル名の全体に一致する必要があります
- グループが複数ある場合は、どれか 1 つの条件をすべて満たした PR でレビューが動きます
今回は次の 2 グループを設定しました。
- グループ 1:トリガーイベントは「プルリクエストのレビューの準備ができました」のみ。条件は対象ブランチの一致するものを含めるで
main - グループ 2:トリガーイベントは「Pull request label added」のみ。条件はラベルの一致するものを含めるで
security-.*

グループ 2 はパターンが空のターゲットブランチ条件が残って保存できず、条件行の「削除」でも消せなかったので、グループごと作り直しました。

なお、公式ドキュメントによると、トリガーイベントを指定しないグループは、引き続き PR の作成・更新・レビュー準備完了のいずれでも対象になり、その場合はドラフト PR も含まれるとのことです。
When a repository has filter groups, AWS Security Agent reviews a pull request only if it matches one of them. A group without trigger events also reviews draft pull requests.
PR を立てて起動を確認してみる
main と develop のブランチを用意して、脆弱性を含む Python ファイルを追加する PR を作成しました。
まず main 向けの通常の PR です。
数十秒でレビュー開始のコメントが付き、2 分半ほどでレビュー結果が投稿されました。

次に main 向けのドラフト PR を立てます。
数分待っても、Security Agent のコメントは付きませんでした。

この PR を「Ready for review」に切り替えると、直後にレビュー開始のコメントが付きました。

続いてdevelop 向けの通常 PR は、グループ 1 の対象ブランチ(main)にもグループ 2 のラベル追加にも当てはまりません。
こちらも 100 秒ほど待ちましたが、コメントは付きませんでした。

別の develop 向け PR でも同様にコメントが付かないことを確認してから、トリガー条件である security-review ラベルを追加してみました。
追加して 20 秒ほどで、レビュー開始のコメントが付きました。良いですね。

さいごに
本日は AWS Security Agent の PR 自動レビューに、起動条件を絞れるトリガーフィルターが追加されたので確認してみました。
設定した 2 グループのとおりに、レビューが起動する PR と起動しない PR が分かれました。
PR コードレビューにはアカウント・リージョンごとに月間 1,000 回のクォータがあるので[1]、このあたりの機能を使って対象を絞れれば、クォータを消費せずにも済みそうです。










