1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSを無料で触りたい: LocalStackを導入してみた

Last updated at Posted at 2025-03-31

はじめに

AWSの無料枠はあるものの、「誤って課金されるのが怖い」と感じて、触るのを諦めたことはありませんか?
そんなときに便利なのが LocalStack です(たぶんね)。
LocalStack(無料版でOK!)を使えば、AWSの主要なサービスをローカル環境でシミュレーションできるため、課金の心配なく試すことができます。
今回は、LocalStackをDockerで立ち上げ、S3のバケットを作成し、HTMLファイルをアップロードするまでの流れを試してみようと思います。

LocalStackの設定

まず、LocalStackをDockerで立ち上げるための設定を行います。
以下の内容を compose.yml に記載します。

version: "3.8"

services:
  localstack:
    container_name: localstack
    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:/var/lib/localstack
      - "/var/run/docker.sock:/var/run/docker.sock"

この設定では、LocalStackをローカルのポート 4566 で公開しています。
AWSの各サービスもそれぞれポートを通じてアクセス可能になります。

LocalStackの起動

次に、上記の compose.yml が保存されているディレクトリで以下のコマンドを実行して、LocalStackを起動します。
-dオプションをつけることで、バックグラウンドで起動できます。

docker compose up -d

起動後、サービスの状態を確認してみます。

サービス確認

curl http://localhost:4566/_localstack/health | jq

このコマンドを実行すると、以下のようなレスポンスが表示され、LocalStackが立ち上がっていることが確認できます。

{
  "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": "4.3.1.dev3"
}

S3バケットの作成

お試しでS3バケットを作成してみます。
まず、コンテナに入ります。

docker compose exec -it localstack bash

コンテナ内でawslocalコマンドを使って、S3バケットを作成します。

awslocal s3 mb s3://sample-bucket

バケットが作成されると、以下のようなメッセージが表示されます。

make_bucket: sample-bucket

その後、バケットが作成されているか確認します。

awslocal s3 ls
2025-03-30 15:46:48 sample-bucket

これで、S3バケットがローカル環境に作成されました。

S3バケットにHTMLファイルをアップロード

続いて、作成したS3バケットにHTMLファイルをアップロードし、ブラウザで表示してみます。
まず、アップロード用のHTMLファイルを作成します。

echo "<html><head><meta charset="UTF-8"><title>静的ホスティング</title></head><body><h1>Hello World</h1></body></html>" > sample.html

次に、awslocal コマンドを使って sample.html を sample-bucket にアップロードします。

awslocal s3 cp sample.html s3://sample-bucket/

成功すると、以下のようなメッセージが表示されます。

upload: ./sample.html to s3://sample-bucket/sample.html

ブラウザでアクセスし、Hello World と表示されていれば成功です。

スクリーンショット 2025-04-01 1.14.45.png

まとめ

想像以上に簡単にLocalStackを立ち上げることができ、無料でS3を試すことができました。
これならAWSの課金を気にせず、安心して検証できそうですね。
次回は、Goを使ってS3バケットに画像をアップロードする方法を試してみようと思います。


参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?