前提・実現したいこと
AWS EC2インスタンスからLambdaを呼び出したいのですがうまくいきません.
以下のPHPファイルをEC2上のApacheのドキュメントルートに置き,ブラウザから「EC2のIP/Test.php」でアクセスした結果,以下の表示が返ってきます.
おこなった設定
- Apache EC2に Composer を介して AWS SDK for PHP をインストール
- Apache EC2の Role にポリシー AWSLambdaFullAccess をアタッチ
参考にさせて頂いたサイト https://qiita.com/itoa06/items/614fc3322f83512cab3b
https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/getting-started_installation.html
ブラウザの表示
Model Data ---------- Data can be retrieved from the model object using the get() method of the model (e.g., `$result->get($key)`) or "accessing the result like an associative array (e.g. `$result['key']`). You can also execute JMESPath expressions on the result data using the search() method. { "Payload": {}, "StatusCode": 200, "FunctionError": "", "LogResult":
PHP
1//Test.php 2 3<?php 4 5require_once '/home/ec2user/vendor/autoload.php'; 6 7use Aws\Lambda\LambdaClient; 8use Aws\Lambda\Exception\LambdaException; 9 10 11 function call_lambda ($str) { 12 13 $arr=['data' => $str]; 14 $Json=json_encode($arr); 15 16 try { 17 //関数のAmazonリソースネーム(ARN)を指定 18 $function_name = "arn:aws:lambda:-略-:function:MyTestFunction"; 19 20 $client = LambdaClient::factory(array( 21 "region" => "ap-northeast-1", //Apache ec2のアベイラビリティゾーン 22 "version" => "2015-03-31", 23 )); 24 $result = $client->invoke(array( 25 'FunctionName' => $function_name, 26 'InvocationType' => 'RequestResponse ', 27 'Payload'=>$Json, //入力としてLambda関数に提供したいJSON 28 'LogType' => 'Tail', 29 )); 30 echo $result; 31 32 } catch (LambdaException $e) { 33 echo $e; 34 } catch (Exception $e) { 35 echo $e; 36 } 37 exit; 38} 39 40 41 42call_lambda('hogehoge');
python
1//Lambda MyTestFunction 2 3import json 4 5def lambda_handler(event, context): 6 7 try: 8 myData=event["data"] 9 print(myData) 10 except: 11 return { 12 'statusCode': 500 13 } 14 15 return "HOGE" 16
試したこと
ブラウザに表示された文字について調べると,[GitHub]にあるようにResult.phpの__toString()が呼ばれたのだと思いますが,ResultInterfaceがどこから呼ばれたのかがわかりません.
CloudWatchでは以下のように表示されるのでLambdaは呼ばれていると思いますが,Lambdaからの戻り値が受け取れていない?っぽいです
補足情報(FW/ツールのバージョンなど)
AWS SDK for PHP バージョン 3
Amazon Linux AMI 2018.03.0.20180811 x86_64
Server version: Apache/2.4.34 (Amazon)
PHP 7.2.11
Python 3.7
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/16 06:41