Моя цель - использовать облачную функцию Firebase для экспорта tflite-модели, обученной из Google Cloud Automl.
Я следил за документом из https://cloud.google.com/vision/automl/object-detection/docs/export-edge и плавно экспортировать модель с помощью скручивания на терминале, но не с помощью функции axios в облаке. С помощью следующего кода я получил 401 несанкционированную ошибку, даже если я установил GOOGLE_APPLICATION_CREDENTIALS в .env и запросил пакетом dotenv.
Мой вопрос: можно ли экспортировать модель с запросом axios POST? Если тогда что я сделал не так?
//index.js
require("dotenv").config();
//.env
GOOGLE_APPLICATION_CREDENTIALS="./config.json"
async function exportModel() {
const header = {
"Content-Type": "application/json;charset=utf-8",
Authorization:
"Bearer $(gcloud auth application-default print-access-token)",
};
// Construct request
const request = {
outputConfig: {
modelFormat: "tflite",
gcsDestination: {
outputUriPrefix: `gs://${output-storage-bucket}/`,
},
},
};
axios
.post(
`https://automl.googleapis.com/v1/projects/${projectId}/locations/us-central1/models/${model_id}:export`,
request,
{
headers: header,
}
)
.then((response) => {
console.log(response);
return response;
})
.catch((error) => {
console.log(error);
return error;
});
}
Ошибка
Error: Request failed with status code 401
at createError (/srv/node_modules/axios/lib/core/createError.js:16:15)
at settle (/srv/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/srv/node_modules/axios/lib/adapters/http.js:236:11)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)