今の案件からやっとAWSを触り始めたのですが作業としては仮想アプライアンスのNW構築が主でAWSサービスの構築作業はあまりできませんでした。
(調査系とかではさわってるけど)
いい勉強方法ないかなと暇なとき遊んでるcopilotに聞いたら実際のAWSのほか、localstackなるもので学習できると回答がありました。
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で作成してみます。
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サーバ構築くらいはやってみたいですね。