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

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

AWSツールキットは、AWS 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 など) から生成されるイベントに応じてコードを実行する、フルマネージドコンピューティングサービスです。

AWSツールキットは、AWS Cloud9 の Lambda プラグインで提供される機能を置換します。Lambda プラグインを使用するには、AWS ツールキットを無効にする必要があります。詳細については、「AWS ツールキットの無効化」を参照してください。

重要

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

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

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

AWSツールキットは、AWS Cloud9 で Lambda プラグインで提供される機能を置換します。Lambda プラグインを使用するには、AWS ツールキットを無効にする必要があります。詳細については、「AWS ツールキットの無効化」を参照してください。

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

注記

AWS Management Consoleを使用するか、別の方法ですでに Lambda 関数を作成している場合は、ツールキットから呼び出すことができます。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ツールキットは Lambda プラグインを置換します。このプラグインは以前は、AWS Cloud9 IDE における Lambda 関数のインポートとアップロードのオプションを提供していました。Lambda プラグインを使用するには、AWS ツールキットを無効にする必要があります。詳細については、「AWS ツールキットの無効化」を参照してください。

Lambda 関数のダウンロード

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

Lambda 関数のダウンロード

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

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

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

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

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

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

ダウンロードした Lambda 関数をサーバーレスアプリケーションとして正常に実行およびデバッグするには、launch.json ファイルで起動設定を定義する必要があります。AWS Management Console または AWS Cloud9 の廃止された [AWS リソース] ウィンドウで作成された 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 関数をアップロードできます。

  1. AWSExplorerで、インポートしたい Lambda 関数の名前があるコンテキストメニューを開きます (右クリック) 。

  2. Lambda のアップロード...を選択

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

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

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

    2. AWS Cloud9ファイルシステムから ZIP ファイルを選択し、オープンを線多雨します。

    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. AWSExplorer で、削除したい Lambda 関数の名前を選択し、コンテキストメニューを開きます。

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

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

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