GitlabからAWS CodeCommitにミラーリングする環境をCloudFormationで作る

f:id:akagoma:20211129222053p:plain
はじめに

唐突にGitlabとAWS CodeCommitを連携したくなった。

今回は、CloudFormationを使って、GitlabからAWS CodeCommitにミラーリングする方法を調査したのでまとめる。

(次回はCodeCommitからCodeBuildをまとめる。)

CodeCommitの作成
まずはCodeCommitのリポジトリを作成する。
今回は汎用性を考慮し、いくつかの情報をパラメータとしている。

CodeCommitのIAMユーザー/IAMポリシーの作成
CodeCommitのGitPushとGitPullを許可する。リソースは↑で作成するCodeCommitなので!Refを利用して選択する。
 
Policyを作成する時のType指定だが、AWS::IAM::ManagedPolicyは管理ポリシーなので単独で作成可能。
今回はインラインポリシーを作成するのでTypeにはAWS::IAM::Policyを指定する。
 
Resourceの指定だが、ARNを指定する必要がある。!Refでは名前が返ってくるだけなので、ARNを取得したい場合は!GetAtt XXX.Arnを指定する必要がある。
 
ミラーリングの権限としてはGitのPushとPullを許可する。
(なぜPullを許可する必要があるのか、あまり理解できていない。外すと同期に失敗したので差分のチェックをしているのかも。)

Gitlabからミラーリングを設定する
ここはセキュリティ的にマネジメントコンソールからの実施とする。
CloudFormationで作成したユーザーを選択し、認証情報のタブを開く。
AWS Code CommitのHTTPS Git 認証情報があるので、認証情報を生成する。

f:id:akagoma:20211129220404p:plain

Gitlabのリポジトリの設定 > リポジトリを選択し、ミラーしているリポジトリを開く

f:id:akagoma:20211129220408p:plain

  • リポジトリURL
    • https://<先程作成したユーザー名>@<RepositoryName>
  • ミラー方向
    • プッシュ
  • 認証方法
    • パスワード
  • パスワード
    • <先程作成したパスワード>
更新ボタンを押せば更新される。
感想

正直言って、CloudFormationでやりたいことをやろうとすると突然情報量が減る。マネジメントコンソールを触る方が視覚的に実行できて楽だからだと思う。

業務においてマネジメントコンソールからリソースを作成するフローは危険で、属人化して"あの人しか知らない"状況が出来上がってしまう危険性が高い。

個人的な考えだが、クラウドに関する業務(特に環境構築やリリース)は誰にでもできる状況にしておくのがベストだと考えている。

今回は情報が少ない中CloudFormationで対応してみた。対応して思ったことだが、案外CloudFormationの中の設定項目はマネジメントコンソールで設定する内容そのまんまだったりする。
なのでyamlファイルとマネジメントコンソールを両方見ながら作業すれば案外簡単に行けた。
CloudFormationは色々使えそうなので、引き続きやっていこうと思う。
Copyright (C) 2021 akagoma. All Rights Reserved.