ソースコードをAWSCodeCommitで管理する方法メモ【AWS版のGitHub】

2021/10/02

(最終更新: 2021/10/02

はじめに

今回の記事で実施すること

ローカルで開発したソースコードをAWS CodeCommitで管理する方法を解説する。

Code Commitでソースコードを管理したい理由

Code Pipelineを利用してCI/CDを実現したいため。

今回は、ECS Fargateを利用しているアプリで、CodePipelineの機能を使ってブルーグリーンデプロイをできるようにしたい。そのためにまずはCodeCommitにソースコードをpushするところまで実施する。

前提

フォルダ構成

プロジェクトのフォルダ構成は以下の通り。 既にローカルでGithubと連携しながら開発を始めていた。CodeCommitに新規リポジトリをしてpushするところから始める。

.
├── Dockerfile
├── app
│   ├── node_modules(中身省略)
│   ├── package-lock.json
│   ├── package.json
│   ├── .gitignore
│   ├── public(中身省略)
│   └── src(中身省略)
参考資料
以下の記事と同じプロジェクトを利用している。

https://tomiko0404.hatenablog.com/entry/2021/09/19/ECS-Fargate-Reactapp

Git環境

Gitをインストール済み。

また、今回はGitHub上のリモートリポジトリとの連携もしている。 GitHubを利用していない場合は、GitHubを利用していない場合の事前作業を実施する。

ローカル環境

vagrantのLinux。

実施内容

基本的には以下を見ながら実施した。Githubとの連携と同じようなことをやればOK。

GitHubを利用していない場合の事前作業

git初期設定

プロジェクトフォルダ直下で

$ git init

を実施する。すると同じフォルダに.gitフォルダが作成される。

.gitignoreの作成

CodeCommiにプッシュしたくないファイルを設定するための.gitignoreファイルを作成しておく。

$ touch .gitignore

.gitignoreの例

.gitignore
node_modules/

npx-create-appでプロジェクトを作成している場合など、自動で.gitignoreファイルが作成されている場合はあえて自分で作成しなくても良い。.gitignoreファイルが存在しない場合は、node_modulesフォルダだけでも除外しておいたほうが良い。

CodeCommitリポジトリを作成する

  • AWSコンソールから「CodeCommit」コンソールへ
  • 「リポジトリを作成」→リポジトリ名等を入力

ローカルにCodeCommit用の鍵を作成する

ローカルで以下コマンドを入力。

$ ssh-keygen

対話式で設定する。

Generating public/private rsa key pair.
// ※鍵の名前は他と被らないように入力した。
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): /home/[ユーザ名]/.ssh/codecommit_rsa
Enter passphrase (empty for no passphrase): パスワード
Enter same passphrase again: パスワードを再入力

# vagrant は私の環境のユーザ名

鍵ができていることを確認し、中身を見る。

$ ls /home/vagrant/.ssh
codecommit_rsa  codecommit_rsa.pub
$ cat /home/vagrant/.ssh/codecommit_rsa.pub

※vagrant は私の環境のユーザ名

IAMユーザに公開鍵を登録する

  • AWSマネジメントコンソールのIAM画面
  • 「アクセス管理」→「ユーザー」→「認証情報」タブ
  • 「AWS CodeCommit の SSH キー」→「SSHパブリックキーのアップロード」
  • 先ほどcatした公開鍵ファイル(.pubがついているほう。codecommit_rsa.pub)の中身をすべて貼り付ける。
  • 完了したら、SSHキーIDをメモしておく。

IAMユーザに公開鍵を登録する IAMユーザに公開鍵を登録する

configファイル作成

configファイルを作成する。(すでにある場合は追記でよい。)

configファイルとは、ssh接続の際に秘密鍵のパスを指定したり、のパスワードを入力したりが面倒なので、事前に設定しておこうという趣旨のもの。

$ cd /home/vagrant/.ssh
$ touch config
$ vi config

configファイルの中身は以下とする。これは AWS公式ガイドからのコピー。

Host git-codecommit.*.amazonaws.com
User [先ほどメモしたSSHキーID]
IdentityFile ~/.ssh/codecommit_rsa

ここで、[先ほどメモしたSSHキーID]はアクセスキー IDではないので注意。 間違えるとfatal: Could not read from remote repository.のエラーが出る。

SSHキーIDをコピーする SSHキーIDをコピーする

リモートリポジトリ作成

GitHubのときと同じように、CodeCommitのリポジトリをリモートリポジトリに設定する。

プロジェクトフォルダ直下で以下コマンドを実行する。[リポジトリ名]はCode commitのリポジトリ名とする。

$ git remote add origin_codecommit ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/[リポジトリ名]

リモートリポジトリの名前はorigin_codecommitとした(originは既に存在していたため)。 ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/[リポジトリ名]の部分はCodeCommitのマネジメントコンソールからコピーできる。

sshのURLコピー sshのURLコピー

確認結果

$ git remote
origin
origin_codecommit

ローカルリポジトリのコミット

ローカルをのコミットを実施。

$ git add .
$ git commit -m "コミット"

CodeCommitにpushする

以下コマンドでpushする。

$ git push  origin_codecommit master

パスワードを聞かれるので、先ほどssh-keygenの時に作成したパスワードを入力する。

結果の確認

pushが完了した。

CodeCommit画面 CodeCommit画面

おわりに

GitHubの代わりにCodeCommitでソースコードを管理するまで完了した。 次回以降、ビルドの自動化(CodeBuild)やECRとの連携を試す。

関連記事



個別連絡はこちらへ→Twitterお問い合わせ

プロフィール

プロフィールイメージ

はち子

事業会社のシステム部門に異動して4年目の会社員。システム企画/要件定義/システムアーキテクチャ等。

Twitter→@bun_sugi

過去の記事について

はてなブログに掲載の記事(主にプログラミングメモ)についてはこちらに掲載しております。(本ブログに移行中)

タグ一覧

関連記事

Copyright© 2022, エンジニアを目指す日常ブログ

お問い合わせ|プライバシーポリシー