Lambda 関数を実行する - AWS SDK for Ruby

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数を実行する

以下の例では、us-west-2 リージョンで Lambda 関数 MyGetitemsFunction を実行します。この関数は、データベースからの項目のリストを返します。入力 JSON は以下のようになります。

{ "SortBy": "name|time", "SortOrder": "ascending|descending", "Number": 50 }

各パラメータの意味は次のとおりです。

  • SortBy は、結果のソート基準です。この例では time を使用します。この場合、返される項目はデータベースに追加された順にソートされます。

  • SortOrder はソート順位です。この例では descending を使用します。この場合、最新の項目がリストの最後に表示されます。

  • Number は、取得する項目の最大数です (デフォルトは 50)。この例では 10 を使用します。この場合、最新の 10 個の項目を取得します。

出力 JSON は以下のようになります。

  • STATUS-CODE は HTTP ステータスコードで、200 は呼び出しが成功したことを意味します。

  • RESULT は呼び出しの結果 (success または failure) です。

  • ERROR は、resultfailure の場合のエラーメッセージです。それ以外の場合は、空の文字列が返されます。

  • DATA は、resultsuccess の場合、返される結果の配列です。それ以外の場合、nil です。

{ "statusCode": "STATUS-CODE", "body": { "result": "RESULT", "error": "ERROR", "data": "DATA" } }

最初のステップでは、使用するモジュールをロードします。

  • aws-sdk は、Lambda 関数を呼び出すために使用する AWS SDK for Ruby モジュールをロードします。

  • json は、リクエストとレスポンスのペイロードをマーシャリングおよびアンマーシャリングするために使用する JSON モジュールをロードします。

  • os は、Microsoft Windows で Ruby アプリケーションを実行するために使用する OS モジュールをロードします。別のオペレーティングシステムを使用中の場合は、これらの行を削除できます。

  • 次に、Lambda 関数を呼び出すために使用する Lambda クライアントを作成します。

  • 次に、リクエスト引数のハッシュを作成し、MyGetItemsFunction を呼び出します。

  • 最後に、応答を解析し、成功した場合は項目を出力します。

# Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # This file is licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. A copy of the # License is located at # # http://aws.amazon.com/apache2.0/ # # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS # OF ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. require 'aws-sdk-lambda' # v2: require 'aws-sdk' require 'json' # To run on Windows: require 'os' if OS.windows? Aws.use_bundled_cert! end client = Aws::Lambda::Client.new(region: 'us-west-2') # Get the 10 most recent items req_payload = {:SortBy => 'time', :SortOrder => 'descending', :NumberToGet => 10} payload = JSON.generate(req_payload) resp = client.invoke({ function_name: 'MyGetItemsFunction', invocation_type: 'RequestResponse', log_type: 'None', payload: payload }) resp_payload = JSON.parse(resp.payload.string) # , symbolize_names: true) # If the status code is 200, the call succeeded if resp_payload["statusCode"] == 200 # If the result is success, we got our items if resp_payload["body"]["result"] == "success" # Print out items resp_payload["body"]["data"].each do |item| puts item end end end

GitHub で完全な例をご覧ください。