Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の例は、Amazon Lambda 用 Anypoint Connector (Amazon Lambda Connector) を使用して同期コールを呼び出して AWS Lambda から結果を取得する方法を示しています。
Amazon Lambda Connector が Anypoint Studio 内の Mule プロジェクトに追加されていることを確認します。追加されていない場合、「コネクタを Mule プロジェクトに追加する」の手順に従ってください。
次の例は、HTTP リスナーを使用して呼び出される簡単な AWS Lambda 関数コールを示しています。 http://localhost:8081/invoke URL がコールされると、Lambda の Invoke 操作が実行され、結果が直接返されます。
Studio で [Package Explorer] ビューに移動して、プロジェクトの /src/main/resources
フォルダーを右クリックします。
[New (新規)] > [File (ファイル)] を選択します。
ファイルに environment.properties
という名前を付けます。
ファイルを編集して、必要なプロパティおよび値を定義します。
設定済みのホスト (localhost
) およびポート (8081
) で要求を受信するたびに Amazon Lambda Connector の Invoke 操作フローを開始するように HTTP Listener ソースを設定します。
[Mule Palette (Mule パレット)] で、[HTTP] > [Listener] を選択します。
[Listener] を Studio キャンバスにドラッグします。
[Connector configuration (コネクタ設定)] の横にある + をクリックして、アプリケーション内の HTTP Listener ソースのすべてのインスタンスで使用できるグローバル要素を設定します。
[General (一般)] タブで、コネクタの接続情報を指定します。
[Test Connection (接続をテスト)] をクリックして、Mule が指定されたサーバーに接続できることを確認します。
[OK] をクリックします。
[Mule Palette (Mule パレット)] で、[Amazon Lambda Connector] > [Invoke (呼び出し)] を選択します。
[Invoke] を Studio キャンバスの [Listener] ソースの右にドラッグします。
Invoke 操作を設定します。
この例では、関数名は environment.properties
ファイルで $config.functionName
として提供されます。
HTTP リスナーからのペイロードは、REQUEST_RESPONSE
として指定されている Invoke 操作の本文に直接渡されます。これにより、この操作のログを保存する必要がないことが AWS Lambda に指示され、このコールが実質的に同期コールになります。つまり、AWS Lambda 関数の処理が終了するまで待ってから結果が返されます。
または、[Invocation Type (呼び出し種別)] を EVENT
に設定することもできます。これにより、このコールは非同期コールのように動作し、空の応答をすぐに返しますが、そのアクションは 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/invoke エンドポイントをコールします。
{
"first_name":"<first_name>",
"last_name":"<last_name>"
}
json
Mule フローはコード 200 のメッセージで応答します。
{ "message": "Hello <first_name> <last_name>!" }
この例のフローをすばやく 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