paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

家の環境にlocalstackをデプロイする

今の案件からやっとAWSを触り始めたのですが作業としては仮想アプライアンスのNW構築が主でAWSサービスの構築作業はあまりできませんでした。
(調査系とかではさわってるけど)

いい勉強方法ないかなと暇なとき遊んでるcopilotに聞いたら実際のAWSのほか、localstackなるもので学習できると回答がありました。

www.localstack.cloud

localstackとは

早速ググったところローカル環境でAWSを模した環境が構築できコマンドの検証もできるようです。今どきは何でもありますね。

コミュニティ版では機能が制限されるようですがまず試す分には問題ないでしょう。
というわけで家の環境にインストールしてみます。

パッケージインストールとdocker版があるようです。
docker版もあるのがお手軽でありがたい。動作確認なのでラボ内じゃなくサブ機Ubuntuにインストールしてみます。

pipでツールを入れていくのでまずは仮想環境作ります。

❯ python3 -m venv localstack
❯ source localstack/bin/activate

localstackデプロイ

マニュアルに沿ってdocker−composeでデプロイ。
特にいじる箇所もなくコメント無し。

awscli-localコマンドインストール

localstackの操作についてawsコマンドが使えて環境変数をこれ用に変えればいいようです。
また、専用にawscli-localをいれればそのまま使えるようでこちらをインストールします。

❯ pip install awscli-local
❯  awslocal
Traceback (most recent call last):
  File "/home/masashi/localstack/bin/awslocal", line 87, in main
    import awscli.clidriver  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'awscli'

During handling of the above exception, another exception occurred:


  File "<frozen os>", line 589, in execvpe
  File "<frozen os>", line 622, in _execvpe
  File "<frozen os>", line 613, in _execvpe
FileNotFoundError: [Errno 2] No such file or directory: b'/snap/bin/aws'

動かない。awsコマンドが無いと言ってる。 awsコマンド本体もインストール。

❯ pip install awscli

まあ本体無いと流石に動かないよね。

terraformインストール

localstackはterraformも使えるようです。こちらの練習もできるのは嬉しい。
ということでインストールします。

❯ pip install terraform-local

同じくtf-localという専用コマンドがあるのでこちらをインストール。

❯ tflocal -help
Unable to determine version. See error message for details: [Errno 2] No such file or directory: 'terraform'

こちらもawscli-localと同じ状況のため本体のterraformをインストール。
公式ドキュメントのコマンドから。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
deb [arch=amd64 signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com noble main
❯ sudo apt update && sudo apt install terraform
❯ tflocal --help
Usage: terraform [global options] <subcommand> [args]

OK。

s3バケット作成

localstackのドキュメントにあったとおりs3バケットをterraformで作成してみます。

https://docs.localstack.cloud/aws/integrations/infrastructure-as-code/terraform/#install-the-tflocal-wrapper-script

main.tfを作成。

resource "aws_s3_bucket" "test-bucket" {
    bucket = "my-bucket"
}

初期化。

❯ tflocal init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v6.4.0...

...()

Terraform has been successfully initialized!

コードを実行します。

❯ tflocal apply

Terraform used the selected providers to generate the
following execution plan. Resource actions are indicated with
the following symbols:
  + create

Terraform will perform the following actions:

  # aws_s3_bucket.test-bucket will be created
  + resource "aws_s3_bucket" "test-bucket" {
      + acceleration_status         = (known after apply)
      + acl                         = (known after apply)
      + arn                         = (known after apply)
      + bucket                      = "my-bucket"
      + bucket_domain_name          = (known after apply)

...()

aws_s3_bucket.test-bucket: Creating...
aws_s3_bucket.test-bucket: Creation complete after 1s [id=my-bucket]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

確認。

❯ awslocal s3 ls
2025-07-18 15:11:42 my-bucket

おおーできてる。
これ覚えられたら本当にインフラ構築が簡単にできそう。

まとめ

触りだけですがlocalstackのデプロイと簡単な操作ができました。
AWSの無料枠でもいいんだろうけどローカルで使いたい放題はなかなか嬉しいツールです。
コミュニティ版だとどこまでの機能があるかわかりませんがEC2とかでwebサーバ構築くらいはやってみたいですね。