Как получить доступ к API Appsync из функции lambda с авторизацией AWS_IAM

#python #amazon-web-services #aws-lambda #amazon-iam #aws-appsync

Вопрос:

У меня есть мутация GraphQL, которая защищена авторизацией AWS_IAM. Я использую AWS_COGNITO_POOL в качестве основного авторизатора и AWS_IAM в качестве дополнительного авторизатора. Я использую плагин serverless-appsync-для интеграции с AWS Appsync. Это и есть мутация:

 updateUser(user_id: String!): String
@aws_iam
 

Мне нужно вызвать эту мутацию из лямбда-функции (python). До сих пор я создавал РОЛЬ IAM в бессерверной конфигурации:

     UpdateUserMutationRole:
      Type: AWS::IAM::Role
      Properties:
        RoleName: ${self:provider.stage}-UpdateUserMutationRole
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service:
                  - lambda.amazonaws.com
              Action:
                - sts:AssumeRole
        Policies:
          - PolicyName: ${self:provider.stage}-UpdateUserMutationLambdaPolicy
            PolicyDocument:
              Version: "2012-10-17"
              Statement:
                - Effect: Allow
                  Action:
                    - appsync:GraphQL
                  Resource:
                    - <GraphQL API>
 

Я пытался назначить это лямбда-функции, но это не работает:

   updateUserMutation:
    handler: <path-to-handler>
    role: UpdateUserMutationRole
 

Внутри лямбда-функции я делаю это:

     session = requests.Session()
        session.auth = AWS4Auth(
            <Access_key>,
            <Access_Secret>,
            <region>,
            'appsync'
        )
        response = session.request(
            url=APPSYNC_API_ENDPOINT_URL,
            method='POST',
            json={'query': query, "variables": variables}
        )

 

Тем не менее, я продолжаю получать «Маркер сеанса недействителен» или «Несанкционированное исключение». На данный момент я совершенно ничего не понимаю. Может ли кто-нибудь здесь указать мне правильное направление. Спасибо