Back End:
Ваша внутренняя лямбда должна дать внешнему лямбда-разрешению для ее вызова:
BackEndLambdaPermission:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName:
Fn::GetAtt:
- BackEndLambda
- Arn
Principal: <enter principal>
SourceArn: <front end lambda arn is optional but recommended>
Front End:
Внешний интерфейс, вам нужно дать разрешение на вызов другой функции (это происходит в разделе Политики либо Serverless :: Function, либо Iam :: Role, в зависимости от того, как настроена ваша лямбда):
- Effect: Allow
Action:
- 'lambda:InvokeFunction'
Resource: "arn:aws:lambda:us-east-1:123456789012:function:function-name"
Передайте функцию arn в ваш лямбда-интерфейс в свойстве Environment
:
Environment:
Variables:
BackEndFunctionArn:"arn:aws:lambda:us-east-1:123456789012:function:function-name"
Вызовите лямбду-конец из кода вашего лямбда-интерфейса (пример python):
def invoke_back_end(event):
event = {"data": "Hello back end"}
function_arn = os.environ.get("BackEndFunctionArn")
client = boto3.client('lambda')
# "RequestResponse" is a synchronous invocation. Use "Event" for async
response = client.invoke(FunctionName=function_arn, Payload=json.dumps(event), InvocationType='RequestResponse')
return response