CloudShellを使用して、CloudFormationスタックを削除する方法とAWS Infrastructure Composerについて

## はじめに
AWS CloudFormationは、AWSインフラをコードで管理できる便利なサービスです。

今回は、不要なCloudFormationスタックを削除する方法について説明します。

普段はAWSのマネジメントコンソールを使用して削除していることが多いですが、自分の備忘録として、この記事に記録しておきます。

## コマンド概要
CloudFormationスタックを削除するには、``aws cloudformation delete-stack`` コマンドを使用します。

これにより、指定したスタックおよびそのリソースを削除できます。

**コマンド:**

```bash
aws cloudformation delete-stack --stack-name <stack-name>
```

ここで、``<stack-name>``は削除したいCloudFormationスタックの名前に置き換えてください。

![スクリーンショット 2024-11-12 21.51.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/63808380-29be-3fbc-d1ad-378abb75175f.png)

## スタック削除の手順
### AWS CloudShellの起動
AWS CloudShellを開き、コマンドラインから操作を行います。CloudShellは、AWSマネジメントコンソール内で直接利用できるターミナル環境です。

![スクリーンショット 2024-11-12 21.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/e13b7f87-34f6-b1f4-62e7-de254794a5f7.png)

### 削除対象スタックの確認
スタックを削除する前に、現在のスタックの状態を確認することをおすすめします。``describe-stacks`` コマンドを使って、スタックの状態を確認できます。

```bash
aws cloudformation describe-stacks --stack-name aaa
```

**出力例:**

```bash
{
  "Stacks": [
    {
      "StackId": "arn:aws:cloudformation:ap-northeast-1:xxx:stack/aaa/4c56c0c0-a0ea-11ef-b97b-0a910cc5f285",
      "StackName": "aaa",
      "StackStatus": "CREATE_COMPLETE",
      "CreationTime": "2024-11-12T11:36:03.672000+00:00",
      "Capabilities": ["CAPABILITY_IAM"],
      "Tags": []
    }
  ]
}
```

### スタックの削除
スタックが削除可能であることを確認した後、次のコマンドを実行してスタックを削除します。

```bash
aws cloudformation delete-stack --stack-name aaa
```

これにより、スタック名 ``aaa`` に関連するすべてのリソース（EC2インスタンス、IAMロール、セキュリティグループなど）が削除されます。

![スクリーンショット 2024-11-12 21.53.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/342a802a-17d4-1cd5-9240-90f8c9ac0fe5.png)

削除の進行状況は、CloudFormationコンソールやAWS CLIを使って確認できます。

### 削除の確認
スタック削除が開始されたことを確認するには、次のコマンドを使ってスタックの状態を再確認します。

```bash
aws cloudformation describe-stacks --stack-name aaa
```

スタックが削除中の場合、``StackStatus`` は ``DELETE_IN_PROGRESS`` に変わり、最終的には ``DELETE_COMPLETE`` になります。

```bash
{
  "Stacks": [
    {
      "StackId": "arn:aws:cloudformation:ap-northeast-1:xxx:stack/aaa/4c56c0c0-a0ea-11ef-b97b-0a910cc5f285",
      "StackName": "aaa",
      "StackStatus": "DELETE_IN_PROGRESS",
      "CreationTime": "2024-11-12T11:36:03.672000+00:00"
    }
  ]
}
```

### 削除完了の確認
最終的にスタックが完全に削除されると、``StackStatus`` は ``DELETE_COMPLETE`` に変わります。

:::note warn
**この時点でスタックとそのリソースは完全に削除され、再作成が可能です。**
:::

## コマンドの注意点
**削除後は復元できない:** 
CloudFormationスタックを削除すると、スタックに関連するリソースも削除されます。削除後にリソースを復元することはできません。

:::note alert
**重要なデータがある場合は、削除前にバックアップを取ることを強く推奨します。**
:::

**削除の時間:**
スタック削除には時間がかかる場合があります。リソースの数や依存関係により、数分から数十分の時間が必要です。

## まとめ
AWS CloudFormationスタックを削除するには、aws cloudformation delete-stack コマンドを使用します。

削除作業を進める前に、スタックの状態を確認し、削除後に元に戻せないことを考慮して慎重に実行することが重要です。

## おまけ：AWS Infrastructure Composerについて

CloudFormationでyamlファイルなどをアップロードした後、「Infrastructure Composer」というサービス画面を表示することができます。

![スクリーンショット 2024-11-12 21.04.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/bacc97c3-bb3e-9e75-caee-7915d20e64b7.png)

「Infrastructure Composer」は、クラウドアプリケーションを視覚的に設計し、AWSリソースを配置するツールです。

:::note warn
**このツールは、実際に必要なコード（IaC）を自動的に生成します。**
:::

キャンバスモードでは、以下のようにイラストや図形形式で視覚的に構成を確認できるため、非常に見やすくなっています。

![スクリーンショット 2024-11-12 21.09.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/807f4c70-634d-c54c-129b-b282d95c6db1.png)

また、テンプレートモードでは、作成したyamlファイルを事前に検証することができるため、非常に便利です。

![スクリーンショット 2024-11-12 21.11.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/e63e1672-2447-2991-33bf-3337cf1efc0f.png)

まだ使いこなせていない部分もありますが、今後積極的にハンズオンしていきたいと考えています。