LoginSignup
4
1

More than 1 year has passed since last update.

LocalStackの環境構築から動作確認

Last updated at Posted at 2023-05-04

これがQiita初投稿です。まずは情報発信の練習のつもりで、記事を投稿していこうとおもいます。
よろしくお願いいたします。

目次

1.はじめに
2.LocalStackとは
3.環境構築
4.おわりに

1. はじめに

AWSを活用したシステム開発において、開発・検証・本番の環境をうまく切り分け、リリースミスによってシステムがデグることなく運用するためには、どのような手段があるでしょうか。

調べていくうちにLocalStackを知り、本問題の解決策に適しているのではないかと考え、実際に触ってみました。
そこで、本記事ではLocalStackの環境構築方法について紹介します。

2. LocalStackとは

LocalStackは、AWSリソースをローカル環境で実行できるオープンソースのフレームワークです。AWSと同じAPI、ツール、およびコンソールを使用して、AWSクラウド環境をエミュレートできます。

つまり、AWSを使用する開発者やチームは、AWSのサービスを直接ローカル環境で実行できるため、開発、テスト、およびデバッグをより効率的に行うことができます。また、ローカル環境での開発により、AWSの使用に関連するコストを抑えることができます。

LocalStackは、AWSの様々なサービスをサポートしており、S3、DynamoDB、Lambda、API Gateway、SNS、SQSなど、多くのサービスをローカルで実行できます。また、Dockerコンテナで簡単にインストールできるため、環境の設定が簡単になります。

総じて、LocalStackはAWS開発の効率性を向上させるために非常に便利なツールであり、クラウド開発初心者にも使いやすいです。

3. 環境構築

3.1. 開発環境の構築

開発環境のOSではUbuntuが一番使い慣れているため、今回はWSL2を利用しています。

3.1.1. WSL2の有効化&Ubuntuのインストール

3.1.2. Dockerのインストール

3.2 LocalStackのインストールから起動

公式サイトのDcoker-Composeの起動方法の手順を参考に起動する

  1. 任意のディレクトリにdocker-compose.ymlを作成する

    touch docker-compose.yml
    
  2. 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:
          - DEBUG=${DEBUG-}
          - DOCKER_HOST=unix:///var/run/docker.sock
        volumes:
          - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
          - "/var/run/docker.sock:/var/run/docker.sock"
    
  3. 次のコマンドを実行してコンテナを起動します

    docker-compose up
    

以上で、LocalStackのサーバが起動された。

3.3. AWS CLIのインストール

awscliをUbuntuにインストールするには、以下の手順に従ってください。

  1. 最新のパッケージリストを取得します。

    sudo apt-get update
    
  2. awscliをインストールするために必要なパッケージをインストールします。

    sudo apt-get install awscli
    
  3. インストールが完了したら、awscliが正しくインストールされたかどうかを確認するために、以下のコマンドを実行してバージョン情報を取得します。

    aws --version
    
  4. LocalStackにアクセスするため、credentialsを設定する。その際、credentialsの設定値は任意で問題ない。

    aws configure --profile localstack
    
    AWS Access Key ID [None]: test
    AWS Secret Access Key [None]: test
    Default region name [None]:ap-northeast-1 
    Default output format [None]: json
    
  5. 動作確認として、awscliを利用して、LocalStackにアクセスする。

    # バケットを作成する
    aws s3 mb s3://localstack-bucket --endpoint-url=http://localhost:4566 --profile localstack
    >>> make_bucket: localstack-bucket
    
    # 作成したバケットを確認する
    aws s3 ls --endpoint-url=http://localhost:4566 --profile localstack
    >>> 2023-05-04 14:50:30 localstack-bucket
    

    また、上記コマンドの実行時、LocalStackのコンテナからも下記のログを見ることができたため、正常にアクセスできたことを確認できる。

    localstack_main  | 2023-05-04T05:50:30.080  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.CreateBucket => 200
    localstack_main  | 2023-05-04T05:54:05.592  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.ListBuckets => 200
    

以上で、Ubuntuにawscliをインストールして、LocalStackにアクセスまでを確認できた。

3.4. awscli-localのインストール

上記までで疎通確認までは完了しているが、awscliを利用して、プロファイルの指定とエンドポイントの指定では、操作ミスに伴う、事故が起こる可能性が高くなると考えれる。
LocalStackが提供しているAWS CLIのラッパーであるawscli-localを利用することで操作ミスを起こしにくいと思われるため、個人的にはこちらの利用を推奨する。

  1. pipをインストールする。

    sudo apt-get update
    sudo apt-get install python3-pip
    
  2. awscli-localをインストールする。

    pip3 install awscli-local
    
  3. インストールが完了したら、以下のコマンドを実行してバージョン情報を確認します。

    awslocal --version
    
  4. 動作確認として、awscli-localを利用して、LocalStackにアクセスする。

    # バケットを作成する
    awslocal s3 mb s3://localstack-bucket-awscli-local
    >>> make_bucket: localstack-bucket-awscli-local
    
    # 作成したバケットを確認する
    awslocal s3 ls
    >>> 2023-05-04 14:50:30 localstack-bucket
    >>> 2023-05-04 14:50:30 localstack-bucket-awscli-local
    

    また、上記コマンドの実行時、LocalStackのコンテナからも下記のログを見ることができたため、正常にアクセスできたことを確認できる。

    localstack_main  | 2023-05-04T05:59:49.676  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.CreateBucket => 200
    localstack_main  | 2023-05-04T05:59:57.678  INFO --- [   asgi_gw_0] localstack.request.aws     : AWS s3.ListBuckets => 200
    

以上で、Ubuntuに awscli-local をインストールして設定する手順が完了しました。

4. おわりに

まずは環境構築のみで、「1.はじめに」で問題提起しました「運用」までは触れてません。
これらから、LocalStackの知見を深めて、さらに記事を投稿していこうと思います。

次の記事:LocalStackを使用して、ローカル環境でS3を利用した静的ウェブページのホスティング手順

4
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
4
1