PR

AWS SAMで作成されたリソースの確認・削除ガイド(完全版)

AWS Serverless Application Model(SAM)は、サーバーレスアプリケーションの構築とデプロイを簡素化する強力なツールです。しかし、不要になったリソースを放置すると、コストの無駄やセキュリティリスクにつながります。本記事では、AWS SAMで作成されたリソースの確認削除の方法を、ステップバイステップで詳細に解説します。


☑️ 1. SAMで作成されたリソースの確認

SAMで sam deploy を使ってアプリケーションをデプロイすると、AWS CloudFormation を介して各種AWSリソース(Lambda, API Gateway, DynamoDB, S3, など)が作成されます。

1-1. デプロイ済みスタックの一覧を確認

aws cloudformation list-stacks \
  --query "StackSummaries[?StackStatus!='DELETE_COMPLETE'].[StackName,StackStatus]" \
  --output table

ワンライナー形式

aws cloudformation list-stacks --query "StackSummaries[?StackStatus!='DELETE_COMPLETE'].[StackName,StackStatus]" --output table

これにより、現在有効なCloudFormationスタックの一覧が表示されます。

1-2. スタック内のリソースを確認

aws cloudformation describe-stack-resources --stack-name <スタック名>

スタックに含まれる各リソース(Lambda関数、API Gateway、DynamoDBなど)を確認できます。

1-3. sam list コマンドを使用

sam list

SAM CLIが保持している状態から、デプロイ済みリソースの一覧を取得します(--guided でデプロイした場合のみ有効)。


❌ 2. SAMリソースの削除

2-1. sam delete コマンドを使用(推奨)

sam delete

対話形式でスタックを削除します。プロンプトをスキップして自動化したい場合は:

sam delete --stack-name <スタック名> --region <リージョン> --no-prompts

このコマンドは、関連するCloudFormationスタックと、それにより作成された全リソースを安全に削除します。

2-2. CloudFormationスタックを直接削除

SAM CLIがうまく動作しない場合や手動操作を行いたい場合:

aws cloudformation delete-stack --stack-name <スタック名>

🔄 3. その他の関連リソース削除

一部のリソースはCloudFormationスタックに含まれず、手動削除が必要です。

S3バケットの削除(SAMビルド用)

aws s3 rb s3://<バケット名> --force

ECRリポジトリ(ビルド用イメージ)

aws ecr delete-repository --repository-name <リポジトリ名> --force

IAMロール

aws iam delete-role --role-name <ロール名>

CloudWatch Logs(Lambdaのログ)

aws logs delete-log-group --log-group-name /aws/lambda/<関数名>

⚠️ 注意点

  • 削除は取り消しできません。 誤って削除しないよう、必ずスタック名・リソース名を確認してください。
  • sam deleteaws cloudformation delete-stack の実行は、リソースの依存関係も自動的に処理されます。
  • 削除後も S3のバージョニング有効化バケット は完全には削除されないことがあります。

📆 自動化したい場合のTips

定期的に検証・検出・削除を行いたい場合は、以下のようなスクリプトをCloudShellやCI上で活用できます:

#!/bin/bash
STACK_NAME="your-stack-name"
REGION="ap-northeast-1"

# 削除確認
aws cloudformation describe-stacks --stack-name $STACK_NAME --region $REGION

# スタック削除
aws cloudformation delete-stack --stack-name $STACK_NAME --region $REGION

# 関連ロググループ削除(例)
aws logs delete-log-group --log-group-name "/aws/lambda/${STACK_NAME}-function"

🔎 まとめ

AWS SAMを用いた開発後は、不要なリソースを明示的に削除することがコスト最適化セキュリティ強化に直結します。sam deleteaws CLI を使って、再現性のある構築・削除フローをテンプレート化しておくことが、継続的な開発やMVP運用にも非常に有効です。

本記事は、再現性・効率性・自動化を重視するサーバーレス開発者のためのリファレンスとして設計されています。

コメント

タイトルとURLをコピーしました