これが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の起動方法の手順を参考に起動する
-
任意のディレクトリにdocker-compose.ymlを作成する
touch docker-compose.yml
-
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"
-
次のコマンドを実行してコンテナを起動します
docker-compose up
以上で、LocalStackのサーバが起動された。
3.3. AWS CLIのインストール
awscli
をUbuntuにインストールするには、以下の手順に従ってください。
-
最新のパッケージリストを取得します。
sudo apt-get update
-
awscli
をインストールするために必要なパッケージをインストールします。sudo apt-get install awscli
-
インストールが完了したら、
awscli
が正しくインストールされたかどうかを確認するために、以下のコマンドを実行してバージョン情報を取得します。aws --version
-
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
-
動作確認として、
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
を利用することで操作ミスを起こしにくいと思われるため、個人的にはこちらの利用を推奨する。
-
pipをインストールする。
sudo apt-get update sudo apt-get install python3-pip
-
awscli-local
をインストールする。pip3 install awscli-local
-
インストールが完了したら、以下のコマンドを実行してバージョン情報を確認します。
awslocal --version
-
動作確認として、
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
の知見を深めて、さらに記事を投稿していこうと思います。