TL; DR: Как мне отредактировать шаблон ниже, чтобы он мог запускаться триггером пула пользователей?
Я пытаюсь создать шаблон CloudFormation для лямбда-функции, определяющей обе службы, из которых функция может вызываться и вызываться. Он должен быть запущен с помощью триггера Cognito User Pool.
Для этого я определил ресурс в шаблоне типа AWS::Serverless::Function
кратко следующим образом. Следите за разделом Policies
:
Resources:
MyFunctionResource:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyFunctionName
CodeUri: ./
Handler: "lambda_function.lambda_handler"
MemorySize: 128
Runtime: python3.7
Timeout: 3
Policies:
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- "cognito-idp:*"
- "logs:*"
...
Resource: "*"
- Version: "2012-10-17"
Statement:
- Effect: Allow
Action: "lambda:InvokeFunction"
Principal:
Service: cognito-idp.amazonaws.com
Resource: !Sub "arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:MyFunctionName"
Вторая политика, которую я вставил для ограничения ресурсов, может вызвать сбой моей функции при создании стека:
В документе политики не должен указываться принципал. (Сервис: AmazonIdentityManagement; Код состояния: 400; Код ошибки: MalformedPolicyDocument; Идентификатор запроса: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Когда я удаляю эту политику с принципалом , доступ к функции через триггер пула пользователей запрещается.