Запрос к конечной точке AWS AppSync GraphQl возвращает 401 Ошибка клиента: URL-адрес не авторизованPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запрос к конечной точке AWS AppSync GraphQl возвращает 401 Ошибка клиента: URL-адрес не авторизован

Сообщение Anonymous »


Я пытаюсь использовать PyCognito (AWS Cognito) для аутентификации пользователя и аутентифицированную роль подключенного пула удостоверений, чтобы предоставить пользователю разрешения на запрос конечной точки AppSync GraphQL, но я получаю ошибку клиента 401: несанкционировано для URL-адреса .

Минимально воспроизводимый пример:

из pycognito импортировать Cognito импортировать бото3 из Request_aws4auth импортировать AWS4Auth запросы на импорт пользователь = Cognito (USER_POOL_ID, CLIENT_ID, имя пользователя = USERNAME) user.authenticate(пароль=ПАРОЛЬ) пользователь.check_token() user.verify_tokens() boto_session = boto3.Сессия() client = boto_session.client('cognito-identity', имя_региона=РЕГИОН) ident_id = client.get_id( IdentityPoolId=f'{REGION}:{IDENTITY_POOL_ID}', Логины={ f'cognito-idp.{REGION}.amazonaws.com/{USER_POOL_ID': user.id_token } )['IdentityId'] учетные данные = client.get_credentials_for_identity( IdentityId=identity_id, Логины={ f'cognito-idp.{REGION}.amazonaws.com/{USER_POOL_ID}': user.id_token } )['Реквизиты для входа'] сеанс = запросы.Сессия() session.auth = AWS4Auth( учетные данные["AccessKeyId"], учетные данные["SecretKey"], ОБЛАСТЬ, 'синхронизация приложений', session_token=credentials["SessionToken"] ) ответ = session.post(GRAPHQL_ENDPOINT, json={'query': QUERY, 'variables': {'id': user.id_claims["sub"]}}) ответ.raise_for_status() вызывает следующее исключение:

401 Ошибка клиента: нет авторизации для URL-адреса: ENDPOINT Когда я выполняю sts.get_caller_identity() с учетными данными для входа в систему, я получаю ожидаемую аутентифицированную роль от IAM.

{ "UserId": "ACCESS_KEY_ID:CognitoIdentityCredentials", "Учетная запись": "ACCOUNT_ID", "Arn": "arn:aws:sts::ACCOUNT_ID:assumed-role/authRole/CognitoIdentityCredentials" } Я также добавил следующую встроенную политику в указанную выше authRole, чтобы попытаться полностью решить проблему с разрешениями, но безрезультатно.

{ «Версия»: «17.10.2012», "Заявление": [ { "Сид": "VisualEditor0", «Эффект»: «Разрешить», "Действие": [ "динамодб:*", "appsync:*" ], "Ресурс": "*" } ] } Изначально я пытался использовать это в качестве руководства, но не видел, чтобы кто-нибудь еще сталкивался с этой проблемой 401. Как отправить запрос GraphQL в AppSync из Python?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»