AWSのCodeCommit使い方。アクセスキー作るところからなど。

## そもそもCodeCommit とは
簡単にいえばgithubのAWSバージョン。
ちゃんと言えば以下引用

>AWS CodeCommit は、クラウド内のアセット (ドキュメント、ソースコード、バイナリファイルなど) を非公開で保存および管理するために使用できる Amazon Web Services によってホストされるバージョン管理サービスです
https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/welcome.html

非公開のバージョン管理サービスです！ドヤ！
:spy_tone3:公式と同じこと言っているだけじゃん、何ドヤってんだこいつ、、、
↑
ツッコミは自分でシステムです。

## 今回行なった方法は？
CodeCommitに作成したリモートリポジトリ作って、それをローカルにクローン。中身つけて、CodeCommitにpush
(大体この使い方が多いのかなと思い。)

|<img width="1279" alt="スクリーンショット 2018-05-20 1.19.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/e37caf06-37ca-dd7b-636e-6872f678474c.png">|
|:-:|


## CodeCommitのいいところ
そんなに使ってないので、いいと思っていると堂々言っていいのかわかりませんが、
いいと思うところは
・最新のAWSでコード管理してるってなる
・**<font color="red">一定以下なら無料!!、もちろんAWSにオープンはないからプライベートがっていうことです！</font>**。~~githubだとプライベートだと有料ですからね(･･;)~~なんとgithubがマイクロソフトに買収されてから無料でプライベートリポジトリ作れるようになりました。(条件あり(共有3人までならいくらでもどうぞ的な…))詳細→https://www.publickey1.jp/blog/19/github_4.html

|<img width="1142" alt="スクリーンショット 2018-05-21 2.28.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/faeb3dd4-bca6-9e42-32d1-9f55870a24f4.png"><font color="FireBrick">|
|:-:|

## 始める前に一言！
今から説明します。よろしくお願いします。:sunny:
ちなみにmacでやってます。

## CodeCommitを使う前に何を行わなければ行けないかを箇条書きに
※詳しくは後で書いて行きます。
流しても大丈夫です。
大まかにやることをインプットしとくと後が理解しやすいかと思い書きました。

- AWSにリポジトリを作成
- 自分のターミナルにAWSのリポジトリにアクセスするためのAWS CLI をインストールする
参考:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/installing.html

- AWSのCodeCommitにアクセスできるように準備する。
参考:https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.html
参考:https://console.aws.amazon.com/iam/home?#/users

- 作ったリポジトリ、クローン

- ゴニョゴニョして、CodeCommitにpush

## codecommitを使う時にポイントとなると思うところは？
アクセスIDとアクセスキー作るところ、もちろん同時に作ります。
AWSのCodeCommitにアクセスするためにgitconfigの設定変えること。

きっとこれができていないと、
The requested URL returned error: 403
みたいなエラーが出てきます。

|<img width="892" alt="スクリーンショット 2018-05-20 1.45.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/eb487db3-0294-45b3-7177-595c4635294e.png">|
|:-:|

参考:https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/troubleshooting-ch.html?icmpid=docs_acc_console_connect#troubleshooting-macoshttps

# 開始

## その1
#### **<font color="FireBrick">自分のターミナルからCodeCommitにアクセスする際にはまず用意されたAWS CLI のインストールが不可欠である。以下のコマンドを打つ！</font>**

`pip install awscli --upgrade --user`

補足:この時点でダメな場合pipのコマンド打てないとかが原因かと思うのでpipコマンドを打てるようにすればいいと思う。そう思う。sachiko-kameであった。

参考として
https://qiita.com/sachiko-kame/items/126e0a41acf270d05a73

この最後に私は

```
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
```
な警告がでて、pipのアップグレードをするか迷った。正直しなくてもいけるでしょとか思った。
でも素直なsachiko-kameは言われるがまま以下のコマンドでアップグレードした。素直でよろしい。そうきっと誰かが思ったに違いない。

`pip install --upgrade pip`

## その2
#### **<font color="FireBrick">シークレットアクセスキーを作る！</font>**

きっとここで先に急ぎたい方は

`aws configure`

を打ちたいに違いない。でもこれを打つと色々聞かれる。
あなたのIDは？
アクセスキーは？
どこのリージョンにリポジトリ置いたのよ？
出力形式どうすんの？ねえ？　ちなみにここはjsonと打てと言われるので考える必要ない

sampleとしては以下のを少しずつ聞かれる感じ。

|<img width="622" alt="スクリーンショット 2018-05-20 2.02.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/0ab79c4c-e281-9c39-bda0-2ec517df3ddc.png">|
|:-:|

しかし、これらはきっとない！awsのIDで入れると思ったら大間違いだ！
そうだ、CodeCommit用に作らないと行けないのだ！
前に作ったのないかなーと思った方いたら、ない！
なぜなら、こういうキーは、作った時にしか表示されないからだ。
今、知らないのなら作らないといけない。

そう！私がその勘違いものだ！

散々言ったとこで、

次のミッション

まずは、
https://console.aws.amazon.com/iam/home?#/users
に行き、ユーザーの作成を行う必要がある！
なんのユーザーかって？
それはリモートのリポジトリにアクセスするユーザー。
だからメンバーがいたらそれだけ作らないといけない！
とりあえず、今は孤独身、自分のユーザーだけ作ります

ユーザーはどこだと思われたら、左のユーザーってところをタップして欲しい。

|<img width="145" alt="スクリーンショット 2018-05-20 0.57.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/fadb843c-d2b2-0421-9b14-bca49aa74bba.png">|
|:-:|

おそらくユーザーが存在していないはずだから左上の

|<img width="141" alt="スクリーンショット 2018-05-20 2.09.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/2300dd39-983f-b89a-bae5-6df9911c23c7.png">|
|:-:|
ボタンからユーザー作りを開始して欲しい！
色々聞かれるだろうから

まずユーザーに適当な名前を使う人の名前つければいいんじゃないかと思う。
下のアクセスの種類は両方とも図ではチェックしてないけどした。

|<img width="981" alt="スクリーンショット 2018-05-20 2.13.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/de3c7433-4196-20a7-1501-fbb7fb83e6e3.png">|
|:-:|


次だ！
こんな感じのチェックで進むことにした。パスワードは変更もできるし、表示されているのもそのまま使うこともできると思うので好きにすればいいと思う。
ただ、パスワードのリセットはめんどくさそうだなと思い外した。

|<img width="1012" alt="スクリーンショット 2018-05-20 3.04.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/1998ed75-5ce7-44ec-8c34-91fbdbc72388.png">|
|:-:|

次だ！
こんな感じの画面でてくると思う。本気のメンバーで本気の開発ならグループが欲しいかもしれないが個人でちょこまかするなら一番右の既存のポリシーを直接タッチでいいと思った。ここには表示されていないが、権限どれか一つ以上選べずらーって書いてあったので全ての権限入れます的な一番上のにチェックして次のステップへ行った。

|<img width="973" alt="スクリーンショット 2018-05-20 2.18.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/25a74e5a-e8a5-1976-7388-f75c7b7cf8b9.png">|
|:-:|

もうここまできたらアクセスきーとシークレットキーがでてきたのではないか？。
**絶対この二つは記録しておくこと！！これ忘れたら、また最初からユーザー作らないといけなくなるから！**


## その3

#### **<font color="FireBrick">CodeCommitにリポジトリを作る！</font>**

以下のurlから飛んで、リポジトリの作成ボタンを押せば作れるだろう。

https://console.aws.amazon.com/codecommit/home?region=us-east-1#/repository/list

ポチッと押したらE メール通知の設定とか出るけどスキップボタンがあるからスキップしてしまえばいいと思う。
作ったら、右からニョキッとリポジトリに接続的なのでてくる。
あとでリポジトリにリージョン聞かれるけど、この画面の
`git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/<作ったリポジトリ名>`
なら
**us-east-1**
のことだからどこかに記入やメモしておくといいかもしれない。

もちろん、この全文もクローンするのに必要だけどね！


## その4
#### **<font color="FireBrick">ターミナルでAWSのリポジトリにアクセスする準備をする！</font>**


`aws configure`
を打って聞かれた内容に答えよ！今までの段階を踏んで入れば用意されているはずだ！！最後の出力形式どうすんの？ねえ？　のところはAWSがjsonと打てと書いてあるのでそのまま**json**と打てばいい。
わからない場合、説明文を読んでいない可能性がある。答えはあるはずだからもう一度読み直して欲しい。私の説明でわからないのなら他の説明などを探してみるのもありかもしれない！

登録が終わったら言われるがままに以下をターミナルにコピペして欲しい。書いてあるがままに。AWSが書いてあるがままに。

```
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
```
ここまできたら、よしと思うが、macosユーザーはまだすることがあるようだ。
じゃないときっと、

The requested URL returned error: 403
なエラーがでるだろう。


3.MacOS を使用している場合、AWS CodeCommit に接続するには キーチェーンアクセスユーティリティを無効にします。

と書かれているから。

参考:http://docs.aws.amazon.com/console/codecommit/connect-https-macos-ts


まず以下のコマンドを打って欲しい。言われるがままに
`git config -l --show-origin`

いきなり、ずらっとでてきたと思う。この**helper = osxkeychain**を探せとミッションに書いてあるが、目視するのは大変なのでcommand + Fキーでターミナル検索のところにosxkeychainを打てば、ほら！ヒットした！

この前に書かれているファイルパス
〇〇/〇〇/〇〇/〇〇/〇〇/gitconfig	
みたいな、このファイルパスのgitconfigの中をどうやら編集して欲しいらしい。

まず〇〇/〇〇/〇〇/〇〇/〇〇/までいき、そこにlsでgitconfigがあるかと思うので
`vim gitconfig`
で開いてその中の
`helper = osxkeychain`
のところを見つけたらコメントにしたいので
`# helper = osxkeychain`
と変更して保存して欲しい。

これはキーチェーンの有効時間を15分に制御されるのを防ぐために設定します。
15分たったらgit pushとか出来ない…となってしまわないように設定します。

## その5
#### **<font color="FireBrick">準備は整った。好きなディレクトリに行き、おもむろにgihubのリポジトリをクローンするみたいに、記録しておいたclone文をターミナルに書いてエンターを押して欲しい。</font>**

`git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/<作ったリポジトリ名>`

## その6
#### **<font color="FireBrick">クローンされたファイルに何か入れてコミットしてpushして欲しい　ほらできた。</font>**

コミットプッシュはどうすればいいか？どんな方法でもいいが

`git add .`

`git commit --m "最初"`

`git push`

でどうですかね？

## こんな時は？？？
403出た時

- CodeCommitのキーチェーン有効時間15分に制御を解除する処理は行われていますか？
- ユーザは変えてませんか？変えている場合パスワードとか違うと思うので"aws configure"打って設定しなおして下さい
- xcodeからpushできない時はターミナルとかコンソールから行うとできることがあるので是非


## 最後に
なんか、ですます調じゃないと生意気に聞こえる！！
ただ、なんか、ですます調より分かりやすいかと思い今回はである的な感じの文章にしてみました。
気を悪くされた方ごめんなさい。
あと、セキュリティで気にしなくてもいいと思ったけど画像使うときは怖くて、つい、え！そこ隠さなくてもいいでしょ的なところも隠してみました。
今日絵文字少なかったから今使います。
:four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick::four_leaf_clover::hatching_chick: