Rancher Desktopで LocalStack を使ったAWSローカル開発環境の構築

はじめに

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 開発環境を構築できます。これにより、開発効率の向上、セキュリティの強化、そして本番環境への自信を持った移行が実現します。