
EC2からCodeCommitを使ったら便利だった
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
CodeCommitを使用すると認証をIAMで行うことができます。
IAMで認証することでEC2でどうしても開発を行いたい場合などに、認証情報をサーバーにおく必要がなくなりとても便利です。 また、SSHの鍵を生成して登録するといった手間も不要になります。
今回はEC2インスタンスでCode CommitにGitでPull、Pushするまでを整理してみます。 今回は基本的に以下の記事を参考にしています。
リポジトリの作成
今回使用するリポジトリをCodeCommitで用意します。
名前はSampleとしています。


IAMポリシーとロールの作成
まず初めに以下のようなポリシーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowPullAndPush",
"Effect": "Allow",
"Action": [
"codecommit:GitPull",
"codecommit:GitPush"
],
"Resource": "arn:aws:codecommit:ap-northeast-1:XXXXXXXXXXXX:sample"
}
]
}
今回はcode-commitという名前でポリシーを作成しました。
AWSの管理ポリシーでAWSCodeCommitPowerUserやAWSCodeCommitReadOnlyがありますがこれはもっと広い権限を持っていて、ただPull、Pushしたいだけだと強すぎるので今回は必要最低限の権限のポリシーを作成しています。
これをEC2のインスタンスプロファイルとして使用できるロールにアタッチすれば準備は完了です。
インスタンスプロファイルとして作成したいので一般的なユースケースからEC2を選択します。

先ほど作成したポリシーをアタッチします。

EC2でのGitの設定
CodeCommitを使用する前にGitの設定を行う必要があります。 今回使用しているOSは「Amazon Linux 2(ami-0218d08a1f9dac831)」です。
# Gitのインストール $ sudo yum install git # 認証情報の設定 $ git config --global credential.helper '!aws codecommit credential-helper $@' $ git config --global credential.UseHttpPath true # ユーザー情報の設定 $ git config --global user.email "testuser@example.com" $ git config --global user.name "testuser"
準備ができたので、実際にリポジトリをクローンしてCommit、Pushしてみます。
今回はHTTPでクローンするのでその情報をマネージメントコンソールから取得します。

# リポジトリのクローン $ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/sample Cloning into 'sample'... warning: You appear to have cloned an empty repository. # Commit $ cd sample $ echo "This is commit from EC2" > README.md $ git add README.md $ git commit -m 'inital commit' # Push $ git push origin master Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 232 bytes | 232.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/sample * [new branch] master -> master
無事にPushできたみたいなのでWebブラウザで確認してみます。

READMEが追加されています。
感想
わずか数ステップでGitのリモートリポジトリを使用することができました。 IAMロールを使用することで他のインスタンスでも容易にCodeCommitを利用可能です。






