#amazon-web-services #aws-lambda #aws-iot
#amazon-веб-сервисы #aws-лямбда #aws-iot
Вопрос:
Я пытаюсь реализовать подготовку автопарка в функции AWS Lambda. В качестве отправной точки у меня есть этот код:
'use strict';
var AWS = require('aws-sdk');
var iot = new AWS.Iot({
endpoint: 'apiendpoint',
accessKeyId: "AAAABBBBBCCCCDDDDD",
secretAccessKey: "AAAAABBBBCCCDD/1234122311222",
region: 'ap-south-1'
});
exports.handler = async (event, context) => {
var params = {
setAsActive: true
};
return {
statusCode: 200,
body:JSON.stringify(await createCertAndKey(params))
}
}
const createCertAndKey = async (params) => {
return new Promise((resolve, reject) => {
iot.createKeysAndCertificate(params, function(err, data){
if(err){
console.log(err);
reject(err)
}
else{
console.log("success?");
resolve(data)
}
})
})
}
Я получаю ResourceNotFound
исключение для вызова createKeysAndCertificate
. Я также попытался вызвать другие функции интернета вещей, но это дает то же самое исключение.
Что я здесь делаю не так?
Комментарии:
1. нам не нужно проходить
endpoint
мимо, попробуйте снять его.2. Да, это сработало, когда я удалил конечную точку. Спасибо @BaluVyamajala
Ответ №1:
конечная точка, передаваемая при инициализации объекта, должна иметь формат общего сервиса AWS https://{service}.{region}.amazonaws.com
. нам не нужно передавать его, AWS будет предполагать, основываясь на регионе и объекте, который мы инициализируем.
var iot = new AWS.Iot({
endpoint: 'iot.ap-south-1.amazonaws.com',
accessKeyId: "AAAABBBBBCCCCDDDDD",
secretAccessKey: "AAAAABBBBCCCDD/1234122311222",
region: 'ap-south-1'
});