Oi pessoal, fiquei 2 dias tentando resolver o seguinte problema: sempre que consumia a API via front-end, recebia o erro 401 Unauthorized. e via Insomnia não tinha erro. Revisei todo o provisionamento dos recursos da AWS, recriei o projeto do zero e nada resolvia, nem com o download do projeto da aula. Depois de muito tentar, encontrei da documentação do documentãção do Amplify
Amplify.configure({
API: {
endpoints: [
{
name: "sampleCloudApi",
endpoint: "https://xyz.execute-api.us-east-1.amazonaws.com/Development",
custom_header: async () => {
return { Authorization : 'token' }
// Alternatively, with Cognito User Pools use this:
// return { Authorization: `Bearer ${(await Auth.currentSession()).getAccessToken().getJwtToken()}` }
// return { Authorization: `Bearer ${(await Auth.currentSession()).getIdToken().getJwtToken()}` }
}
}
]
}
});
Com isso, importei a classe Auth para o arquivo index.js e fiz a seguinte alteração:
import { Amplify, Auth } from "aws-amplify"
Amplify.configure({
Auth: {
mandatorySignIn: true,
region: config.cognito.REGION,
userPoolId: config.cognito.USER_POOL_ID,
identityPoolId: config.cognito.IDENTITY_POOL_ID,
userPoolWebClientId: config.cognito.APP_CLIENT_ID
},
API: {
endpoints: [
{
name: "pacientes",
endpoint: config.apiGateway.URL,
region: config.apiGateway.REGION,
custom_header: async () => {
return { Authorization: `Bearer ${(await Auth.currentSession()).getIdToken().getJwtToken()}` }
}
}
]
}
})
Com isso, as instâncias de API conseguiram consumir corretamente enviado o token. Agora porque na aula funcionava sem isso, é uma mistério pra mim.