AWS ECSで悪戦苦闘走り書き

## 概要
- ECSについてのまとまった記載と、AWSの知識ほぼなしといったことから、大苦戦したことをまとめる


## 初めに
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html

1. これを参考に、IAMユーザーを作成した
    - 付与すべきロールが行方不明である↓ロールに関するdoc
    - https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/security-iam-awsmanpol.html

2. また、今回はEC2を利用するため、
EC2のインスタンスを作成し、Keyも併せて作成した
    - 記述を見る限り、インスタンスはなしで、単純にKeyだけを作成するでもよさそうである


3. 最後に流れに従い、AWS CLIをインストールすることにした

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

## チュートリアルの404
ここにあった、docを参考にチュートリアルを見に行ったところ、チュートリアルのDocに関してはリンクが切れており、404となってしまっている。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/create-container-image.html

↓↓↓↓↓↓↓↓↓↓　悲しみのチュートリアル　↓↓↓↓↓↓↓↓↓↓↓↓

https://docs.docker.com/engine/context/ecs-integration/

## ECRにどっか―イメージをプッシュするらしい
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/create-container-image.html#create-container-image-prerequisites

### 前提条件
- 必要な権限を所持したIAMユーザーの準備が完了している
- EC2（アクセスできる環境なら何でも）にDockerをインストールしている
- AWS CLIがインストールされている

### Docker　イメージを作成する（イメージがあればスキップしてよし！！）
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/create-container-image.html#create-container-image-create-image

すっごい雑にまとめると、docker imageをEC2上で作成しているだけ

### ECRにイメージをプッシュするっぽい


1. そのために、IAMユーザーが必要であるがどうやら先ほど作成したIAMユーザーでは適切ではないようなので、↓のサイトを参考に作り直すことにする

https://udemy.benesse.co.jp/development/system/aws-cli.html

これだと、IAMユーザーに対して、作成時に、AWS　CLIのアクセスキーなどを取得しているが、現在のUIでは作成後に`IAM>ユーザー>[ユーザ名]`の`セキュリティ認証情報>アクセスキー`から作成することができる

後は手順通りに行うことで、AWS　CLIのセットアップが完了する

### STEP1　ECRにレジストリを作成する
初めに、イメージを保存する用のレジストリを作成する
この状態では空である
```cmd
aws ecr create-repository --repository-name XXXXXXX --region  ap-northeast-1
```
XXXXXXXにレジストリ名を入れることで、作成することが可能

```cmd:レスポンス
C:\Users\hoge>aws ecr create-repository --repository-name XXXXXXX --region  ap-northeast-1
{
    "repository": {
        "repositoryArn": "arn:aws:ecr:ap-northeast-1:XXXXXXXXXXXX:repository/XXXXXXX",
        "registryId": "XXXXXXXXXXXX",
        "repositoryName": "financial-details-app",
        "repositoryUri": "XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/XXXXXXX",
        "createdAt": "2024-01-06T20:31:22+09:00",
        "imageTagMutability": "MUTABLE",
        "imageScanningConfiguration": {
            "scanOnPush": false
        },
        "encryptionConfiguration": {
            "encryptionType": "AES256"
        }
    }
}
```
### STEP2 タグをつける

今回自分のつまりポイントでした！！！

docker tagをつける必要があったのですが、doker composeの設定もれで、buildしたimageにレポジトリ名がついていなかったことで、tagをつけることができていませんでした。

docker compose で作成している方は、
```dockerfile
  db:
    image: financial_app_db
```
のように,
image名を指定するようにしてください

そうすると、
```cmd
# [repositoryUri]に関しては先ほどのjsonの対応するURIに置き換えてください。
docker tag financial_app_db [repositoryUri]
```
タグをつけ終わった後は、次のコマンドを打ってLoginするようにしてください。
```cmd
# [region][aws_account_id]に関しても適宜置き換えてください。
aws ecr get-login-password --region [region] | docker login --username AWS --password-stdin [aws_account_id].dkr.ecr.[region].amazonaws.com
```
最後にpushをすると、指定したAWS　ESRレポジトリに登録されるようです。
```cmd
docker push [repositoryUri]
```
試しの場合は、ここでストップしないとイメージストレージに課金されてしまう
```cmd
aws ecr delete-repository --repository-name [repository-name] --region region --force
```

## Amazon EC2 で Windows を使用してコンソールを開始する
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/getting-started-ecs-ec2-v2.html

### 前提条件
- ECSのセットアップのステップが完了している
- IAMユーザーに、`AdministratorAccess`か初回実行権限がついている

### ステップ 1: クラスターを作成する

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/getting-started-ecs-ec2-v2.html

クラスターの作成は、文字を読めば行ける

しかし、タスク定義に関して不明点が多すぎる。かつ、サービスにEC2が登録されない


## 
本日中にデプロイする必要があるため、普通のEC2にいったんDockerをいれることにする
来月また改めてデプロイする予定なので、それまでに調べなおす