はじめに #
最近lambdaの開発体験を良くする開発が継続的に実施されているようですがその一環のようです。
例えば以下などの活動もあります。
AWS lambda開発のための機能の紹介です。
今回はAWS LambdaのコンソールからIDEに接続をしに行く流れの話です。
AWS LambdaのコンソールからIDEに接続しリモートデバッグする
まとめ #
今回は以下のようにいっぱい問題があり、かなり手こずりました。個人の環境のせいと思いますが、残念な結果となりました。
LocalStack Toolkit
のインストール動作が不安定LocalStack Toolkit
の動作が不安定AWS toolkit
が不安定。
記事の内容を整理していきます
サーバレスアプリケーションを開発するとき、開発者はテストとして3つのキーとなる流れに取り組むことが多いです。
- 単体テスト
- 統合テスト
- クラウドで動作させてのデバッグ
もちろん [AWS SAM CLI](https://aws.amazon.com/serverless/sam/)
はローカルで単体テストをするための素晴らしい機能を提供しています。
SQSやEventBridge、DynamoDB等と連携した包括的な単体テストを実行可能です。
LocalStackはAWSサービスのローカルなエミュレーションを提供しますが、事前に複雑な設定をして単独ツールとして動かせるようにしておく必要があります。 また、適切にツールを使うには頻繁にコンテキストスイッチが走り、それにより作業効率が下がってしまうこともあります。
VSCode 向けの AWS Toolkit を使った LocalStack統合 #
これらの問題に対処するためにLocalStack統合を紹介します。 これにより開発者はVSCodeのAWS ToolkitでLocalStackのエンドポイントに接続できます。
その結果、開発者はサーバレスアプリケーションのテストとデバッグを、複雑なLocalStackの設定やツールの切り替えなしに行うことができます。
今では、開発者はLambdaやSQS、EventBridgeを含むイベントドリブンな処理をローカルで最初から最後までエミュレートできます。
VSCode 向けの AWS ToolkitがLocalStackのようなカスタムエンドポイントに接続できる
ようになったことです。従来は開発者が明示的にコンテキストスイッチをする必要がありました。
VSCode で LocalStack を使うのはとても簡単です。開発者はFreeのバージョンでLocalStackを使うことができます。これにより開発初期においてAWSサービスをエミュレートした開発をすることができます。
やってみましょう #
インストール #
VSCodeを開き、AWS Toolkitをインストールします。 その後は [Application Builder] -> [Walkthrough of Application Builder] -> [Install LocalStack(optional)] を選択します。その後「LocalStackを信頼するか?」というダイアログが出るので信頼してインストールします。
ローカルスタックのセットアップが完了したら、VSCodeの status barでAWS Profileの中から LocalStack
を選択できるようになっています。
LocalStack Profileの設定 #
LocalStack: stopped
を選択すると以下の選択肢が出ます。
Run LocalStack Setup Wizard
を選択します。
ブラウザを開いて認証する必要があるというダイアログが出るので Continue
をクリックして続けます。
ブラウザを開いていいか聞かれるので OK
します。
Continue With Github
出続けました。
ブラウザで Visual Studio Code.app
を開いてよいかというダイアログが出るので開きます。
VSCodeで LocalStack Toolkit
開いてもいい?と聞かれるので開きます。
トークン取得でLocalStackをブラウザで開いてもいい?と聞かれるのでOKします。
VSCodeにライセンス設定を完了しろよ!と出るのでLocalStackのサイト上で設定をします。
私の環境だとここで、LocalStackを起動できない問題が起きました。
拡張機能の再インストールやVSCodeの再起動などを繰り返してなんとか起動できました。
しかし、起動できても Starting
が続く問題などが起きました。原因不明です。
2025/09/22 20:15追記
ローカルのDockerが古いだけでした!Docker version 28.4.0, build d8eb465
に更新したら無事動きました 👍
Infrastructure Composer(旧Application Composer)を使って適当なアプリを作ります。
-
適当な名前のymlファイルを作る(今回は
InfrastructureComposerSample.yml
) -
ファイルを右クリックして「Open With Infrastructure Composer」を選択する
-
LocalStack
アイコンをクリックしてdeployする(sam deploy -guided -profile localstack
でも可) -
CloudFormationを使わずにAPI Gateway、Lambda、StepFunctionを使ってコードをデプロイするので、ドリフトが起きるよ。という警告が出るのでOKする。
-
以下の設定がVSCode上に出るので設定します。
- 同期のためのパラメータを指定します [Specify required parameters and save as default] or [Specify required parameters] ここは一旦後者を選びました。
- リージョン選択
Tokyo
を選択しました - スタックの選択
今回生成なので
test
と入力し[Create a New Stack]を選択しました。 - デプロイアーティファクト保存のためのS3バケットの指定 既にあればS3バケットを指定できるようですが、[Create a SAM CLI managed S3 bucket]を選択しました。
- 同期のためのパラメータを選択する とりあえずデフォルトのまま([Watch, Save parameters]のみチェック)で進めました。
InfrastructureComposerSample.yml
に SAMのコードが、samconfig.toml
に先程の設定が保存されました。さらにAWS-toolkit
から以下のように作成したリソースが見られるようになりました!
所感 #
LocalStackをVSCode上のボタンから起動すると必ず localstack-pro
が起動してしまいます。環境変数 LOCALSTACK_AUTH_TOKEN
が何かしらの仕組みで保存されるようです。しかしその挙動が (私が試した時は) 不安定で、最初はTOKENが設定されずに詰まりました。何度か拡張機能のアンイストール & インストールを繰り返したり、VSCodeの再起動、MACの再起動、を繰り返していたらいつの間にか設定されていました。(自分で環境変数の設定はしていませんし、未だにどこで設定されているか謎です)。逆に自分で環境変数で設定しても効果がありませんでした。
他にも以下の問題がありました。
LocalStack toolkit
の問題:LocalStack
拡張がLocalStackの状態更新を検知できない。LocalStackが起動してもLocalStack: starting
のままになるし、LocalStackが停止してもLocalStack: stopping
のまま。AWS toolkit
の問題:dynamoDB
が作られたはずだが見えない。
おそらく設定がすんなり行った人にとってはすごく便利なんだろうと思いましたが、自分の開発者体験は最悪でした。開発が簡単になるかと思いきや、設定方法もよくわからないしで動作も不安定。まだまだこれからですかね。
課題が解決して簡単に使えるようになることを期待しています!
Reply by Email