#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}
)
Тем не менее, я продолжаю получать «Маркер сеанса недействителен» или «Несанкционированное исключение». На данный момент я совершенно ничего не понимаю. Может ли кто-нибудь здесь указать мне правильное направление. Спасибо