Я пытаюсь вызвать мутацию из лямбды, которая регулярно запускается таймером.Это то, что я делаю
const params = {
AccountId: "XXXXXXX",
RoleArn: "arn:aws:iam::XXXX:role/appsync_lamda_role", // tried removing this too
IdentityPoolId: "ap-southeast-1:xxxx-xxxx-xxx-xxxx-xxx",
LoginId: "demo_access" // tried with and without this
};
AWS.config.update({
region: "ap-southeast-1",
credentials: new AWS.CognitoIdentityCredentials(params)
});
Теперь я звоню
AWS.config.credentials.get(err => {
const signer = new AWS.Signers.V4(httpRequest, "appsync", true);
signer.addAuthorization(AWS.config.credentials, AWS.util.date.getDate());
const options = {
method: httpRequest.method,
body: httpRequest.body,
headers: httpRequest.headers
};
fetch(uri.href, options)
.then(res => res.json())
.then(json => {
console.log(`JSON Response = ${JSON.stringify(json, null, 2)}`);
callback(null, event);
})
.catch(err => {
console.error(`FETCH ERROR: ${JSON.stringify(err, null, 2)}`);
callback(err);
});
});
Когда я делаю это, я получаю сообщение об ошибке от APPSYNC как "ошибки": [{"errorType":"UnauthorizedException", "message": "Невозможно проанализировать токен JWT."} Я дал доступ к роли для вызова GraphQL и отредактировал доверительные отношения
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity"
}
Чего мне здесь не хватает?Пожалуйста, помогите.
Когда я смотрю на сгенерированные заголовки, я не вижу токен JWT, но вижу сессионный токен Как
'User-Agent': 'aws-sdk-nodejs/2.275.1 linux/v8.10.0 exec-env/AWS_Lambda_nodejs8.10',
host: 'xxxxx.appsync-api.ap-southeast-1.amazonaws.com',
'Content-Type': 'application/json',
'X-Amz-Date': '20181213T080156Z',
'x-amz-security-token': 'xxxxxx//////////xxxxxEOix8u062xxxxxynf4Q08FxxxLZxV+xx/xxx/xxx/xxxxx=',
Authorization: 'AWS4-HMAC-SHA256 Credential=xxxxxxxxx/20181213/ap-southeast-1/appsync/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=xxxxxxxxxxxxxxxxxxxxxxx' }
Заранее спасибо