はじめに
唐突に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 認証情報があるので、認証情報を生成する。
Gitlabのリポジトリの設定 > リポジトリを選択し、ミラーしているリポジトリを開く
- リポジトリURL
- https://<先程作成したユーザー名>@<RepositoryName>
-
ミラー方向
-
プッシュ
-
-
認証方法
-
パスワード
-
-
パスワード
-
<先程作成したパスワード>
-
更新ボタンを押せば更新される。
感想
正直言って、CloudFormationでやりたいことをやろうとすると突然情報量が減る。マネジメントコンソールを触る方が視覚的に実行できて楽だからだと思う。
業務においてマネジメントコンソールからリソースを作成するフローは危険で、属人化して"あの人しか知らない"状況が出来上がってしまう危険性が高い。
個人的な考えだが、クラウドに関する業務(特に環境構築やリリース)は誰にでもできる状況にしておくのがベストだと考えている。
今回は情報が少ない中CloudFormationで対応してみた。対応して思ったことだが、案外CloudFormationの中の設定項目はマネジメントコンソールで設定する内容そのまんまだったりする。
なのでyamlファイルとマネジメントコンソールを両方見ながら作業すれば案外簡単に行けた。
CloudFormationは色々使えそうなので、引き続きやっていこうと思う。