AWS Copilotメモ

## はじめに

ざっくりとしたヘルプオプションの翻訳と、個人的なメモです。
詳細についてはドキュメントをお読みください。

## チートシート

最初に、とりあえず使って便利だったやつ載せていきます。
随時更新していきます。

```sh
# 作成されたリソースの確認コマンド copilot env showは概要なので、全部見たい場合にresourcesオプションを使用する
copilot env show --resources
copilot svc show --resources
```

## copilot -h

|コマンド|説明|
|---|---|
|Getting Started 🌱| |
|`init`|新しいECSまたはApp Runnerアプリケーションを作成します。|
|`docs`|copilotドキュメントを開きます。|
|Develop ✨| |
|`app`|アプリケーション用のコマンドです。アプリケーションは、サービスと環境のコレクションです。|
|`env`|環境用のコマンドです。環境は、サービス間で共有されるデプロイメントステージです。|
|`svc`|サービス用のコマンドです。サービスは、長期間実行されるECSまたはApp Runnerサービスです。|
|`job`|ジョブ用のコマンドです。ジョブは、イベントによってトリガーされるタスクです。|
|`task`|タスク用のコマンドです。一時的なAmazon ECSタスクであり、作業が完了すると終了します。|
|Release 🚀| |
|`pipeline`|パイプライン用のコマンドです。サービスをリリースするための継続的デリバリーパイプライン。|
|`deploy`|Copilotジョブまたはサービスをデプロイします。|
|Extend 🧸| |
|`storage`|ストレージやデータベースを操作するためのコマンドです。|
|`secret`|シークレット用のコマンドです。シークレットは、アプリケーションで必要な機密情報です。|
|Settings ⚙️| |
|`version`|バージョン番号を表示します。|
|`completion`|シェル補完コードを出力します。|

以下は、copilotコマンドのフラグに関する説明です。

|フラグ|説明|
|---|---|
|`-h`, `--help`|copilotのヘルプを表示します。|
|`-v`, `--version`|copilotのバージョンを表示します。|

以下は、copilotコマンドの使用例です。

|使用例|説明|
|---|---|
|`$ copilot init --help`|`init`コマンドのヘルプメニューを表示します。|

## copilot app -h

アプリケーションとは、サービスと環境のコレクションであり、`copilot app`コマンドは、アプリケーションを操作するためのコマンドを提供します。`copilot app`コマンドを使用することで、以下のような操作を行うことができます。

| コマンド | 説明 |
| --- | --- |
| `init` | 空の新しいアプリケーションを作成します。 |
| `ls` | アカウント内のすべてのアプリケーションを一覧表示します。 |
| `show` | アプリケーションに関する情報を表示します。 |
| `delete` | アプリケーションに関連するすべてのリソースを削除します。 |
| `upgrade` | アプリケーションのテンプレートを最新バージョンにアップグレードします。 |

### copilot app init

`copilot app init` は、空の新しいアプリケーションを作成します。アプリケーションは、一緒に動作するコンテナ化されたサービスの集合です。

#### 使用法

```
copilot app init [name] [flags]
```

| フラグ | 説明 |
| --- | --- |
| `--domain` | オプション。既存のカスタムドメイン名。 |
| `-h`, `--help` | ヘルプを表示します。 |
| `--permissions-boundary` | オプション。すべてのロールに設定する既存のIAMポリシーの名前。 |
| `--resource-tags` | オプション。キーと値がカンマで区切られたラベル。リソースを分類するために使用できます。デフォルトは `[]` です。 |

#### 例

以下は、`copilot app init` コマンドの使用例です。

- `test` という名前の新しいアプリケーションを作成します。

  ```
  $ copilot app init test
  ```

- Amazon Route53 に存在する既存のドメイン名を使用して新しいアプリケーションを作成します。

  ```
  $ copilot app init --domain example.com
  ```

- 既存の IAM ポリシーをロールのパーミッション境界として使用して新しいアプリケーションを作成します。

  ```
  $ copilot app init --permissions-boundary myPermissionsBoundaryPolicy
  ```

- リソースタグを使用して新しいアプリケーションを作成します。

  ```
  $ copilot app init --resource-tags department=MyDept,team=MyTeam
  ```

## copilot env -h

環境とは、サービス間で共有されるデプロイメントステージであり、`copilot env`コマンドは、環境を操作するためのコマンドを提供します。`copilot env`コマンドを使用することで、以下のような操作を行うことができます。

| コマンド | 説明 |
| --- | --- |
| `init` | アプリケーション内に新しい環境を作成します。 |
| `ls` | アプリケーション内のすべての環境を一覧表示します。 |
| `show` | デプロイされた環境に関する情報を表示します。 |
| `package` | 環境のAWS CloudFormationテンプレートを出力します。 |
| `override` | 環境のAWS CloudFormationテンプレートを上書きします。 |
| `deploy` | アプリケーションに環境をデプロイします。 |
| `delete` | アプリケーションから環境を削除します。 |

## copilot svc -h

サービスとは、長時間実行されるECSまたはApp Runnerサービスであり、`copilot svc`コマンドは、サービスを操作するためのコマンドを提供します。`copilot svc`コマンドを使用することで、以下のような操作を行うことができます。

| コマンド | 説明 |
| --- | --- |
| `init` | アプリケーション内に新しいサービスを作成します。 |
| `ls` | アプリケーション内のすべてのサービスを一覧表示します。 |
| `package` | サービスのAWS CloudFormationテンプレートを出力します。 |
| `override` | サービスのAWS CloudFormationテンプレートを上書きします。 |
| `deploy` | 環境にサービスをデプロイします。 |
| `delete` | アプリケーションからサービスを削除します。 |
| `show` | 環境ごとにデプロイされたサービスに関する情報を表示します。 |
| `status` | デプロイされたサービスのステータスを表示します。 |
| `logs` | デプロイされたサービスのログを表示します。 |
| `exec` | 実行中のコンテナの一部でコマンドを実行します。 |
| `pause` | 実行中のApp Runnerサービスを一時停止します。 |
| `resume` | 一時停止中のサービスを再開します。 |

## copilot job -h

ジョブとは、イベントによってトリガーされるタスクであり、`copilot job`コマンドは、ジョブを操作するためのコマンドを提供します。`copilot job`コマンドを使用することで、以下のような操作を行うことができます。

| コマンド | 説明 |
| --- | --- |
| `init` | アプリケーション内に新しいスケジュールされたジョブを作成します。 |
| `ls` | アプリケーション内のすべてのジョブを一覧表示します。 |
| `package` | ジョブのAWS CloudFormationテンプレートを出力します。 |
| `override` | ジョブのAWS CloudFormationテンプレートを上書きします。 |
| `deploy` | 環境にジョブをデプロイします。 |
| `delete` | アプリケーションからジョブを削除します。 |
| `logs` | デプロイされたジョブのログを表示します。 |
| `run` | 環境でジョブを実行します。 |

## copilot task -h

タスクとは、一時的なAmazon ECSタスクであり、`copilot task`コマンドは、タスクを操作するためのコマンドを提供します。`copilot task`コマンドを使用することで、以下のような操作を行うことができます。

| コマンド | 説明 |
| --- | --- |
| `run` | Amazon ECS上での一時的なタスクを実行します。 |
| `exec` | 実行中のコンテナの一部でコマンドを実行します。 |
| `delete` | アプリケーションまたはデフォルトクラスターから一時的なタスクを削除します。 |