ホームページ制作を大阪で安く頼むならプロットハブ!

ホームページ制作を大阪で安く頼むならプロットハブ!
毎月5社限定企画実施中

プロットハブ技術ブログ

LocalStackを使用してAWS環境をローカルで再現する

Hidekazu Koga

Hidekazu Koga

2024/9/18

はじめに

ソフトウェア開発において、クラウドサービスを利用する機会が増えてきていると思います。Amazon Web Services (AWS) はその中でも最も利用されるクラウドサービスの一つです。

しかし、開発環境でAWSリソースを直接利用することについて、以下のような懸念点があるのではないでしょうか?  

  • 料金形態を理解せず使用して、請求額がとんでもないことになった
  • コストが心配で利用を控えたり、制限をかけたりして開発が非効率になっている
  • テスト用のリソースを削除するのに手間がかかる

LocalStackを使用すれば、これらの問題を解決できます。本記事では、LocalStackの概要やインストール方法について解説します。

LocalStackとは?

LocalStackは、ローカル開発環境でAWSのクラウドサービスをエミュレートするオープンソースツールです。AWSの主要なサービス(例:S3、DynamoDB、SQS、Lambdaなど)をローカル環境で再現し、開発者がクラウドサービスを利用する必要がありません。LocalStackはDockerコンテナ内で動作し、簡単にセットアップできます。

料金体系

LocalStackには、無料のCommunity版と有料のPro版があります。Pro版の料金はこちらのページに記載があります。

Community版とPro版の主な違いは、下記の通りです。

  • 利用可能なAWSサービスの違い(Community版ではRDSやECSなどは利用不可)
  • Community版ではリソースが永続化されない(LocalStackを再起動すると既存のリソースが削除される)  

Community版、Pro版で利用可能なサービスについては、こちらのページを参照してください。一覧で(Pro)と記載のサービスはPro版のみで利用可能です。

セットアップ

前提条件

LocalStackはDockerコンテナ内で動作するため、あらかじめDockerをインストールしておく必要があります。インストールがまだの方はこちらのページからご自身の端末に応じたDockerをインストールしてください。

インストール

公式ページには、数種類のインストール方法が記載されていますが、本記事では、Docker-Composeで環境構築します。

docker-composeファイル

公式ページに記載されているdocker-compose.ymlファイルをそのまま利用します。

本記事ではCommunity版のdocker-compose.ymlを使用しています。

version: "3.8"

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
    image: localstack/localstack
    ports:
      - "127.0.0.1:4566:4566"            # LocalStack Gateway
      - "127.0.0.1:4510-4559:4510-4559"  # external services port range
    environment:
      # LocalStack configuration: https://docs.localstack.cloud/references/configuration/
      - DEBUG=${DEBUG:-0}
    volumes:
      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
起動確認

Dockerが起動したらhttp://localhost:4566/_localstack/healthへアクセスします。

起動していれば、以下のレスポンスが返ってきます。利用可能なサービスを確認することができます。

{
	"services": {
		"acm": "available",
		"apigateway": "available",
		"cloudformation": "available",
		"cloudwatch": "available",
		"config": "available",
		"dynamodb": "available",
		"dynamodbstreams": "available",
		"ec2": "available",
		"es": "available",
		"events": "available",
		"firehose": "available",
		"iam": "available",
		"kinesis": "available",
		"kms": "available",
		"lambda": "available",
		"logs": "available",
		"opensearch": "available",
		"redshift": "available",
		"resource-groups": "available",
		"resourcegroupstaggingapi": "available",
		"route53": "available",
		"route53resolver": "available",
		"s3": "available",
		"s3control": "available",
		"scheduler": "available",
		"secretsmanager": "available",
		"ses": "available",
		"sns": "available",
		"sqs": "available",
		"ssm": "available",
		"stepfunctions": "available",
		"sts": "available",
		"support": "available",
		"swf": "available",
		"transcribe": "available"
	},
	"edition": "community",
	"version": "3.5.1.dev"
}

S3を使った動作確認

前提条件

ここでは AWS CLI v2 を使用して、確認しています。  

AWS CLI v2 をインストールしたい方は、こちらのページに従ってインストールを行って下さい。

profileの作成

profileを作成します。下記のコマンドを実行してください。プロファイル作成に必要な情報の入力が求められます。

aws configure --profile localstack

AWS Access Key ID [None]: test
AWS Secret Access Key [None]: test
Default region name [None]: np-northeast-1
Default output format [None]: json

AWS Access Key ID AWS secret Access Keyは任意の値で問題ないですが、Default region nameにはAWSのリージョンコードを入力する必要があります。

バケットの作成

AWS CLIの下記のコマンドを実行します。

aws --profile localstack --endpoint-url=http://localhost:4566 s3api create-bucket --bucket sample-bucket --create-bucket-configuration LocationConstraint=ap-northeast-1

下記のようなレスポンスが表示されれば、成功です。

{
    "Location": "http://sample-bucket.s3.localhost.localstack.cloud:4566/"
}

下記のコマンドを実行するとバケットの一覧を取得します。先程作成したバケットが確認できました。

your directory> aws --profile localstack --endpoint-url=http://localhost:4566 s3 ls
2024-07-12 21:14:12 sample-bucket
リソース操作についての補足

この記事ではAWS CLIでリソースの操作を行いましたが、LocalStack CLI というツールも用意されています。AWS CLIでは都度--endpoint-url=http://localhost:4566を記述しないといけませんが、LocalStack CLIでは--endpoint-url=http://localhost:4566を省略できます。また AWS SDK での操作も可能です。

まとめ

この記事では、LocalStackの特徴とセットアップ方法について解説しました。LocalStackを使用することで、コストを削減でき、また実際のAWS環境を汚すことなく様々なテストができるようになると思います。

AWSを使用した開発の際には、LocalStackを活用して効率的な開発を行っていきたいと思います。

プロットハブはソフトウェア開発を
支援しています。
ご興味のある方はぜひお気軽に
ご相談ください。

一覧ページに戻る

全カテゴリ一覧

全タグ一覧

関連記事

コメント

コメントを残す

コメントが承認されると公開されます。※の入力欄は必須項目です

ホームページ制作が毎月5社限定5万5千円から!ご依頼の方はコチラ!