Windowsの開発環境からAWS CodeCommitのリポジトリに接続するメモ

# 概要

CodeCommitに作成したリポジトリへWindows環境のIDEおよびGit for Windowsから接続する方法について調べたメモです。
Java開発を意識したのでIDEはEclipseとIntelliJ IDEAで検証しました。

確認した開発ツールと接続方法の組み合わせは以下の通りです。

* Git for Windowsを利用する場合
    * HTTPS接続 + Git credential helper
    * SSH接続
* Eclipseを利用する場合
    * HTTPS接続 + Eclipse Secure Storage
    * HTTPS接続 + AWS Toolkit for Eclipse
* Intellij IDEAを利用する場合
    * HTTPS接続 + Git credential helper
    * HTTPS接続 + IntelliJ IDEA Passwords
    * SSH接続

**簡単なまとめ**

* EclipseとGit for Windowsを併用する場合はHTTPS接続がお勧めです。
    * ただしHTTPS Git 認証情報はEclipseとGit for Windowsで別々の管理になります。
    * AWS Toolkit for EclipseはなくてもCodeCommitのリポジトリを操作できます。（2019/08時点で大きなアドバンテージはないように思いました）
* IntelliJ IDEAとGit for Windowsを併用する場合はHTTPS/SSH接続どちら可能ですがHTTPS接続がお勧めです。
    * HTTPS Git 認証情報はGit credential helper (Windowsの資格情報マネージャ―)で一括管理できます。
    * IntelliJ IDEAにもAWS Toolkitがありますが試していません。（2019/03にリリースされました）

**環境**

* Windows 10 Professional 1903
* Eclipse 2019-06
    * AWS Toolkit for Eclipse 2.0
* IntelliJ IDEA 2019.2
* Git for Windows 2.20.0

**参考**

* [AWS ドキュメント » AWS CodeCommit » ユーザーガイド » AWS CodeCommit とは] (https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/welcome.html)
* [
AWS ドキュメント » AWS CodeCommit » ユーザーガイド » AWS CodeCommit のセットアップ » Git 認証情報を使用して開発ツールから接続を設定する » Eclipse と AWS CodeCommit の統合] (https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-ide-ec.html)
* [AWS ドキュメント » AWS CodeCommit » ユーザーガイド » AWS CodeCommit のトラブルシューティング] (https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/troubleshooting.html)


# AWS側の準備

CodeCommitに接続できるIAMユーザを作成します。この記事ではCodeCommitに接続できる権限をグループに付与し、そのグループにIAMユーザを所属させるという形にしました。
図の`アクセスキーの作成`は特権ユーザで行い、`AWS CodeCommit の SSH キー`および`AWS CodeCommit の HTTPS Git 認証情報`の設定は個々のユーザで行うという想定で権限設定を行いました。
![iam_auth_setting_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/f95dbef0-6a75-1bbd-f7da-92149fef4343.png)

## グループの作成

`developers`というグループを作成し、以下のポリシーをアタッチします。

|ポリシー |説明|
|:-------|:-------------|
|AWSCodeCommitFullAccess|Provides full access to AWS CodeCommit via the AWS Management Console.|
|IAMReadOnlyAccess      |Provides read only access to IAM via the AWS Management Console.|
|IAMUserSSHKeys         |Provides the ability for an IAM user to manage their own SSH keys.|

## IAMユーザの作成

検証用の`codecommit_test_user`というCodeCommitのリポジトリを操作するユーザを作成します。
ユーザ作成後にアクセスキーを作成し`developers`グループに追加します。

## CodeCommitの認証情報設定

ここからは作成したIAMユーザで操作を行います。作成したIAMユーザでAWS Management Consoleにログインし、IAMのユーザ画面の認証情報タブを開きます。（初回ログイン時はパスワードの変更を求められます。）

### SSH接続用の認証情報の作成

Windows側でGit for WindowsのGit Bashを立ち上げssh-keygenコマンドで鍵ファイルを作成します。

```bash
$ ssh-keygen
```

作成した秘密鍵ファイル(private key)はユーザーホームディレクトリ/.sshに配置し、公開鍵ファイル(public key)は`AWS CodeCommit の SSH キー`セクションからアップロードします。
![iam_auth_setting_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/bf669b41-4d91-7000-33e2-c7dbd95b3a7a.png)

`SSH パブリックキーのアップロード`ボタンを押すと、公開鍵の内容をアップロードする画面が表示されるので、公開鍵の内容を貼り付けてアップロードします。
![iam_auth_setting_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/22d2e9eb-776e-21b6-37e2-eb9e8f315624.png)

アップロードすると`SSH キー ID`が発行されます。`SSH キー ID`は.ssh/configファイルを編集するときに必要になります。

### HTTPS接続用の認証情報の作成

`AWS CodeCommit の HTTPS Git 認証情報`セクションにある`生成`ボタンをクリックします。説明文にあるとおり認証情報は2つまで登録できます。
![iam_auth_setting_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/26e75ff3-fdf6-b847-8bff-5e36f0e8a8c7.png)

生成されたユーザーとマスクされたパスワードが画面に表示されます。この画面にある`証明書のダウンロード`ボタンをクリックして証明書ファイルをダウンロードして保管します。
![iam_auth_setting_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/86e5c042-d7a7-a4ba-d1bc-4cbe13e4b2ea.png)

### 認証情報の設定結果

SSHとHTTPSの両方を検証するため最終的に図のような結果になりましたが、使用する開発ツールや接続方法によって設定の必要がないものもあります。たとえば、HTTPS接続だけで済むのであればSSH接続用の設定は不要です。
![iam_auth_setting_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/2d584aac-ae5f-b4b2-4843-14266bc6b714.png)

## リポジトリの作成

引き続き同じユーザで、検証で使う`codecommit-test-repo`というリポジトリを作成します。
CodeCommitのリポジトリ画面で`リポジトリの作成`ボタンをクリックします。
![create_repo_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/439e6f0b-84e1-2d0b-7122-b8b799401d6f.png)

リポジトリ名を入力して`作成`ボタンをクリックします。
![create_repo_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/a9991027-550a-7987-7177-92c307059123.png)

リポジトリの作成が完了すると"接続のステップ"という画面が表示されます。この画面の下のほうにファイルを追加する欄があるので、ここでREADME.mdというファイルを追加しコミットしました。（この操作は必須ではありません。）
図はファイル追加直後の状態です。
![create_repo_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/dd3b5448-062e-9521-d1a4-47f85b7c3fb4.png)

次に`ブランチ`メニューを開き`ブランチの作成`ボタンをクリックして、`develop`というブランチを作成します。
![create_repo_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/ca8346d2-46ca-64e9-14d6-f33e93dd7adb.png)
![create_repo_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/d59d3379-174d-17ba-39cb-1d0faea6b32a.png)

図はブランチを作成した直後の状態です。`master`がデフォルトブランチになっているので`develop`へ変更します。
![create_repo_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/657f2892-7613-0540-dc69-fbc7f43297e7.png)

次に`設定`メニューを開きデフォルトブランチを`develop`に変更します。
![create_repo_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/b7cc892c-99e1-8109-20f4-a01a99e9adb7.png)

最後に`URLのクローン`メニューからSSHとHTTPS用のURLを控えておきます。

|接続  |URL|
|:----|:---|
|SSH  |ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test-repo|
|HTTPS|https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test-repo|

# Git for Windows

## HTTPSで接続する

### Git credential helperの設定

Git credential helperでユーザ名・パスワードをキャッシュしておくと、接続のたびに入力しなくて済むようになります。
以下のコマンドで現在の設定を確認します。managerと出力されれば設定されていることになります。(managerはWindows用のcredential helperです。)

```bash
$ git config --global credential.helper
manager
```

以下のコマンドで設定します。（.gitconfigを直接編集することでもかまいません。）

```bash
$ git config --global credential.helper manager
```

設定を取り消す場合は以下のコマンドを実行します。

```bash
$ git config --global --unset credential.helper
```

※確認していませんが、Git for Windowsのインストール時に`Enable Git Credential Manager`にチェックを付けておく必要があるようです。
![git_for_windows_install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/eb259049-2f42-b63e-1be5-70ec8f219510.png)

### リポジトリをクローンする

```bash
$ git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test-repo
Cloning into 'codecommit-test-repo'...
remote: Counting objects: 10, done.
Unpacking objects: 100% (10/10), done.
```

Git credential helperが有効になっている場合、キャッシュされていなければ接続時に図のダイアログが表示されます。
![windows_git_credential_manager_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/7ddce97a-f2ea-d40a-86dd-57e8d601c042.png)

ここで登録したユーザ名・パスワードは、実際にはWindowsの資格情報マネージャが管理しています。
`コントロールパネル` → `ユーザアカウント` → `資格情報マネージャー` → `Windows 資格情報の管理`でアクセスできます。
![windows_資格情報マネージャ_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/3279bce2-732c-cdb3-e9cb-9b9278a8e372.png)
図の枠線が今回登録した資格情報です。削除したい場合は`削除`をクリックします。
![windows_資格情報マネージャ_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/78cbee4b-ec64-0d83-ca4c-eaa9fe43dd96.png)

## SSHで接続する

### .ssh/configの編集

SSHのconfigファイルを編集します。
Userには上記の「SSH接続用の設定情報の作成」で発行された`SSH キー ID`を指定、IdentityFileには作成した秘密鍵ファイルを指定します。

```
Host git-codecommit.*.amazonaws.com
  User <SSH キー ID>
  IdentityFile "~/.ssh/<秘密鍵ファイル>"
```

### テスト

Git Bashからsshで接続を行い、`You have successfully authenticated over SSH.`というメッセージを確認します。

```bash
$ ssh git-codecommit.us-east-2.amazonaws.com
// ...省略

You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.us-east-2.amazonaws.com closed by remote host.
Connection to git-codecommit.us-east-2.amazonaws.com closed.
```

### リポジトリをクローンする

```bash
$ git clone ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test-repo
Cloning into 'codecommit-test-repo'...
remote: Counting objects: 3, done.
Receiving objects: 100% (3/3), 248 bytes | 248.00 KiB/s, done.
```

`develop`ブランチをcheckoutします。

```bash
$ cd codecommit-test-repo
$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

$ git checkout develop
Switched to a new branch 'develop'
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
```

README.mdを編集してcommit & push

```bash
$ git add README.md

$ git commit -m "2nd commit via Git for Windows"
[develop 2b1d436] 2nd commit via Git for Windows
 1 file changed, 5 insertions(+), 1 deletion(-)

$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 323 bytes | 161.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/codecommit-test-repo
   5a394b3..2b1d436  develop -> develop
```

# Eclipse

Eclipseには`AWS Toolkit for Eclipse`というプラグインがあり、これをインストールすることでEclipse上からさまざまな操作(EC2、S3、SQS、DynamoDB、CodeCommit、CloudFront、SNS)が行えるようになるようです。
EclipseからCodeCommitのリポジトリを操作するのに`AWS Toolkit for Eclipse`は必須ではありませんが、このプラグインを使う場合の操作を確認するために使用しない場合と使用した場合の2通りを試しました。

## HTTPSで接続する

### AWS Toolkit for Eclipseを使わない場合

他のGitホスティングサービスと同じ手順になります。
LocationのURIにHTTPS接続用のURLを入力、AuthenticationのUser/PasswordはAWS Management Consoleで生成したHTTPS Git 認証情報を入力します。
`Store in Secure Store`にチェックを入れるとEclipseが資格情報を管理してくれるので次回から入力は不要になります。
※EclipseはGit credential helperをサポートしていないようです。
![eclipse_https_clone_not_use_toolkit_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/724a9ca7-6626-c630-ce92-944e2a1a236b.png)

Branch Selectionではそのまま`Next`ボタンをクリックします。
![eclipse_https_clone_not_use_toolkit_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/731e3649-66d1-6f0d-bb96-4fedeb630f63.png)

Local Destinationでローカルのディレクトリを指定し`Finish`ボタンをクリックします。
![eclipse_https_clone_not_use_toolkit_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/5b71bf62-a80c-df88-eb15-ae0d35dd102f.png)

初めて`Secure Storage`を使う場合、パスワードリカバリー用のヒントを設定するか確認されます。
![eclipse_https_clone_not_use_toolkit_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/5e71f748-21f6-6187-69d2-3d3d6bfa4659.png)

`Yes`をクリックすると図のようにパスワードリカバリー用のヒントを設定します。
![eclipse_https_clone_not_use_toolkit_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/61938a75-cb0c-c9bc-94bf-17c4e3912273.png)

GitパースペクティブのGit Repositoriesは図のようになっています。あとは他のGitホスティングサービスと同様の操作になります。
![eclipse_https_clone_not_use_toolkit_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/e7d61ac0-4757-56c1-c1e6-136fc541ba96.png)

#### 資格情報をクリアするには

メニューバーの`Windows(W)` → `Preferences` → `General` → `Security` → `Secure Storage` → `Contents`タブを開きます。
個別の要素を削除することはできず`Delete`ボタンをすべて削除されるので注意が必要です。
![eclipse_secure_storage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/4a091b97-304e-40b2-b040-83c1c5c27cc2.png)

### AWS Toolkit for Eclipseを使う場合

※インストールは補足欄を参照してください。

AWS Toolkit for Eclipseインストール後の再起動時にアクセスキーとシークレットアクセスキーを入力する画面が表示されますが、いったん`Cancel`ボタンを押してキャンセルします。
![aws_tool_kit_market_place_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/930b2c5c-3e6f-ce09-7333-7f6d3a8789cf.png)

Eclipseが起動したらメニューバーから`Window` → `Preferences` → `AWS Toolkit`を選択、入力画面が表示されます。
最初に緑色の十字アイコン(Configure Regional Account)をクリックします。リージョンを選択する画面で"Asia Pacific (Tokyo)"を選択します。
![aws_tool_kit_market_place_04_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/9648f875-6586-392d-4d9d-0a02a22ad523.png)

`Add profile`ボタンをクリックしてプロファイルを追加します。ここでは`Profile Name`にユーザ名を入力しました。続いてアクセスキーとシークレットアクセスキーの入力し`Apply`ボタンを押します。
![aws_tool_kit_market_place_05_b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/90344059-b0a0-16ef-2797-3145a79c0267.png)

入力したアクセスキーとシークレットアクセスキーはAWS credentials fileに保存されます。リロードするか確認されるので`Yes`をクリックします。
![aws_tool_kit_market_place_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/fc0205bc-103a-e5c8-1465-0163a2396840.png)
※AWS credentials fileはユーザーホームディレクトリの.aws/credentialsにありキーは平文で保存されます。
※このファイルはAWS CLIからも参照されます。

`AWS Toolkit`の1つ下の階層にある`AWS CodeCommit`を選択します。HTTPS Git 認証情報で作成したユーザ名とパスワードを入力し`Apply and Close`ボタンを押して画面を閉じます。
![aws_tool_kit_market_place_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/48cdcda0-ec07-6701-ebc7-a417382e2759.png)
※ここで登録した認証情報はEclipseのSecure Storageにも保存されます。

#### AWS Managementパースペクティブを開く

EclipseにAWS Managementパースペクティブが追加されています。図はパースペクティブを開いた直後の状態です。
![aws_tool_kit_market_place_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/e2c324b8-4fff-1f89-a9dc-14b565f04087.png)

ビューの国旗のアイコンをクリックしてリージョンを`Asia Pacific (Tokyo)`へ変更します。
![aws_tool_kit_market_place_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/223ce4fe-32fd-5b31-33c0-8573cc186e5d.png)

AWS Explorerの`AWS CodeCommit`をクリックすると作成されているリポジトリが表示されます。
![aws_tool_kit_market_place_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/37939602-9d8a-61ca-e613-775f6624a569.png)

#### リポジトリをクローンする

リポジトリ名を右クリックしてメニューから`Clone Repository`を選択します。
![aws_tool_kit_market_place_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/a672784d-6728-408f-9190-c999c685bea3.png)

図のようにエラー画面が表示されます(2019/08現在)が、その後の操作には影響がないようなのでこのまま進めます。
![aws_tool_kit_market_place_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/e9b87076-721e-d1e8-b691-227257b1066d.png)

`Next`ボタンをクリックします。
![aws_tool_kit_market_place_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/3c437abf-0fb6-c823-9fef-063fdb18cb75.png)

ローカルのディレクトリを指定して`Finish`ボタンをクリックします。
![aws_tool_kit_market_place_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/def59985-81b0-941f-1473-f29eaffba545.png)

#### Gitパースペクティブを開く

Gitパースペクティブを開くとGit Repositoriesにcloneしたリポジトリが追加され、ワークスペースにもチェックアウトされています。
![aws_tool_kit_market_place_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/21292497-0b5e-0de2-332a-fdb5b27444e0.png)

## SSHで接続する（できない）

2019/08現在、EclipseでCodeCommitのリポジトリにSSH接続する方法は見つかりませんでした。

# IntelliJ IDEA

## HTTPSで接続する

Clone Repository画面でURLにHTTPS接続用のURLを入力し`Test`ボタンをクリックすると、ユーザ名・パスワードを入力するか、credential helperを利用するか選択するダイアログが表示されます。
![intellij_https_clone_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/e5bfd241-4d00-633c-4b49-597e462ea4b9.png)

### ユーザ名・パスワードを入力する

※Git credential helperが有効な場合は、そちらの認証画面が先に表示されます。

`Enter credentials`をチェックしUsernameおよびPasswordにHTTPS接続用のユーザ名・パスワードを入力し`Log In`ボタンをクリックします。
`Remember`にチェックすると入力した資格情報はIntellij IDEAが管理するファイルに保存されるので次からの入力は不要になります。
![intellij_https_clone_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/c492e367-cb9f-ba9c-65bd-184b8fccc92e.png)

接続できれば画面のように"Connection successful"と表示されるので、そのまま`Clone`ボタンをクリックします。
![intellij_https_clone_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/9445508a-07e7-7c6c-039d-c88145d32d91.png)

#### 資格情報をクリアするには

`Settings` → `Appearance & Behavior` → `System Settings` → `Passwords`を選択。
Database欄の右端にある歯車アイコンをクリックし`Clear`を選択します。
![intellij_https_clone_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/4d1b45e7-dabf-0848-31f0-6108795032b0.png)

### credential helperを利用する

`Use credentials helper`をチェックし`Log In`ボタンをクリックします。
![intellij_https_clone_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/16abc874-fad8-13d0-6ab4-d4a8c72334d9.png)

接続できれば画面の通り"Connection successful"と表示されるので、そのまま`Clone`ボタンをクリックします。
![intellij_https_clone_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/6faf2fe9-68e2-a0b0-931c-2c3fecf4c7d1.png)

## SSHで接続する

Git for WindowsでSSH接続が可能で、且つGitクライアントにGit for Windowsが設定されていれば（デフォルト）そのまま利用できます。
![intellij_git.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/b4cbba70-ce6d-7363-4ccb-6097b711d96f.png)

# 補足

## ローカルリポジトリをリモートへpushする方法

Git for Windowsでローカルリポジトリをリモートへpushする方法の作業手順です。

### リモートリポジトリの作成

AWS Management Consoleでリモートリポジトリを作成します。
リポジトリ名は`demo-aws-repo`、接続方法は`HTTPS`にしました。

|接続 |URL |
|:----|:---|
|HTTPS|https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/demo-aws-repo|

### ローカルのプロジェクトをgit化

Git Bashで以下のコマンドを実行します。

```bash
$ git init
$ git add .
$ git commit -m "first commit"
```

### リモートへプッシュ

```bash
$ git remote add origin https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/demo-aws-repo
$ git remote -v
origin  https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/demo-aws-repo (fetch)
origin  https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/demo-aws-repo (push)
```

```bash
$ git push -u origin master

Enumerating objects: 26, done.
Counting objects: 100% (26/26), done.
Delta compression using up to 8 threads
Compressing objects: 100% (17/17), done.
Writing objects: 100% (26/26), 49.68 KiB | 2.61 MiB/s, done.
Total 26 (delta 0), reused 0 (delta 0)
To https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/demo-aws-repo
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```

## AWS Toolkit for Eclipseのインストール

マーケットプレースから`AWS Toolkit for Eclipse`をインストールします。
![aws_tool_kit_market_place_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/3b38e327-7d71-edda-0da4-779482ab2d44.png)

`AWS CodeCommit Plugin`に追加のチェックを入れて`Confirm`ボタンをクリックします。
![aws_tool_kit_market_place_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/a15e4c9a-e8c6-b40f-becc-ff7267ec067a.png)

ライセンスに同意して`Finish`ボタンをクリックします。Eclipseを再起動します。
![aws_tool_kit_market_place_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/bc5b072c-6692-51b1-fe40-65fc7d186924.png)

## AWS CLIのインストール

インストールするには管理者権限が必要です。

![aws_cli_install_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/7f7b02ff-c037-c61a-eec9-cd46735baf2c.png)

![aws_cli_install_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/14b5cbe8-2d15-91eb-7988-17f9d931773f.png)

![aws_cli_install_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/53d5de51-1814-ce4f-6e9b-db8c89afc7af.png)

![aws_cli_install_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/b1b0dae4-7260-9026-1b6d-feb2035f38a7.png)

![aws_cli_install_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/22772/68a236a9-f92a-8502-53cb-ac142b4a8985.png)

### バージョンの確認

```
> aws --version
aws-cli/1.16.210 Python/3.6.0 Windows/10 botocore/1.12.200
```

### help

```
> aws help
```

`help`はサービスやコマンドの引数に指定します。

```
> aws configure help
      ^^^^^^^^^
       |
       +--- サービス
```

```
> aws configure list help
      ^^^^^^^^^ ^^^^
       |         |
       |         +--- コマンド
       |
       +--- サービス
```

### configure

リージョンを`ap-northeast-1`に設定する例

```
> aws --profile codecommit_test_user configure set region ap-northeast-1
```

リージョンを取得する例

```
> aws --profile codecommit_test_user configure get region
ap-northeast-1
```

```
> aws --profile codecommit_test_user configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile     codecommit_test_user           manual    --profile
access_key     ****************LFHV shared-credentials-file
secret_key     ****************t0OD shared-credentials-file
    region           ap-northeast-1      config-file    ~/.aws/config
```

### codecommit

リポジトリの一覧を取得する例

```
> aws --profile codecommit_test_user codecommit list-repositories
{
    "repositories": [
        {
            "repositoryName": "codecommit-test-repo",
            "repositoryId": "d035e9da-1ab3-4f5f-8d25-8f79a0ae781b"
        }
    ]
}
```

## AWS Toolkit for Intellij

* [AWS Toolkit for IntelliJ] (https://aws.amazon.com/jp/intellij/)
* [AWS Toolkit for IntelliJ が一般公開されました] (https://aws.amazon.com/jp/about-aws/whats-new/2019/03/the-aws-toolkit-for-intellij-is-now-generally-available/)

## Git - Credential Storage

* [7.14 Git Tools - Credential Storage] (https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage)
* [Git Credential Manager for Windows] (https://github.com/Microsoft/Git-Credential-Manager-for-Windows)

credential helperに`wincred`を使う記事を見かけますが、Git for Windows 2.xでは`wincred`は非推奨のようです。

```bash
$ git config --global credential.helper wincred
```

[7.14 Git のさまざまなツール - 認証情報の保存] (https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98) で
> Windows を使っているなら、“wincred” という補助ツールがあります。 “osxkeychain” と同じような仕組み（Windows Credential Store）で、重要な情報を管理します。

と翻訳されていますが、英語サイトを見ると当該の箇所は

> If you’re using Windows, you can install a helper called “Git Credential Manager for Windows.” This is similar to the “osxkeychain” helper described above, but uses the Windows Credential Store to control sensitive information. It can be found at https://github.com/Microsoft/Git-Credential-Manager-for-Windows.

と書かれています。

Git for Windows 2.xは`manager` (Git Credential Manager for Windows (GCM))がデフォルトです。

```bash
$ git config --global credential.helper manager
```