LocalStack 拡張機能を使用してクラウドアプリをローカルで開発する

ローカルスタックドッカー拡張機能

ローカル展開は、開発速度を向上させ、クラウドコストを削減し、規制によりアクセスが制限されている場合にクラウド向けに開発するための優れた方法です。 ただし、アプリケーションの開発時に管理するためのもう 1 つのツールを意味する場合もあります。

LocalStack Docker 拡張機能を使用すると、完全に機能するローカル クラウド スタックを Docker Desktop に直接統合できるため、クラウドネイティブ アプリケーションを 1 か所で簡単に開発およびテストできます。

ローカルデプロイと、LocalStack Docker 拡張機能の使用方法を見てみましょう。

クラウドアプリケーションをローカルで実行する理由

クラウド アプリをローカルで実行することで、環境を完全に制御できます。 このコントロールにより、結果の一貫性と新機能のテストが容易になります。 これにより、デプロイ、テスト、再デプロイのサイクルが短縮され、バグのデバッグとレプリケートが容易になります。 また、クラウドリソースを使用していないため、クラウドコストを発生させることなく、リソースを自由に作成および破棄できます。

ローカルクラウド開発では、クラウドへのアクセスが制限されている規制された環境で作業することもできます。 彼らのマシンでアプリを実行することで、外部の制限に制約されることなくプロジェクトで作業できます。 

ローカルスタックの仕組み

LocalStack は、AWS クラウドおよびサーバーレスアプリケーションを開発およびテストするための完全に機能するローカルクラウドスタックを提供するクラウドサービスエミュレーターです。 45K + GitHub スターと450 +コントリビューターを持つLocalStackは、世界中の100,000 +アクティブユーザーを持つ大規模でアクティブなオープンソースコミュニティに支えられています。

LocalStack は、プロセス管理、ファイル システムの抽象化、イベント処理、スケジューラなどの複数のコンポーネントを持つローカルの "ミニクラウド" オペレーティング システムとして機能します。 これらの LocalStack コンポーネントは Docker コンテナで実行され、LocalStack API に接続するための統合、SDK、または CLI インターフェイス用の一連の外部ネットワークポートを公開します。

Dockerコンテナを使用したローカルスタックアーキテクチャの図。
LocalStack アーキテクチャは、軽量でクロスプラットフォーム互換になるように設計されており、ローカル クラウド スタックを簡単に使用できます。

LocalStack を使用すると、実際のクラウド環境に接続しなくても、Lambda や S3 などの多くの AWS クラウドサービスの機能をシミュレートできます。 複雑なCDKアプリケーションまたはTerraform構成を適用して、すべてをローカルでエミュレートすることもできます。

公式の LocalStack Dockerイメージ は1億+百万回ダウンロードされており、AMD / x86およびARMベースのCPUアーキテクチャと互換性のあるマルチアーキテクチャビルドを提供します。 LocalStack は、コンピューティング (Lambda、ECS)、データベース (RDS、DynamoDB)、メッセージング (SQS、MSK)、その他の高度なサービス (Glue、Athena) など、80 を超える AWS API をサポートしています。 コードとしてのインフラストラクチャツール、継続的インテグレーション(CI)システムなどとの高度なコラボレーション機能と統合を提供し、開発者の効率的な開発とテストのループを可能にします。 

なぜLocalStackをDocker拡張機能として実行するのですか?

Docker拡張機能は、ソフトウェアアプリケーションを構築し、日常のワークフローに統合するのに役立ちます。 LocalStack を Docker 拡張機能として使用することで、LocalStack をより簡単かつ迅速に実行できるようになりました。

拡張機能は、実行中の LocalStack インスタンスを作成します。 これにより、開発、テスト、実験のためのローカルクラウドサンドボックスのニーズに合わせてLocalStackを簡単に構成できます。 現在、Docker Desktop の LocalStack 拡張機能では、次の機能がサポートされています。

  • ローカルスタックを制御します。 Docker Desktop から LocalStack を起動、停止、再起動します。 また、LocalStack インスタンスの現在のステータスを確認し、LocalStack ウェブアプリケーションに移動することもできます。
  • ローカルスタックインサイト: LocalStack インスタンスのログ情報と、使用可能なすべてのサービスとそのステータスは、サービスページで確認できます。
  • ローカルスタック構成: 設定を使用してプロファイルを管理および使用し、LocalStack インスタンスの新しい設定を作成できます。

LocalStack Docker 拡張機能の使用方法 

このセクションでは、Docker Desktop を介して LocalStack を実行して、いくつかの簡単な AWS コマンドをエミュレートします。 このチュートリアルでは、 Docker デスクトップ(v4.8+) と AWS CLI がインストールされている必要があります。

ステップ 1: Docker 拡張機能を有効にする

Docker デスクトップの [設定 ] タブで Docker 拡張機能を有効にする必要があります。

ドッカーデスクトップでドッカー拡張機能を有効にします。

ステップ 2: LocalStack 拡張機能をインストールする

LocalStack 拡張機能は、Docker Desktop の Extensions Marketplace および Docker Hub で入手できます。 開始するには、拡張機能マーケットプレースで LocalStack を検索し、 [ インストール] を選択します。

Dockerデスクトップで拡張機能マーケットプレイスでローカルスタックを検索します。

または、Docker Hub からパブリック Docker イメージをプルして、 Docker Desktop 用の LocalStack 拡張機能をインストールすることもできます。

docker extension install localstack/localstack-docker-desktop:0.3.1

ステップ 3: ローカルスタックを初期化する

拡張機能がインストールされると、LocalStack を使用する準備が整います。 拡張機能を初めて開くと、LocalStack をマウントする場所を選択するように求められます。 ドロップダウンを開き、ユーザー名を選択します。
この設定は、[ 構成] タブに移動してマウント ポイントを選択することでも変更できます。

ローカルスタックをマウントする場所を選択します。

[ スタート ] ボタンを使用して、ローカル スタックの使用を開始します。 LocalStack の Docker イメージが存在しない場合、拡張機能は自動的にそれをプルします (時間がかかる場合があります)。

ステップ4.基本的な AWS コマンドを実行する

LocalStack の機能を示すために、AWS CLI のラッパーである awslocal を使用して、ローカルインフラストラクチャに対してすべての AWS コマンドをモックしてみることができます。 を使用して pipインストールできます。

pip install awscli-local

インストール後、使用可能なすべてのサービスが起動時に LocalStack Docker イメージに表示されます。

ローカルスタックドッカー拡張機能で使用可能な AWS アクションのリスト。

これで、いくつかの基本的なAWSコマンドを実行して、拡張機能が正しく機能しているかどうかを確認できます。 次のコマンドを試して、ローカルで完全にエミュレートされたファイルを LocalStack の S3 に作成します hello-world

awslocal s3 mb s3://test 
echo "hello world" > /tmp/hello-world 
awslocal s3 cp /tmp/hello-world s3://test/hello-world 
awslocal s3 ls s3://test/

ローカルの S3 バケットにファイルが表示されます hello-world 。 これで、Docker デスクトップに移動して、S3 が実行されているのに、残りのサービスがまだ使用可能としてマークされていることを確認できます。

ローカルスタックドッカー拡張機能で実行されている Amazon s3。

ログに移動すると、200 個の状態コードで行われている API 要求が表示されます。 LocalStack を実行してローカル AWS インフラストラクチャをエミュレートしている場合は、ログをチェックして特定の API リクエストが間違っていないかどうかを確認し、ログを使用してさらにデバッグできます。

リソースは一時的なものであるため、いつでも LocalStack を停止して最初からやり直すことができます。 また、AWSでこれを行うのとは異なり、コストを推測するリソースの長引くことを心配することなく、必要なリソースをスピンアップまたはスピンダウンできます。

ローカルスタックドッカー拡張機能のログを表示します。

ステップ 5: 構成プロファイルを使用して、さまざまな環境をすばやく起動する

LocalStack の Docker 拡張機能を使用すると、事前に作成されたさまざまな構成プロファイル、特定の LocalStack 構成変数、または API キーを作成できます。 コンテナを起動する前に構成プロファイルを選択すると、これらの変数を実行中の LocalStack コンテナに直接渡します。

これにより、LocalStack の動作を簡単に変更できるため、ニーズに合わせてすでに構成されているローカル クラウド環境をすばやく起動できます。

LocalStack で何を構築しますか?

LocalStack Docker 拡張機能を使用すると、ユーザー インターフェイスを介して LocalStack コンテナーを簡単に制御できます。 Docker Desktop と直接統合することで、開発プロセスをより簡単かつ迅速にしたいと考えています。

そして、さらに多くのことが進行中です! 今後のイテレーションでは、 サポートされているAWS APILocalStack Web Applicationとの統合、および LocalStack の状態管理とチームコラボレーション機能である Cloud Pods などのツールを増やすために、拡張機能がさらに開発される予定です。

ご意見をお聞かせください! LocalStack は、オープンソースのコミュニティに焦点を当てたプロジェクトです。 貢献したい場合は、 貢献 ドキュメントに従ってローカルマシンにプロジェクトをセットアップし、開発者ツールを使用して新機能を開発したり、古いバグを修正したりできます。 また、LocalStack Docker Extension Issue Tracker を使用して、 LocalStack ディスカッションフォーラムを通じて新しい問題を作成したり、LocalStack に新しい機能を提案したりすることもできます。