Вот моя среда:
Win 10, WSL 2. На WSL 2: Ubuntu 20.04, Docker и интерфейс командной строки AWS SAM.
Я написал лямбда-функцию с API-шлюзом, которая получит данные в формате xml, вызовет службу, которая преобразует их в PDF, а затем запишу их в /tmp. Чтобы проверить это, я запускаю:
sam local start-api
И вызовите мою конечную точку, которая работает правильно, без ошибок.
Но я хочу получить доступ к папке /tmp
, чтобы увидеть, действительно ли файл там. Насколько я понимаю, он находится на образе докера. Итак, есть ли способ каким-то образом смонтировать эту папку / tmp, чтобы я мог получить доступ через проводник Win или каким-либо другим способом?
Для контекста, вот моя функция:
exports.lambdaHandler = async (event, context) => {
try {
if (!event.queryStringParameters || !event.queryStringParameters.order_id) {
response = {
statusCode: 400,
body: JSON.stringify({
message: "Parameter [order_id] missing.",
}),
};
return response;
}
var url =
"omitted";
var ret = await axios.get(
url,
{
headers: { Authorization: "Basic XXX" },
},
{ timeout: 10 }
);
var xml = ret.data.value[0].xmls[0].xml;
url = "https://www.webdanfe.com.br/danfe/GeraDanfe.php";
const formData = new FormData();
formData.append("arquivoXml", xml);
ret = await axios.post(url, formData, {
headers: formData.getHeaders(),
});
await savePdf(ret.data);
response = {
statusCode: 200,
body: JSON.stringify({}),
};
return response;
} catch (error) {
console.error(error);
response = {
statusCode: 500,
body: JSON.stringify(error),
};
return response;
}
};
function savePdf(data) {
return new Promise((resolve, reject) => {
fs.writeFile("/tmp/danfe.pdf", data, "binary", (err) => {
if (err) {
reject(err);
return;
}
resolve();
});
});
}