Amazon Lambda Connector 1.1 の例 - Mule 4

次の例は、Amazon Lambda 用 Anypoint Connector (Amazon Lambda Connector) を使用して同期コールを呼び出して AWS Lambda から結果を取得する方法を示しています。

始める前に

Amazon Lambda Connector が Anypoint Studio 内の Mule プロジェクトに追加されていることを確認します。追加されていない場合、​「コネクタを Mule プロジェクトに追加する」​の手順に従ってください。

同期呼び出しフロー

次の例は、HTTP リスナーを使用して呼び出される簡単な AWS Lambda 関数コールを示しています。 http://localhost:8081/invokeLeaving the Site URL がコールされると、Lambda の ​Invoke​ 操作が実行され、結果が直接返されます。

設定ファイルを作成する

  1. Studio で ​[Package Explorer]​ ビューに移動して、プロジェクトの ​/src/main/resources​ フォルダーを右クリックします。

  2. [New (新規)] > [File (ファイル)]​ を選択します。

  3. ファイルに ​environment.properties​ という名前を付けます。

  4. ファイルを編集して、必要なプロパティおよび値を定義します。

HTTP リスナーを設定する

設定済みのホスト (​localhost​) およびポート (​8081​) で要求を受信するたびに Amazon Lambda Connector の ​Invoke​ 操作フローを開始するように HTTP Listener ソースを設定します。

  1. [Mule Palette (Mule パレット)]​ で、​[HTTP] > [Listener]​ を選択します。

  2. [Listener]​ を Studio キャンバスにドラッグします。

  3. [Connector configuration (コネクタ設定)]​ の横にある ​+​ をクリックして、アプリケーション内の HTTP Listener ソースのすべてのインスタンスで使用できるグローバル要素を設定します。

  4. [General (一般)]​ タブで、コネクタの接続情報を指定します。

  5. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  6. [OK]​ をクリックします。

Invoke 操作を設定する

  1. [Mule Palette (Mule パレット)]​ で、​[Amazon Lambda Connector] > [Invoke (呼び出し)]​ を選択します。

  2. [Invoke]​ を Studio キャンバスの ​[Listener]​ ソースの右にドラッグします。

    Studio での簡単な呼び出しフローの例
  3. Invoke​ 操作を設定します。

    簡単な Invoke 操作の [General (一般)] プロパティ設定

    この例では、関数名は ​environment.properties​ ファイルで ​$config.functionName​ として提供されます。

    HTTP リスナーからのペイロードは、​REQUEST_RESPONSE​ として指定されている ​Invoke​ 操作の本文に直接渡されます。これにより、この操作のログを保存する必要がないことが AWS Lambda に指示され、このコールが実質的に同期コールになります。つまり、AWS Lambda 関数の処理が終了するまで待ってから結果が返されます。

    または、​[Invocation Type (呼び出し種別)]​ を ​EVENT​ に設定することもできます。これにより、このコールは非同期コールのように動作し、空の応答をすぐに返しますが、そのアクションは AWS Lambda によりバックグラウンドで実行されています。

AWS Lambda 関数を作成する

Lambda 関数によっては、このフローを実行するときに、リクエストボディで送信することが必要になる場合があります。たとえば、次のような Python 3.8 Lambda 関数を作成できます。

def lambda_handler(event, context):
    message = 'Hello {} {}!'.format(event['first_name'], event['last_name'])

	return {'message' : message}
python

新しい AWS Lambda 関数を作成する方法は、公式 AWS ドキュメントを参照してください。

この関数は、入力から項目 ​first_name​ と ​last_name​ を JSON 形式で取得し、指定された氏名を使用して挨拶文を送信します。

次のような JSON 本文を使用して http://localhost:8081/invokeLeaving the Site エンドポイントをコールします。

{
    "first_name":"<first_name>",
    "last_name":"<last_name>"
}
json

Mule フローはコード 200 のメッセージで応答します。

{
    "message": "Hello <first_name> <last_name>!"
}

Invoke の例の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:amazon-lambda="http://www.mulesoft.org/schema/mule/amazon-lambda" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/amazon-lambda http://www.mulesoft.org/schema/mule/amazon-lambda/current/mule-amazon-lambda.xsd">
	<flow name="amazon-lambda-invoke-example">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/invoke"/>
		<amazon-lambda:create20150331-functions-invocations-by-function-name doc:name="Invoke" config-ref="Test_Aws_Config" functionName="${config.functionName}" xAmzInvocationType="REQUEST_RESPONSE">
		</amazon-lambda:create20150331-functions-invocations-by-function-name>
	</flow>
</mule>
xml