Как я могу вызвать серверную лямбда-функцию с ролью из другой функции - PullRequest
0 голосов
/ 25 июня 2019

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

Ошибка, которую я получаю,

ocr-solution-dev-routes is not authorized to perform:textract:StartDocumentAnalysis",
"errorType":"AccessDeniedException"

Мой безсерверный yml

iamRoleStatements:
    - Effect: "Allow"
      Action:
       - "s3:*"
      Resource: { "Fn::Join": ["", ["arn:aws:s3:::${self:custom.secrets.IMAGE_BUCKET_NAME}", "/*" ] ] }
    - Effect: "Allow"
      Action:
        - lambda:InvokeFunction
        - lambda:InvokeAsync
      Resource: "*"

    functions:
      routes:
        handler: src/functions/routes/handler.run
        events:
          - s3:
              bucket: ${self:custom.secrets.IMAGE_BUCKET_NAME}
              event: s3:ObjectCreated:*

      startTextract:
        role: QvaliaTextractRole
        handler: src/functions/routes/handler.startTextAnalysis

      getTextract:
        role: QvaliaTextractRole
        handler: src/functions/routes/handler.detectTextAnalysis

    resources:
      Resources:
        QvaliaTextractRole:
          Type: AWS::IAM::Role
          Properties:
            RoleName: QvaliaTextractRole
            AssumeRolePolicyDocument:
              Statement:
              - Effect: Allow
                Principal:
                  Service:
                    - textract.amazonaws.com
                    - lambda.amazonaws.com
                Action:
                - sts:AssumeRole
            Policies:
              - PolicyName: TextractPolicy
                PolicyDocument:
                  Version: '2012-10-17'
                  Statement:
                    - Effect: Allow
                      Action:
                        - lambda:*
                        - sns:*
                        - sqs:*
                        - s3:*
                      Resource: "*"

                    - Effect: "Allow"
                      Action:
                        - "s3:*"
                      Resource: { "Fn::Join": ["", ["arn:aws:s3:::${self:custom.secrets.IMAGE_BUCKET_NAME}", "/*" ] ] }

1 Ответ

0 голосов
/ 26 июня 2019

Вам необходимо добавить к своей роли политику AmazonTextractFullAccess, как описано в официальной документации

iamManagedPolicies:
 - arn:aws:iam::aws:policy/AmazonTextractFullAccess
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...