AWSツールキットを使った AWS Lambda 関数の使用 - AWS Cloud9

AWSツールキットを使った AWS Lambda 関数の使用

AWSツールキットは、AWS Lambda 関数をサポートしています。AWS ツールキットは、AWS Cloud9 の Lambda プラグインで以前に提供されていた機能を置き換えます。AWSツールキットを使うと、サーバーレスアプリケーションのパートとなる Lambda 関数のコードを作成できます。さらに、Lambda 関数をローカルまたは AWS で呼び出すことができます。

Lambda は、カスタムコードによって生成されるイベント、またはさまざまな AWS サービス (Amazon Simple Storage Service (Amazon S3)、Amazon DynamoDB、Amazon Kinesis、Amazon Simple Notification Service (Amazon SNS)、Amazon Cognito など) から生成されるイベントに応じてコードを実行する、フルマネージドコンピューティングサービスです。

重要

サーバーレスアプリケーションモデル (SAM) が提供するリソースを使用する Lambda アプリケーションを構築する場合は、AWS ツールキットを使用した AWS サーバーレスアプリケーションの操作 を参照してください。

リモートのLambda 関数を呼び出す

このトピックで後述するように、AWS ツールキットを使用して AWS Lambda 関数をさまざまな方法で操作できます。

Lambda の詳細については、「AWS Lambda デベロッパーガイドhttps://docs.aws.amazon.com/lambda/latest/dg/」を参照してください。

注記

AWS Management Console を使用するか、別の方法で Lambda 関数を作成済みである場合は、AWS ツールキットから関数を呼び出すことができます。AWS Lambda にデプロイできる AWS ツールキットを使って新しい関数を作成するには、まず、サーバーレスアプリケーションを作成する必要があります。

前提条件

  • 設定した認証情報には、AWS Lambda サービスに対する適切な読み取り/書き込みアクセスが含まれていることを確認します。AWS Explorer[Lambda] の下に「Lambda リソースのロードエラー」のようなメッセージが表示される場合は、こういった認証情報にアタッチされている許可をチェックしてください。許可に加えた変更により、AWS ツールキット内の AWS Explorer に影響するまでに数分かかります。

Lambda 関数の呼び出し

重要

AWSツールキットを使ってAPI メソッドを呼び出すと、リソースが変更され、取り消せなくなる可能性があります。たとえば、POST メソッドを呼び出すと、呼び出しが成功すれば API のリソースが更新されます。

AWSで AWS ツールキットを使って Lambda 関数を呼び出すことができます。

  1. AWS Explorer で、呼び出したい Lambda 関数の名前を選択し、コンテキストメニューを開きます。

  2. AWS での呼び出し]を選択します。

  3. 開いている[呼び出し関数 ]ウィンドウで、Lambda 関数が必要とするペイロードのオプションを選択します。(ペイロードは、入力として Lambda 関数に提供したい JSON です)。参照を選んでペイロードとして使用するファイルを選択するか、ドロップダウンフィールドを使用してペイロードのテンプレートを選択します。この場合、テキストボックスに示されているように、Lambda 関数は、入力としての文字列である可能性があります。

呼び出しを選択してLambda を呼び出し、ペイロードを渡します。

AWS Lambdaタブで Lambda 関数の出力が表示されます。

Lambda 関数のダウンロード、アップロード、削除

AWS ツールキットには、AWS Cloud9 IDE で Lambda 関数をインポートおよびアップロードするためのオプションが用意されています。

Lambda 関数のダウンロード

Lambda 関数をダウンロードすると、AWS クラウドから関数を記述するプロジェクトファイルのダウンロードと AWS Cloud9 IDE における操作の許可がでます。

Lambda 関数のダウンロード

  1. AWSExplorer では、Lambda ノードの下で、関数を右クリックしてダウンロードを選択します。

  2. 新しいプロジェクトの WorkSpace フォルダの選択を求められた時には、次のいずれかを試すことができます。

    • Lambda プロジェクトと同じ名前がついたサブフォルダ作成を提案するフォルダを選択します

    • 別のフォルダを選択を選択して、参照するダイアログボックスを開き、プロジェクトサブフォルダに別の親フォルダを選択します。

    IDE が新しいエディタウィンドウを開きます。

ダウンロードされた Lambda 関数の実行とデバッグの設定

ダウンロードした Lambda 関数をサーバーレスアプリケーションとして正常に実行およびデバッグするには、launch.json ファイルで起動設定を定義する必要があります。AWS Management Console で作成した Lambda 関数が起動設定に含まれていない場合は、手動で追加する必要があります。

起動設定に Lambda 関数を追加するには

  1. Lambda 関数をダウンロードしたら、[環境] ウィンドウを開いてフォルダとファイルを表示します。

  2. 次に、Lambda 関数が /home/ec2-user/.c9/launch.json ファイルに含まれていることを確認します。存在しない場合は、次の操作を実行して、関数のコードに CodeLens リンクを追加します。

    1. Lambda 関数を定義するソースコードファイル (.js または .py ファイルなど) を開き、Lambda 関数が launch.json に追加できる CodeLens リンクがあるかどうかを確認します (CodeLens は関数の上に表示され、Add Debug Config リンクを含みます)。

    2. IDE の左側にある [Go] (移動) (虫眼鏡アイコン) を選択し、「sam hint」と入力して AWS: Toggle SAM hints in source files コマンドを表示します。コマンドを選択して実行します。

    3. Lambda ソースコードファイルを閉じて、再度開きます。

    4. ファイルを再度開いた後で CodeLens がソースコードで使用可能である場合は、Add Debug Config を選択して起動設定を追加します。

  3. SAM ヒントオプションを切り替えた後でも CodeLens を追加できない場合は、次の手順を実行して起動設定を追加します。

    1. IDE の左側にある [Go] (移動) (虫眼鏡アイコン) を選択し、「config」と入力して AWS: SAM Debug Configuration Editor コマンドを表示します。コマンドを選択して実行します。

    2. [SAM Debug Configuration Editor] (SAM デバッグ設定エディタ) が表示され、起動設定のプロパティを定義できます。詳細については、「サーバーレスアプリケーションの実行とデバッグのため、SAM テンプレートを使用」で「configuring launch properties」のステップを参照してください。

      注記

      Lambda 関数に、SAM アプリケーションに必要な template.yaml がない場合は、追加する必要があります。詳細については、「AWS SAM テンプレートの作成」を参照してください。

    3. エディタで必要な設定情報の入力を完了したら、起動設定を launch.json ファイルに追加します。

Lambda 関数の起動設定を定義したら、次の手順を実行して実行できます。

  1. IDE の上部で、[Auto] (自動) の横にある矢印を選択し、該当する起動設定を選択します。

  2. 続いて、[Run] (実行) を選択します。

Lambda 関数のアップロード

既存の Lambda 関数をローカルコードで更新できます。この方法でコードを更新すると、デプロイに AWS Serverless Application Model CLI は使用されず、AWS CloudFormation スタックは作成されません。この機能により、Lambda でサポートされている任意のランタイムを使用して Lambda 関数をアップロードできます。

AWS Toolkit を使用して Lambda 関数をアップロードするには、いくつかのインターフェイスオプションがあります。

  1. プロジェクトファイルの [環境] ウィンドウで、アップロードする Lambda アプリケーションの template.yaml を右クリックし、[Lambda のアップロード] を選択します。

    または、Ctrl+P を押して、[Go to Anything] (どこにでも移動) ペインを開き、「lambda」と入力して AWS Upload Lambda (Lambda のアップロード) コマンドにアクセスします。続いて、このコマンドを選択してアップロードプロセスを開始します。

  2. 次に、アップロード先の AWS リージョンを選択します。

  3. ここで、Lambda 関数をアップロードするためのオプションを選択します。

    .zip アーカイブをアップロード

    1. メニューから[ZIP アーカイブ]を選択します。

    2. AWS Cloud9 ファイルシステムから .zip ファイルを選択し、[Open (開く)] を選択します。

    ディレクトリをそのままアップロード

    1. メニューから[ディレクトリ]を選択します。

    2. 自分の AWS Cloud9 ファイルシステムからディレクトリを選択し、[Open (開く)]を選択します 。

  4. イベントを処理する Lambda 関数ハンドラーを指定します。関数が呼び出されると、Lambda はこのハンドラーメソッドを実行します。

    注記

    Lambda 関数を選択するときは、表示されるリストから選択できます。選択する関数がわからない場合は、Toolkit で利用可能な Lambda 関数の ARN (Amazon リソース番号) を入力できます。

    このコードを Lambda 関数の最新バージョンとして公開するかどうかを尋ねるダイアログが表示されます。[はい] を選択して、公開を確認します。

    注記

    親フォルダを右クリックして [Upload Lambda] (Lambda のアップロード) を選択し、親フォルダのコンテキストメニューから Lambda アプリケーションをアップロードすることもできます。親フォルダがアップロードのために自動的に選択されます。

  1. AWS Explorer で、インポートする Lambda 関数の名前を右クリックし、コンテキストメニューを開きます。

  2. [Lambda のアップロード] を選択します。

  3. Lambda 関数をアップロードするための 3 つのオプションから選択します。

    事前に作成された .zip アーカイブをアップロード

    1. メニューから[ZIP アーカイブ]を選択します。

    2. AWS Cloud9 ファイルシステムから .zip ファイルを選択し、[Open (開く)] を選択します。

    3. モーダルダイアログでアップロードを確認します。こうして、.zip ファイルがアップロードされ、デプロイ後にすぐに Lambda が更新されます。

    ディレクトリをそのままアップロード

    1. メニューから[ディレクトリ]を選択します。

    2. 自分の AWS Cloud9 ファイルシステムからディレクトリを選択し、[Open (開く)]を選択します 。

    3. ディレクトリの構築を求められたら、[いいえ]を選択します。

    4. モーダルダイアログでアップロードを確認します。これにより、ディレクトリがそのままアップロードされ、デプロイ後にすぐに Lambda が更新されます。

    ディレクトリの構築とアップロード

    1. メニューから[ディレクトリ]を選択します。

    2. 自分のAWS Cloud9 ファイルシステムからディレクトリを選択し、[Open (開く)]を選択します。

    3. ディレクトリの構築を求められたら、[はい]を選択します。

    4. モーダルダイアログでアップロードを確認します。これにより、AWS SAM CLI sam build コマンドを使用してディレクトリにコードを構築し、デプロイ後に、すぐに Lambda を更新します。

リモートアクセス用の Lambda 関数のデプロイ

ローカル関数をサーバーレス SAM アプリケーションとしてデプロイすることで、リモートで使用可能にすることができます。

Lambda 関数を SAM アプリケーションとしてデプロイするには

  1. AWS Explorer]で Lambda ノードを右クリックし、[Deploy SAM Application] (SAM アプリケーションのデプロイ) を選択します。

  2. コマンドペインで、関数をサーバーレスアプリケーションとして定義する [YAML テンプレート] を選択します。

  3. 次に、Lambda デプロイ用の Amazon S3 バケットを選択します。デプロイ用のバケットを作成することもできます。

  4. 次に、デプロイ先の AWS CloudFormation スタックの名前を入力します。既存のスタックを指定すると、コマンドはスタックを更新します。新しいスタックを指定すると、コマンドはスタックを作成します。

    スタックの名前を入力すると、Lambda 関数が SAM アプリケーションとしてデプロイを開始します。デプロイが成功したら、SAM Lambda アプリケーションをリモートで使用可能にして、他の AWS Cloud9 開発環境で作業を行うデベロッパーがこのアプリケーションをダウンロードまたは呼び出せるようにします。

Lambda 関数をゼロから作成する場合は、「AWS ツールキットでサーバーレスアプリケーションを作成」のステップに従うことをお勧めします。

Lambda 関数の削除

同じコンテキストメニューを使用して Lambda 関数を削除することもできます。

警告

AWS CloudFormation と関連づけられている Lambda 関数 (このガイドで前述したサーバーレスアプリケーションの作成時に作成した Lambda 関数など) は、この手順を使用して削除しないでください。これらの関数は、AWS CloudFormation スタックを通じて削除する必要があります。

  1. AWS Explorer で、削除したい Lambda 関数の名前を選択し、コンテキストメニューを開きます。

  2. [削除] を選択します。

  3. 表示されるメッセージで、[はい] を選択して削除を確認します。

関数が削除されると、AWS Explorer に表示されなくなります。