LocalStackとは
LocalStackとは、AWSのサービスをローカル環境で疑似的に使うことができるツールです。
クラウド環境を使わずに、S3やLambdaなどの動作確認や開発ができます。
今回はこのツールを使ってCloudFormationでS3バケットを作成してみます。
ローカル環境で動かしてみる
docker-compose.yml
ファイルを以下のように記載します
version: '3.8'
services:
localstack:
image: localstack/localstack
ports:
- "4566:4566" # LocalStackの統一エンドポイント
environment:
- SERVICES=cloudformation,s3,dynamodb # 有効にするサービスをカンマ区切りで指定
- DEBUG=1 # デバッグモードを有効化
その後、以下コマンドを実行し、LocalStackを立ち上げます
$ docker-compose up -d
CloudFormationをデプロイしてみる
試しに以下のCloudFormationコードを書きました
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-localstack-bucket
その後、LocalStackにデプロイしてみます
$ aws --endpoint-url=http://localhost:4566 cloudformation create-stack --stack-name myteststack --template-body file://template.yml
{
"StackId": "arn:aws:cloudformation:ap-northeast-1:000000000000:stack/myteststack/8320a915"
}
--endpoint-urlを指定しないと本番環境にデプロイされるので注意してください。
デプロイ後の確認
S3が存在してるか確認してみると、無事に作成されていました
$ aws --endpoint-url=http://localhost:4566 s3 ls
2025-09-23 23:48:30 my-localstack-bucket
感想
実際のクラウド環境を触らずに気軽にリソース作成やテストができるので便利ですね。
CloudFormationを使って開発をしてる方は、CICDパイプラインなんかに組み込むと
デプロイ前に自動テストができて、いいかもしれません