AWSでチーム開発をするための環境構築

##全体の流れ
**AWSアカウント利用及びCode Commitの環境構築の手順**

1.オーナー側設定
AWSでチーム開発する際のIAMによるアカウント設定方法

2.開発メンバー側設定
AWSのCode Commitが使用できる環境を構築する

※オーナーとはチームで権限を持っている人で、
それ以外のメンバーは開発メンバー側設定のみで問題ないです。

#AWSアカウント利用及びCode Commitの環境構築の手順
##オーナー側設定
AWSでチーム開発する際のIAMによるアカウント設定方法
###1. AWSオーナーアカウント作成、サインイン
ルートユーザーでログインする
![スクリーンショット 2021-06-20 14.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/d06ff516-31cd-031d-d7dc-60f29459d10a.png)
###2. 開発メンバー用のグループ作成
ログイン後、サービスからIAMを選択する
![iam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/7db21e3b-4f8b-888d-6c23-dfd57f482677.png)
<br>ユーザーグループを選択する
![グループ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/52bdcabb-e59d-d4b0-fd2b-5e6a699b3c0f.png)
<br>グループを作成を選択する
![グループ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/c6c86740-91a7-8788-6fef-90561c8ab8b1.png)
<br>PowerUserAccessポリシーをアタッチする(チェックする)
![poweruserポリシー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/9840a7a6-a8b9-068f-ec3c-08aae3a35a9d.png)
<br>任意の名前を入力する
![グループ名前.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/9fa158cb-bc6f-d8ca-e56a-1de09b8bb02e.png)
###3. 開発メンバーのアカウント作成
ユーザーからユーザーを追加を選択する
![ユーザー追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/2da0480b-49d3-ab01-38a3-1cc819cb60c5.png)
<br>任意のユーザー名入力と
アクセスの種類、自動生成パスワード、パスワードのリセットが必要にチェックする
![ユーザー名.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/614e335e-d713-b027-dd00-f4872d36b16b.png)
<br>ユーザーをグループに追加する
![ユーザーをグループに追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/3795040f-55a4-5bf2-5fce-83c5d583a50c.png)
<br>**アクセスキーID、シークレットアクセスキー、初期パスワードが生成されるので
開発メンバーに教える**
![パスワードなど.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/597ef557-37d2-d864-b781-26bb9aedd393.png)
###4. ロール作成
![ロール作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/dde799aa-9438-2eb2-2721-9ee5260c7edb.png)
<br>ユースケースはEC2を選択する
![ロール作成1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/f79a1f9c-24c3-646e-40c5-bc66718b1aa5.png)
<br>アクセス権限ポリシーで最低限必要項目
（AmazonRDSFullAccess、AmazonEC2FullAccess、
AWSCodeCommitFullAccess、AmazonS3FullAccess）にチェックする
![ロールポリシーチェック.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/c6a51a9a-aa61-ad1e-7851-bcce7e8e8542.png)
<br>任意のロール名を入力する
![ロール作成最後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/6382465a-6ce2-afb6-559a-cf92859d677d.png)


##開発メンバー側設定
AWSのCode Commitが使用できる環境を構築する

※すでにAWSアカウントの情報を入手していることを前提

###1.IAMユーザーでサインイン
配布されたサインインURLにアクセスし、
配布されたユーザー名、パスワードを入力する
![IAMサインイン.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/e8f44753-5df8-8ee5-99a0-535a62a2cddd.png)
###2.パスワード変更
パスワードの変更画面に切り替わるので、
古いパスワード(配布された初期パスワード)を入力し新しいパスワードに変更する
![パスワード変更.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/ffe29355-1efa-0d41-bce0-c238ae477edc.png)
###3. ロールの切り替え
右上のユーザー名からロールの切り替えを選択する
![ロール切り替え.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/1bc67570-f666-3df8-aeb4-ac646a7ea1ba.png)
<br>配布されたアカウントとロール名(オーナーに聞く)を入力する
ロールの切り替えが終了し、ご自身のユーザーに戻る
![ロール切り替え1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/7ac020a3-b7dc-dab2-dad1-9f0722573905.png)
###4. AWS CLI バージョン 2 のインストール
以下リンクの手順からインストール
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html
<br>
###5. Gitのインストール（Homebrewを使う方法）
※Homebrewはインストール済みであること

Homebrewをインストールしていない方は以下リンクを参考に
https://brew.sh/index_ja

<br>Gitインストール

```
$ brew install git
```
Gitのバーション確認

```
$ git --version
```

###6. ローカル端末にCode Commit接続設定
Gitの設定内容の確認とユーザーネーム, メールアドレスが表示されるか確認

```
$ git config -l
```

ユーザーネーム、メールアドレスの入力
※ユーザーネーム, メールアドレスが表示されなかった場合、以下2つを実行

```
$ git config --global user.name [“ユーザーネーム”]
```

```
$ git config --global user.email [メールアドレス]
```

AWSアクセスキーとシークレットキーの登録

```
$ aws configure
```

該当する情報を順番に入力

```
AWS Access Key ID [None]: 配布されたAccess key番号
AWS Secret Access Key ID [None]: 配布されたSecret Access key番号
Default region name ID [None]: ap-northeast-1
Default output format [None]: json
```

AWS profileの作成

```
$ vi ~/.aws/config
```

「i」ボタンを押して以下を追記

```
[profile ロール名]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::[オーナーアカウントID]:role/[ご自身のロール]
source_profile = default
```

「ESC」ボタンを押して「:wq」を入力してconfigファイルを閉じる

Gitの設定

```
$ git config --global credential.helper '!aws --profile lcs-dev codecommit credential-helper $@'
```

```
$ git config --global credential.UseHttpPath true
```

環境変数の設定
Linuxの環境が「bash」の場合、下記のコマンドを実行

```
$ echo export AWS_DEFAULT_PROFILE=lcs-dev >> ~/.bash_profile
```

```
$ source ~/.bash_profil
```

Linuxの環境が「zsh」の場合、下記のコマンドを実行

```
$ echo export AWS_DEFAULT_PROFILE=lcs-dev >> ~/.zshrc
```

```
$ source ~/.zshrc
```

Credentialの設定
credential.helper=osxkeychainが記載されているファイルを確認する

```
$ git config -l --show-origin
```

(例)　file:/usr/local/etc/gitconfig  credential.helper=osxkeychain

上記で見つけたファイルのcredential.helperをコメントアウトする
(該当する文章の前に「#」をつける)

```
$ vi /usr/local/etc/gitconfig
```

```
[credential]
        #helper = osxkeychain  ・・・コメントアウト
```

Code Commitでリポジトリをクローンする
※リポジトリが作成されている前提
リポジトリがない場合はリポジトリを作成

サービスからCodeCommitを選択
![codecommit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/3326780e-1079-dd21-5f29-0da82804e285.png)

<br>リポジトリのHTTPSをコピー
![リポジトリ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/4be76aba-9249-8352-82b5-b30f5037edeb.png)

上記でコピーしたURLのクローンを貼り付け

```
$ git clone [URL]
```

####補足
クローン時以下エラー文が出たときの対処法
An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid.

```
$ vi ~/.aws/credentials
```

アクセスキー、シークレットキー記載

```
[default]
aws_access_key_id = [アクセスキー]
aws_secret_access_key = [シークレットキー]
```