はじめに
AWS 上で本番環境を構築する際、開発環境でも AWS サービスと同じインターフェースでテストしたいニーズがあります。LocalStack はこの問題を解決する素晴らしいツールです。本記事では、Rancher Desktop を使ってローカル開発環境に LocalStack を構築する方法を詳しく解説します。
LocalStack とは
LocalStack は、AWS サービスをローカルでエミュレートするためのツールです。Docker コンテナ上で動作し、S3、DynamoDB、Lambda、SQS など、主要な AWS サービスをシミュレートできます。
LocalStack のメリット
- 開発時に AWS 認証情報を不要にでき、セキュリティが向上
- ローカル環境での高速なテスト・イテレーション
- AWS API 互換なので、本番への移行が容易
- CI/CD パイプラインでも使用可能
Rancher Desktop のセットアップ
Rancher Desktop は、Mac・Windows・Linux 上で Kubernetes と Docker 互換のコンテナ実行環境を提供します。
1. インストール
https://rancherdesktop.io からダウンロード・インストールしてください。
2. 起動確認
$ rancher-desktop
$ docker --version
Docker version 25.x.x (or later)
LocalStack の実行
Docker Compose で LocalStack を起動
以下のような docker-compose.yml を用意します:
version: '3.8'
services:
localstack:
image: localstack/localstack:latest
ports:
- "4566:4566"
- "4571:4571"
environment:
- SERVICES=s3,dynamodb,lambda,sqs,sns
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
volumes:
- "./localstack:/tmp/localstack"
networks:
- local-aws
networks:
local-aws:
driver: bridge
起動コマンド
$ docker-compose up -d
$ docker-compose logs -f localstack
AWS CLI で LocalStack に接続
プロファイルの設定
$ aws configure --profile localstack
AWS Access Key ID: test
AWS Secret Access Key: test
Default region: us-east-1
Default output format: json
LocalStack エンドポイント指定
$ aws --profile localstack --endpoint-url http://localhost:4566 s3 mb s3://my-bucket
make_bucket: my-bucket
実践例:Lambda + DynamoDB
DynamoDB テーブル作成
$ aws --profile localstack --endpoint-url http://localhost:4566 \
dynamodb create-table \
--table-name Users \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--billing-mode PAY_PER_REQUEST
Lambda 関数デプロイ
Python で簡単な Lambda 関数を作成し、LocalStack にデプロイします:
$ aws --profile localstack --endpoint-url http://localhost:4566 \
lambda create-function \
--function-name my-function \
--runtime python3.9 \
--role arn:aws:iam::123456789012:role/lambda-role \
--handler index.handler \
--zip-file fileb://function.zip
デバッグのコツ
LocalStack のログ確認
$ docker logs -f localstack
コンテナ内でシェル実行
$ docker exec -it localstack /bin/bash
データの永続化
Volume を使って LocalStack のデータを保持することで、コンテナ再起動後もテストデータが残ります。
まとめ
Rancher Desktop + LocalStack の組み合わせにより、強力なローカル AWS 開発環境を構築できます。これにより、開発効率の向上、セキュリティの強化、そして本番環境への自信を持った移行が実現します。