Help us understand the problem. What is going on with this article?

AWS CodeCommitを使ってソースコード管理

More than 1 year has passed since last update.

やりたいこと

AWS CodeCommit でソースコード管理したい。
または
AWS CodePipleine のトリガーにCodeCommitを使いたい。 ← 私の場合はこちら

前提

  • AWSアカウントがある。
  • AWS CLIがローカルにインストールされている。

大まかな流れ

  1. AWS CodeCommitにリポジトリと、アクセスするためのIAM User作成
  2. AccessKey設定
  3. gitにCodeCommit認証設定
  4. CodeCommitにpush

手順

CodeCommitにリポジトリとアクセスするIAM User作成する。

今回は、以下の内容で設定する。

CodeCommitリポジトリ名:MyRepoName
IAM User:
- ユーザ名:codecommit-user-test
- グループ名:codecommit-group-test
- 権限ポリシー:AWSCodeCommitPowerUser

CloudFormation yamlファイル

AWSTemplateFormatVersion: 2010-09-09
Description: CodeCommit Test
Resources:
  MyRepo:
    Type: AWS::CodeCommit::Repository
    Properties:
      RepositoryName: MyRepoName
      RepositoryDescription: My test repository
  IamUserCodeCommit:
    Type: AWS::IAM::User
    Properties:
      UserName: codecommit-user-test
      Groups:
      - !Ref 'IamGroupCodeCommit'
  IamGroupCodeCommit:
    Type: AWS::IAM::Group
    Properties:
      GroupName: codecommit-group-test
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AWSCodeCommitPowerUser

上記 yamlをCloudFormationでstackを作成して実行

IAM Userのアクセスキー発行

  • AWS マネージメントコンソール → [IAM] → [Users] → 今回対象のユーザ[codecommit-user-test] → [Security credentials] → [Create access key]
  • 上記で [Access key ID] と、[Secret access key] が発行されるので、メモるかcsvでダウンロードする

  • aws設定ファイルにプロファイルを追加する。

  • 複数プロファイルを扱う場合は、下記のようにプロファイルに名前をつける。今回は、CodeCommitTest という名前をつけた。

~/.aws/config
[profile CodeCommitTest]
output = json
region = ap-northeast-1  ← 今回使うリージョンを指定

  • 先ほど発行した[Access key ID] と、[Secret access key] をcredentialsファイルに設定
~/.aws/credentials
[CodeCommitTest] ← 上記で設定したプロファイル名
aws_access_key_id = AAAAAAAAAAAAAAAAAAAAAAAA
aws_secret_access_key = SSSSSSSSSSSSSSSSSSSSSSSSSSS

gitコマンドにCodeCommit認証情報を設定

  • 複数リポジトリを扱う場合、credential の横に対象のリポジトリURLを指定する。 (リポジトリURLはコンソールのCodeCommitのリポジトリの画面で [Clone URL] ボタンを押すと出てくる。)
~/.gitconfig
     :

[credential "https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyRepoName"]
        helper = !aws codecommit --profile CodeCommitTest credential-helper $@
        UseHttpPath = true

CodeCommitから git cloneし、ファイルを作成してcommit, pushする

$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyRepoName
$ cd MyRepoName/
$ echo "# My test repo" > README.md
$ git add .
$ git commit -m "My first commit."
$ git push origin master

あとはいつものGit操作で引き続き・・

もし、すでにリモートリポジトリがあるGit管理のソースの場合、以下のように git push --mirror すれば一度で全部 pushできる。

$ git push --mirror https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyRepoName


Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away