【AWS】CodeConnectionsを使用して、CodeCommitからGitHubに移行！

# CodeConnections とは
クラメソさんの記事が安定のわかりやすさです。

https://dev.classmethod.jp/articles/aws-codestar-connections-has-renamed-to-aws-codeconnections/

![cap0.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/bede84df-87be-c500-43fe-6cd950583e75.png)

>WS CodeStar Connectionsですが、(略) **CodePipeline等でGitHub等の外部リポジトリに接続する際に使う「接続」の部分を担うサービス**となります。

**CodePipeline等でGitHub等の外部リポジトリに接続する際に使う「接続」の部分を担うサービス**とあります。
まさにその通りです。

Codecommitがサ終してしまうので、乗り換えてみようと思います！！！


# やってみる
## リポジトリの準備
github上に適当なprivateリポジトリを作成します。

![cap12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/a1e6a3e6-e5e2-054d-a5b2-bfc5e7e84d2b.png)

buildspec.ymlを作成してpushしておきます。
プライベートリポジトリの内容がビルドソースとして取得できていることを確認したいので、```ls -al``` させるだけにしておきます。

```buildspec.yml
version: 0.2

phases:
  build:
    commands:
      - echo "Listing repository contents..."
      - ls -la
```

## CodeConnections 接続の作成
やっていきます！

### 見つけ出す
CodeConnectionsという名前はついているんですが、コンソールから検索で直遷移できませんでした。
CodeXXXを適当に開き、サイドメニューの「接続」から作成画面へ移動します。

![cap1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/56ee3c9f-f457-5f96-8bb9-2d2ba0913736.png)

「接続を作成」をクリックします

![cap2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/ea133fb9-cc7b-e1ca-57b4-11278c94115e.png)

### 必要な設定を行い、githubと連携する
今回はGitHubと接続するので、GitHubを選択します。
また、アプリ名も適当に入力します。

![cap3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/6aafe5d3-a519-dee7-c7b9-8bd09e250dad.png)

オッケーなので「GitHubに接続する」をクリックします。


### AWSからのアクセスを許可する
認可画面っぽいものが表示されます。
GitからAWSに認証情報やファイルへのアクセスを許可しますか？という雰囲気のことが聞かれています。

![cap4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/691c6ab3-2678-377f-7df3-a2881ae1f440.png)


もちろん歓迎なので、「Authorize AWS Connector for GitHub」をクリックします。

認可すると、AWSの画面に再度戻ってきます。

### botをインストールする
オプショナルな設定として、GitHub Appを利用して、AWSからGitHubへの通信を、ユーザーとしてではなく、botとして行う設定が可能です。

![cap5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/4ac15bb1-2fca-0eef-a42b-31f2446f7f7e.png)


GitHubユーザーとしてAWSからGitHubへ通信させると、リポジトリ全てを参照できたり、不都合が多いです。
botを設定して、適切な読み取り範囲を設定しましょう。

![cap11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/57abf505-9f02-02a6-b483-673992592b1c.png)

「新しいアプリをインストールする」をクリックします。

再度GitHubに遷移します。
読み取り範囲を選択できる画面ですね。

![cap6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/c455e987-7f60-f3e3-404c-3e1ff87ac26f.png)

「Only select repositories」ラジオをクリックし、読み取り範囲を選択します。

![cap7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/62396851-ab35-fc6c-5860-a1c67a74eb55.png)

作成したprivateリポジトリのみを指定し、AWS側から読み取ることができるリポジトリを限定します。

![cap8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/14050dd5-e829-9467-359a-8ffbee91e402.png)

「Install & Authorize」を作成し、Appをインストールします。

### CodeConnections接続を作成する
再度AWSに遷移するので、「接続」をクリックします。

![cap9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/a9446da4-aa99-dc50-d7e8-c24b7b624b3a.png)

作成が完了しました！！！

![cap10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/d34d1c9f-3fec-70a1-ce65-dcb79c345f81.png)


参考：InstallしたアプリはGit側で確認できます
[https://github.com/settings/profile](https://github.com/settings/profile)に遷移し、
Integrations > Applications から確認できます。

![cap13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/a8b2ddb4-1502-66c0-d6b7-e54ddc8b7fc3.png)


## 適当なCodepipelineとCodebuildを用意
CodepipelineとCodebuildを用意していきます。
この記事の本筋ではないので、重要じゃない部分は適当です。

### Codepipeline本体を設定
やっていきます

![cap16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/582ddbbd-fd9c-1f23-a575-31118c4b476a.png)

名前と実行モードを選択します。
名前は適当。V2である必要は特にないので、V1を選択します。

![cap17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/354c632c-6ad9-5c76-2f05-017499de4786.png)

他はデフォルトで次に進みます。

### ソースステージを設定
ソースステージです。ここで先ほど作成したCodeConnectionsを使います！！！！

![cap18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/122c5598-83ce-f18d-336b-ed51d4eee512.png)

接続から、作成したCodeConnections接続を指定します。

![cap19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/297cb45d-792f-213e-67e6-0a840f318b23.png)

その後、リポジトリ名と参照するブランチを選択します。
ブランチの選択肢が、bot作成時に指定したものに限定されていることが分かります。

![cap19_1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/9224765c-3379-3944-026b-b49cfb99bc92.png)

ブランチ、リポジトリを選択しました。

![cap20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/037aeb6b-c7f7-3c6f-7953-241933f1edb5.png)

今回はテストなので、pushなどの変更をトリガー設定する箇所はスキップします

![cap21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/2a8402dd-d5e5-211b-ba42-d63e764b884e.png)

「次に」をクリックしビルドステージを設定していきます。

### ビルドステージを設定
CodeBuildを利用します。

![cap22.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/0ca2936b-dddf-5e8d-3c6c-0055f97ab40d.png)

CodeBuildを選択します。

![cap23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/fdaa3f7a-4767-432f-5f32-b7891fb3a8fb.png)

適当に作ります。

![cap24.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/04997b96-9540-e775-c571-53af790777be.png)

名前を設定します。

![cap25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/31f98617-e7a6-3052-add6-17a5c5596141.png)

buildspec.ymlを読むよう指定します。

![cap26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/e8a758da-cd69-c108-f74c-c564fa5144cf.png)

他はデフォルトで作成します。

![cap27.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/ea7d6f37-c8a1-6293-0054-c6c7d49c9eb5.png)

ビルドプロジェクトが作成されたことを確認し、次へ進みます。

### デプロイステージを設定

デプロイステージはスキップします。

![cap28.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/6b1f7f62-3758-c562-1e4d-2e7b0da56134.png)

### pipelineを作成
設定を再度確認し、問題がなければpipelineを作成します。

![cap29.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/3ef4939b-946f-28cf-2d89-3461742c7caa.png)

設定できたので、pipelineを作成します！！！！

![cap30.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/48ed19d7-30c4-a587-860d-85b0a85c8cc8.png)

pipelineが作成されました。

## 動作を確認する
初回時にリリースが走るので、結果を確認します。

![cap32_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/eceb82d3-a20d-8134-d88d-294d6c67695a.png)

とりあえずなんか成功しました！！！！

いろいろ見て見ましょう。
まずはSourceステージです。

![cap31.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/2fe53d34-32f0-c4b3-a671-94d21f4504f3.png)

しっかりGitHubからリポジトリが連携できてますね。

つづいてBuildステージも見ます。

![cap33.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/80099713-ac96-b18b-5825-6fccf991a46d.png)

buldspec.ymlが動いていそうです。おっけー

# おわりに
CodeCommitがサ終するのはビックリしましたが、移行は楽そうですね。よかった。