メインコンテンツへスキップ

AWS LambdaのコンソールからIDEに接続しリモートデバッグする

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

はじめに
#

AWS lambda開発のための機能の紹介です。 今回はAWS LambdaのコンソールからIDEに接続をしに行く流れの話です。

大体が IaC で開発が進むでしょうから、IDE環境より先にAWS Lambdaコンソールに実装があることは今の時代は稀でしょうか。 Lambda の IAMの動作確認をしたい場合等があるかもしれません。

以下の記事に従って試してみたいと思います。

IDEからAWS lambdaに接続してデバッグする部分の流れは以下の記事が詳しいです。

環境
#

本記事の動作確認は以下の環境で行いました。

  • MacBook Pro
  • 14 インチ 2021
  • チップ:Apple M1 Pro
  • メモリ:32GB
  • macOS:15.5(24F74)

AWS Lambda のコンソールから IDE への接続とリモートデバッグにより、サーバーレス開発を簡素化する
#

本記事で紹介するのはAWS Lambdaコンソールと IDE の統合とリモートデバッグです。これらの新機能は、2024年後半にリリースされたコンソール内編集エクスペリエンスの強化や、ローカル統合開発環境 (IDE) エクスペリエンスの改善など、Lambda 開発エクスペリエンスに対する最近の改善を基盤としています。

開発者は通常、ワークフローを効率化するために

  • ローカル開発環境のセットアップ
  • クラウドデバッグ機能

という2つの領域に重点を置きます.

さらに、関数はクラウド内の様々なAWSサービスと連携するため、開発者は開発サイクルの早い段階で問題を特定・解決するための強化されたデバッグ機能を求めています。これにより、ローカルエミュレーションへの依存を減らし、開発ワークフローを最適化できます。

:::message 私はローカルである程度クラウドと同じような動作を確認できるように localstack でlambdaを実装して使っていました。効率化の前者ですね。しかしココでも記載があるように localstack はIAMのエミュレーションが弱かったり、無料だと全機能使えない問題があります。 :::

コンソールとIDEの統合
#

ローカル開発環境のセットアップのために、Lambdaコンソールに「Visual Studio Codeで開く」ボタンが追加され、開発者はブラウザで関数を表示してからIDEで編集する作業に素早く移行できるため、ローカル開発環境のセットアップに時間を要する手間が省けます。

コンソールとIDEの統合により、セットアッププロセスが自動的に処理され、VS CodeのインストールとAWS Toolkit for VS Codeの確認が行われます。

すでに全ての設定が完了している開発者は、ボタンをクリックするとすぐにVS Codeで関数コードが開き、編集を続行して数秒でLambdaにデプロイできます。VS Codeがインストールされていない場合はダウンロードページに誘導され、AWS Toolkitがインストールされていない場合はインストールを促すメッセージが表示されます。

IDEからコードの編集、新しいファイル/フォルダの追加が可能で、変更を加えると自動デプロイプロンプトがトリガーされます。デプロイを選択すると、AWS Toolkit によって関数が AWS アカウントに自動的にデプロイされます。

リモートデバッグ
#

開発者はIDEに関数を組み込んだ後、VS Codeから直接AWSアカウントにデプロイされたLambda関数をリモートデバッグでデバッグできます。リモートデバッグの主なメリットは、他のAWSサービスと統合された状態でクラウド上で実行される関数をデバッグできるため、より迅速かつ信頼性の高い開発が可能になることです。

リモートデバッグにより、開発者はAmazon Virtual Private Cloud (VPC)リソースとAWS Identity and Access Management (AWS IAM)ロールへの完全なアクセスを使用して関数をデバッグできるため、ローカル開発とクラウド実行の間のギャップが解消されます。例えば、VPC内のAmazon Relational Database Service (Amazon RDS)データベースとやり取りするLambda関数をデバッグする場合、開発者は本番環境と異なる可能性のあるローカル環境の設定に時間を費やすことなく、クラウドで実行されている関数の実行環境を数秒以内にデバッグできます。

:::message これは助かりますね!前述しましたがローカルの実装をクラウドに初めて持っていった時に困るのは権限周りですよね。 :::

試してみる
#

では試してみます。AWSコンソールから作成します。適当に名前をつけ、Python3.13を指定しました。

始めてみた画面出てきました!今こんなんなってるんですね。Open in Visual Studio Code を実行してみます。

以下のダイアログがブラウザに表示されました。 Visual Studio Code.appを開く を実行します。

AWS Toolkit Extension が入っていなかったのでインストール要求が出ました。「Install Extension and Open URI」を実行します。

Amazon Web Service を信頼しインストールします。

認証情報が必要になります。 Select Connection を実行します。

登録されている認証情報を選択します。

VSCodeにLambdaのコードを信頼するように設定する。「Yes, I trust the authors」 を実行する。

コードと右側には README.md が表示されました!

:::message READMEの内容

Lambda ローカル開発へようこそ
#

Lambda 関数をローカルで表示し、反復し、変更を AWS クラウドにデプロイする方法を学びます。

Lambda 関数の編集
#

  • 関数コードを変更して保存します。編集が完了すると、デプロイするかどうか確認されます。さらに変更がある場合は、後で再度戻って編集できます。
  • ターミナルとお好みのパッケージマネージャーを使って、プロジェクトに依存関係を追加します。

Lambda 関数の管理
#

  • 左サイドバーの AWS Toolkit アイコンを選択し、EXPLORER を選択します。
  • 目的のリージョンで、Lambda のドロップダウンメニューを選択します:
    • 以前編集した Lambda 関数を保存してデプロイするには、対象の Lambda 関数の横にあるアイコンを選択します。
    • 関数をリモートで呼び出すには、対象の Lambda 関数の横にあるアイコンを選択します。

高度な機能

Lambda 関数を AWS SAM アプリケーションに変換するには、対象の Lambda 関数の横にあるアイコンを選択します。AWS SAM が何で、どのように役立つかについての詳細は、AWS Serverless Application Model 開発者ガイドを参照してください。 :::

EXPLORER を押すとMFAコードが求められたので入力します。

クラウド上の lambdaDebug を見ることができました!

lambdaDebug の横の を押すと右の Remote invoke configuration が開きました。 「Remove Invoke」してみます。動作したようです!VSCode側とAWS Consoleの両方に同じログが出ています。(上がブラウザ上のAWSコンソール、下がVSCodeです)。また、TERMINAL に表示されているパスが /tmp/... となっていて一時的な環境で実行していることがわかります。

ついでにデバッグも確認してみます。その前に設定が必要になります。設定をしていないと以下のようなメッセージが表示されブレークポイントは設定できません。

:::message デバッグセッションを設定する

  1. lambdaDebug の横の を押し Remote invoke configuration を開きます。

  2. リモート呼び出し設定メニューで、Remote Debugging チェックボックスを選択し、リモートデバッグのプロパティを表示します。

  3. ローカルのハンドラーファイルへの Local Root Path を指定します。今回は Download remove code を実行してダウンロードします。

lambdaDebug を選択します。

:::

ファイルをダウンロードすると、lambda_function.py という同名のタブが増えました。 設定後改めて Remote Invoke してみました。 無事ブレークポイントで停止していることが確認できました!

ちなみにブレークしてもlambdaがタイムアウトしないのは、冒頭のリンク先で紹介されているように タイムアウトも最大まで伸ばすという変更 が入るそうです。なので15分経てばタイムアウトで終了するはずですね。

権限の変更をしてみる
#

ここまでで一応デバッグはできたので権限を追加するテストをしてみたいと思います。 lambdaのデフォルトの権限では付与されていないs3のバケットの情報を取る処理をしてみます。 コードを変更し、「デプロイしますか?」という問い掛けに「Yes」と回答する。

クラウド上のコードも変更されました。

「Remote Invoke」してみると権限エラーになりました。

AWSコンソールからS3の権限を追加します。

権限エラーはなくなりましたが、別のエラーになりました 💦 datetime型が含まれていて、JSON Serializeできなくてエラーになったようです。

コードを修正したら実行できました!

さいごに
#

AWS Lambda コンソールから localのVSCodeにコードを移行し、localのIDEから実行、デバッグできることが確認できました! 簡単にdeploy環境でlambdaが実行できるので、デバッグがはかどりますね!

参考書籍
![](https://m.media-amazon.com/images/I/715s7Vc8-jL.SY522.jpg =200x)
Reply by Email

関連記事

localstack×terraformでlayer付きlambdaをローカルデプロイ
· loading · loading
S3で静的サイトを公開するときのアクセス制御について。referer制限
· loading · loading
VSCode拡張開発でモジュールロードエラーを解決する
· loading · loading