Python3.6でやります。
呼ばれるLambda
まずは呼ばれるLambdaの関数。yobareru関数にしました。
import json
def lambda_handler(event, context):
    print("呼ばれています")
    return event
非常にシンプルな形です。
これが呼び出される時にeventにはjsonの形で入れますが、そのeventをそのままreturnしています。
呼ぶLambda
関数をテキトーに作っていただき、まずはロールの設定から。
- ロールの設定
画面下部、実行ロールに割り当てられているロールがあると思いますが
それのポリシーのアクセス権限を編集します。
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "*"
        }
これが入っていないので、いれてください。
- 関数の編集
では関数を編集しましょう。
呼び出すにはinvokeというのを使います。
response = boto3.client('lambda').invoke(
    FunctionName='yobareru',
    InvocationType='RequestResponse', # Event or RequestResponse
    Payload=Payload
)
これをかきます。
client('lambda')は変更しないでください。
変更するところは、FunctionNameです。作った関数名を入れてください。
InvocationTypeは
Event なら非同期
RequestResponse なら同期です。
色々なページでyobareruのデータをダンプするような記述がありますが、yobareruで指定したものをyobuのコンソールでみたい時は、RequestResponseの同期処理にしなければなりません。
Payloadはyobareruに渡すものです。yobareruのeventに入ります。
試しに同期処理のコードを書いてみましょう。
- 同期処理 RequestResponse
import boto3
import json
 
def lambda_handler(event, context):
     
    # 引数
    input_event = {
        "param1": 1,
        "param2": 2,
        "param3": 3
    }
    
    Payload = json.dumps(input_event) # jsonシリアライズ
    print("---01: Payload:", Payload)
    
     
    # 呼び出し
    response = boto3.client('lambda').invoke(
        FunctionName='test0820',
        InvocationType='RequestResponse',
        Payload=Payload
    )
    print("---02: response:", response)
    
     
    # レスポンス読出し
    body = json.loads(response['Payload'].read()) #どうやらHTTPヘッダーは特殊な形をしているようで、普通にjson.
    print("---03: body:", body)
    return body
これでyobuの実行をすると、コンソールには
Response:
{
  "param1": 1,
  "param2": 2,
  "param3": 3
}
とでるのでいい感じです。
では非同期処理をしましょう。
- 非同期処理 Event
InvocationTypeをEventにして、レスポンス読出しをコメントアウトします。
import boto3
import json
def lambda_handler(event, context):
     
    # 引数
    input_event = {
        "param1": 1,
        "param2": 2,
        "param3": 3
    }
    
    Payload = json.dumps(input_event) # jsonシリアライズ
    print("---01: Payload:", Payload)
    
     
    # 呼び出し
    response = boto3.client('lambda').invoke(
        FunctionName='test0820',
        InvocationType='Event',
        Payload=Payload
    )
    print("---02: response:", response)
    
     
    # レスポンス読出し
    # body = json.loads(response['Payload'].read())
    # print("---03: body:", body)
    # return body
これで実行すると、Responseはnullになりますが、
yobareru側のCloudWatchをみてみましょう。

yobareru関数のprint文がでています!すごい~
非同期処理も完了です。
覚書注意点
- HTTP ヘッダーは 特殊な形のjson
- 同期処理にしないとreturnは帰ってこない
- 202の文字を見たら、それは成功している証拠。 ステータスコード