AWS ECRリポジトリ作成、Ubuntu on WSL2からECRへのプッシュ

## はじめに
Windows11Pro+WSL2+Ubuntu+Docker環境を構築し、
VS CodeからUbuntuに接続しプログラム作成、コンテナイメージ作成、
AWSのECRへプッシュ、ECSへのデプロイ・接続確認までを行います。

1. [WSL2のインストール](https://qiita.com/hiropon1839/items/126de61987a0daa8267d)
2. [Visual Studio CodeのインストールとUbuntu on WSL2への接続](https://qiita.com/hiropon1839/items/0f48d85733ad0c85b3b1)
3. [Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正](https://qiita.com/hiropon1839/items/2af467975fb31bbb2819)
4. [AWS CLIインストール、IAMユーザー作成、アクセスキー作成、AWSリソースへのアクセス](https://qiita.com/hiropon1839/items/cd9d1e049ac5d0c07a64)
5. **[AWS ECRリポジトリ作成、Ubuntu on WSL2からECRへのプッシュ](https://qiita.com/hiropon1839/items/52442eb55a58c0b409a0) (今回の記事)**
6. [AWS ECSのタスク定義、クラスタ作成、サービス作成](https://qiita.com/hiropon1839/items/d443d0073f12819f1a88)

:::note warn
以降では「WSL2上のUbuntu」を単に「Ubuntu」と表現します。
:::


## ECRプライベートリポジトリ作成
AWS -> ECR -> リポジトリ にアクセスし、「リポジトリの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/3c0f79ca-9206-e62d-4941-f09b4e14f604.png)


「可視性設定」の「プライベート」を選択、
「リポジトリ名」を今回は「myapp」とします。
その他の項目はデフォルトのままで、「リポジトリを作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/70417b05-839f-49d0-349c-400c6f645562.png)


myappリポジトリが作成されました。
myappリポジトリにチェックをいれ、「プッシュコマンドの表示」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/29338a4b-adc7-0fc8-6fb0-01fbdbc68a6e.png)

1.のコマンドをコピーし、Ubuntuにペーストします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/291e35ce-5b45-c35f-b391-ab426d24e234.png)

```bash:bash
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com
# 111111111111 を各自のアカウントIDに読み替えてください。
```

コマンド実行に成功すると下記のように表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/6ec52129-a7db-d272-5b51-1e44be803093.png)


## ECRへのコンテナイメージプッシュ
### コンテナイメージの確認
[Docker Desktopのインストール、Dockerfile作成、コンテナビルドと修正](https://qiita.com/hiropon1839/items/2af467975fb31bbb2819)
で作成したコンテナイメージを確認します。

```bash:bash
docker images
```
　
下記の、`myapp:v2`をECRへプッシュします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/f402c885-ed00-d460-34bd-105cf36d9709.png)

### リポジトリ名とタグの付与
```bash:bash
docker tag myapp:v2 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v2
# 111111111111 を各自のアカウントIDに読み替えてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/177b2b38-9242-a078-8ee4-436b7bb99423.png)

### プッシュ実行
```bash:bash
docker push 111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:v2
# 111111111111 を各自のアカウントIDに読み替えてください。
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/e72845e1-c7f0-7184-41fd-ff5ca6db741a.png)

ECR上でコンテナが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/718bc7ea-7ad8-b300-1fd5-fd40defc9e23.png)


## アクセスキーの削除
以降の操作はAWSコンソール上で行うため、UbuntuからAWSリソースへのアクセスは不要になります。
セキュリティの観点から、アクセスキーはこのタイミングで削除しましょう。

[AWS CLIインストール、IAMユーザー作成、アクセスキー作成、AWSリソースへのアクセス -> アクセスキーの作成](https://qiita.com/hiropon1839/items/cd9d1e049ac5d0c07a64#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90)
と同様、IAMのユーザー画面で「user001」をクリックします。
「セキュリティ認証情報」をクリックします。

アクセスキーの項目で、「アクション -> 無効化」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/71ff33a1-c60d-060c-ea0f-64329e6b2b5f.png)

「無効化」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/fc00487b-ee86-00cd-4c9d-e7334351b000.png)

「アクション -> 削除」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/e55d361d-f113-5681-9328-faf47a40f8d7.png)

テキスト入力フィールドにアクセスキーを入力し、「削除」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/1dab0277-a691-4cc5-74c8-51d010646b6f.png)

アクセスキーが削除されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/f840380d-b9f7-b2b1-a17a-4e9af75c47f4.png)

`aws`コマンドがエラーになることを確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3488334/fa05b102-2703-e6b0-b821-8ded098340ba.png)

## さいごに
ECRへのリポジトリ作成、Ubuntuからリポジトリへのプッシュが完了しました。
次回は、ECSを設定し、コンテナの稼働確認を行います。

- [AWS ECSのタスク定義、クラスタ作成、サービス作成](https://qiita.com/hiropon1839/items/d443d0073f12819f1a88)