У меня есть приложение AppSync, которое использует аутентификацию IAM (подключается к Cognito User и пулам удостоверений). При использовании аутентификации IAM $ event.context.identity - это объект Cognito Identity Pool, в котором нет информации о пользователе (без имени пользователя, имени пользователя, адреса электронной почты и т. Д.)
Я считаю, что мне нужно передавать JPT UserPoolID (который доступен на стороне клиента через Amplify) в AppSync всякий раз, когда я делаю запрос graphQL. Но я не смог понять, как добавить JWT (предположительно) в заголовок.
-------------РЕДАКТИРОВАТЬ--------------
AppSyncClient является клиентом (построен на Apollo). App.js выглядит как
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import appSyncConfig from "./AppSync";
import { ApolloProvider } from "react-apollo";
import AWSAppSyncClient from "aws-appsync";
import { Rehydrated } from "aws-appsync-react";
import { Auth } from 'aws-amplify'
import AWS from'aws-sdk';
import AllPosts from './Components/AllPosts';
// more routes
const Home = () => (
<div > <AllPosts /> </div>
);
const App = () => (
<div> <Router> <div>
<Route exact={true} path="/" component={Home} />
//more routes
</div> </Router> </div>
);
const client = new AWSAppSyncClient({
url: appSyncConfig.graphqlEndpoint,
region: appSyncConfig.region,
auth: {
type: appSyncConfig.authenticationType, //AWS_IAM
apiKey: appSyncConfig.apiKey,
credentials: () => Auth.currentCredentials(),
});
const WithProvider = () => (
<ApolloProvider client={client}>
<Rehydrated>
<App />
</Rehydrated>
</ApolloProvider>
);
export default WithProvider;