0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LocalStackを使用して、ローカル環境でS3を使ってみた

Last updated at Posted at 2025-03-17

はじめに

今回は、LocalStackの環境構築と、エミュレートしたS3へのファイルアップロード&ブラウザでの表示を行いました。
実務でLocalStackを触る機会があり、興味があったので実際に自分でも環境構築から行ってみました。
LocalStackの環境構築部分でいくつか詰まったので、そこも共有できたらと思います。

参考にした記事

こちらの記事を参考にしました。
LocalStackに関する説明などもこちらに記載されているので、興味がある方は見てみてください。

LocalStackの環境構築

今回は、ローカル環境(venv上)にlocalstack、awscli、awscli-localをインストールしました。
後述しますが、awscliパッケージがインストールされていないと、awscli-localのコマンドが使用できないことに注意してください。

実施環境:

  • Python 3.11.9
  • pip 24.0
  • Docker(LocalStack CLIではDocker環境が必要)

localstack

pipを使用してLocalStackをインストールします。

$ pip install localstack

この時、パスの長さによるエラーが出た場合は、以下の記事の手順を実行することで解消することができます。

awscli-local

awslocalコマンドを使用するためにawscli-localをインストールします。

$ pip3 install awscli-local

awscli

awscli-localをインストールしただけだとawslocalコマンドは動かないので、awscliをインストールしていきます。
awscli-localはawscliをラップしたものなので、当たり前ではあるのですが、awslocalコマンドを使用した際に出たエラーが「Segmentation fault」だけだったので、解決方法を見つけるのに少し時間がかかりました。

ということでインストールしていきます。

$ pip install awscli

動作確認

まずはLocalStackが起動できるか確認します。

以下のコマンドを入力して、起動していきます。
ほかに同じポートを使用しているサービスがあるとうまく起動できないので注意してください。(自分は最初それで起動できませんでした…)
$ localstack start -d


     __                     _______ __             __
    / /   ____  _________ _/ / ___// /_____ ______/ /__
   / /   / __ \/ ___/ __ `/ /\__ \/ __/ __ `/ ___/ //_/
  / /___/ /_/ / /__/ /_/ / /___/ / /_/ /_/ / /__/ ,<
 /_____/\____/\___/\__,_/_//____/\__/\__,_/\___/_/|_|

- LocalStack CLI: 4.2.0
- Profile: default
- App: https://app.localstack.cloud
...

次にawslocalコマンドが動くかを確認します。
以下のコマンドを実行して、バージョン情報が出てくれば問題ありません。

$ awslocal --version

実際に使ってみる

awslocalコマンドを使用して、LocalStackでエミュレートされたS3に対してファイルのアップロードを行い、アップロードされたファイルをブラウザから確認するということを行いました。

まずは現在開いているディレクトリに、S3へアップロードする用のファイルを作成します。
今回はtxtファイルとhtmlファイルを作成しました。
この時、UTF-8で保存するとブラウザで表示する際に文字化けしてしまうため、Shift JISで保存します。
(後で調べたらアップロードの際にコンテンツタイプにより正しく表示されることがわかりました。
例:--content-type "text/html; charset=utf-8")

test.txt
# テスト用のファイル

test.html
<h1>HTMLファイル</h1>

次にS3バケットを作成します。
以下のコマンドでバケットを作成できます。
$ awslocal s3 mb s3://test-bucket

$ awslocal s3 mb s3://test-bucket
make_bucket: test-bucket

続いて、S3バケットに先ほど作成したファイルをアップロードしていきます。
以下のコマンドでtest.txtファイルをtest-bucketにアップロードすることができます。
$ awslocal s3 cp ./test.txt s3://test-bucket

$ awslocal s3 cp ./test.txt s3://test-bucket
upload: .\test.txt to s3://test-bucket/test.txt

同様にhtmlファイルもアップロードします。

アップロードが完了したら、今度はブラウザで表示して確認します。

HTMLファイルはHTMLが読み込まれてこのように表示されると思います。

S3アップロードHTML.png

まとめ

今回はLocalStackを使ってエミュレートされたS3へのアップロードを試してみました。
LocalStackでは、S3のほかにも、EC2やLambdaといったサービスが使えるので、今後開発環境やテスト環境で必要になった際には覚えておきたいと思います。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?