こんにちは。ディベロップメントサービス3課の平松です。
早速ですが、みなさん、AWS CodeConnections(以下、CodeConnection)使ってますか?
私は会社から支給されている個人検証用環境で、GitHubとの接続用に作成していたのですが、お恥ずかしながら先日「あれ、このCodeConnection、どのGitHub組織/リポジトリと接続されてるんだっけ?」「権限ってどうなってるんだっけ?」となりました。(結構前に作ったっきりで、完全に失念していました。また、当時検証したパイプラインも削除していたため、完全に孤立したCodeConnectionが誕生していました。)
ないとは思いますが、みなさんがこうならないようにGitHub接続用のCodeConnection作成手順をTipsを交えながら解説します。
AWS CodeConnectionsとは
AWS CodePipeline などの AWS リソースを外部コードリポジトリに接続するための機能です。 これを使用することで、非常に簡単にAWS上でCodePipeline等を使用して構築したCI/CDパイプラインにGitHubなどの外部のコードリポジトリからソースを取得することができます。
接続可能なサードパーティリポジトリ
- Bitbucket Cloud
- GitHub.com
- GitHub Enterprise Cloud
- GitHub Enterprise Server
- GitLab.com
作成手順
Codeシリーズサービスページの左ペイン「設定」->「接続」で以下のページに遷移し、「接続を作成」を押下
プロバイダーに「GitHub」を選択し、接続名を入力する。
接続名は接続する組織(GitHub Org名や個人アカウント名)にすることをお勧めします。(タグに設定するのもありだと思います。) なぜかというと、作成後のCodeConnectionsの設定から、どの組織と接続されているかは確認できません。 私はここを適当(雑な方の意)な命名にしたおかげで、どの組織と接続しているか一瞬わからなくなりました。(奇跡的に思い出しましたが)
GitHub 接続設定のアクセス要求ページが表示されるので、「Authorize AWS Connector for GitHub」を押下
コンソールにリダイレクトされ以下のページに遷移するので、「新しいアプリをインストールする」を押下
以下のようなページに遷移するので、接続するGitHub組織を選択します。
今回、私は個人アカウントを選択しました。
選択した組織内のどのリポジトリへのアクセス権をGitHub Appsに付与するか選択し、「Install & Authorize」を押下。
個人的には「Only select repositories」を選択し、接続したいリポジトリへの権限のみ付与することをお勧めします。 理由は後述します。
コンソールにリダイレクトされ、アプリインストールの欄に先ほど作成したGitHub Appが選択された状態になるので、「接続」を押下。
作成完了。
GitHub Appに付与する権限を「All repositories」にしない方が良いと考える理由
前提として、GiHub接続用の CodeConnectionを作成すると、GitHubにAWS Connector for GitHubというGitHub Appsが作成されます。
これは、個人アカウントと接続している場合、右上のプロフィールアイコン → 「Settings」 → 左ペイン「Applications」と遷移していくと確認できます。
これは「Only select repositories」で選択したリポジトリの設定からも、「Settings」→ 「GitHub Apps」と遷移することで確認できます。
なんとなく勘の良い方は気づいたかもしれません。
GitHub Appに付与する権限を「All repositories」になっていると、接続した組織内の全てのリポジトリのGitHub Appsに上記のように表示されます。 つまり、AWS側からアクセスしないリポジトリにまで、アクセスできる権限がつくことになります。
また、全てのリポジトリにこのAppが表示されることで、GitHub側から実際にどのリポジトリがAWSからアクセスされているのかわからなくなります。(一応、AWS側から確認しようと思った場合には、CodeConnectionsの設定からは確認できませんが、実際に構築されているCodePipelineなどの設定から確認はできます。)
したがって、明確に「All repositories」で設定したい理由がなければ、実際にAWS側からアクセスするリポジトリへの権限のみ付与するように設定することを個人的にお勧めします。
今、「あー、All repositoriesで設定してるかも」と思ったそこのあなた。
GitHub Apps の「Configure」から変更可能です。
最後に
自分自身、かなり前にCodeConnectionを作ったっきりだったので、この混乱を機に諸々整理して理解できました。
CodeConnection自体、非常に便利なサービスですが、外部サービスと連携するためか、AWS側から確認できない設定もあるので、ちゃんと連携先にどういったリソースがどのような設定でできるかも確認しておきましょう(私のようにならないために)
このブログがもしお役に立てていたら嬉しいです。
最後までご覧いただきありがとうございました。