Как разрешить лямбда-функции вызывать себя рекурсивно

У меня есть приложение, которое работает на Lambda и доступно через APIGateway.

В моем шаблоне SAM я настроил его так, чтобы APIGateway мог вызывать мою функцию.

  ConfigLambdaPermission:
    Type: "AWS::Lambda::Permission"
    DependsOn:
    - MyFunction
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !Ref MyFunction
      Principal: apigateway.amazonaws.com

Но теперь мне нужно, чтобы приложение вызывало свою функцию рекурсивно. Я думал, что я мог бы просто добавить новую ConfigLambdaPermission к моей существующей, как это.

  ConfigLambdaPermission:
    Type: "AWS::Lambda::Permission"
    DependsOn:
    - MyFunction
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !Ref MyFunction
      Principal: apigateway.amazonaws.com
  ConfigLambdaPermission:
    Type: "AWS::Lambda::Permission"
    DependsOn:
    - MyFunction
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !Ref MyFunction
      Principal: lambda.amazonaws.com

Однако, когда функция пытается вызвать себя, она выдает следующую ошибку:

2019-01-27 14:27:56 - Aws::Lambda::Errors::AccessDeniedException -
User: arn:aws:sts::666666666666:assumed-role/my-app-MyFunction-166U166U166U1/my-app-MyFunction-1DJIJCDO1DJIJ 
is not authorized to perform: lambda:InvokeFunction on resource:
arn:aws:lambda:us-west-2:666666666666:function:my-app-MyFunction-1DJIJCDO1DJIJ:

Я не уверен, правильно ли я добавил привилегии или есть какой-то другой шаг, который мне нужно сделать, чтобы сообщить AWS, что привилегии изменились.

Любая идея, как правильно позволить этой лямбда-функции вызывать себя?

1 ответ

Решение

Principal в этом случае будет роль IAM, под которой работает сама Lambda, которая выглядит следующим образом (при необходимости замените aws-account-id и role-name):

Principal: arn:aws:iam::aws-account-id:role/role-name
Другие вопросы по тегам