メニュー
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 は次のようになります。

{ "statusCode": 200|..., "body": { "result": "'success' or 'failure'", "error": "Error message if 'failure', '' otherwise" "data": [{"item1"}, ..., {"itemN"}] } }

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

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

  • body は返される JSON の本文です。

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

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

  • data は、resultsuccess の場合に返されます。それ以外の場合は、nil が返されます。

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

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

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

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

require 'aws-sdk' require 'json' # To run on Windows: require 'os' if OS.windows? Aws.use_bundled_cert! end

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

client = Aws::Lambda::Client.new(region: 'us-west-2')

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

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 で完全な例をご覧ください。