## 概要 [Task3846: AzureFunctions実装3(CSVをストレージアカウントに配置する)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3846) outputDataを追加 →outputAnalysisLicensesDataに変更(アラートルールなどでログを見るので、何の処理か理解できるように) blobstorageService.tsに以下を追加 - uploadFileAnalysisLicensesCSV (ライセンスCSVを配置する) - createContainerAnalysisを追加 (コンテナーを作成する) 環境変数の追加 ## レビューポイント - 今回追加されたJP-EASTのストレージアカウントのコンテナーが、第一階層のアカウントのものであるかどうかはソース上は特に意識していないが問題ないでしょうか。 ## 動作確認状況 - ローカルで確認(モックでソース上処理が通ることのみ確認のみ) 詳細なテストは別タスクで行う。 ## 補足 - 相談、参考資料などがあれば
77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
import {
|
|
HttpRequest,
|
|
HttpResponseInit,
|
|
InvocationContext,
|
|
app,
|
|
HttpMethod,
|
|
} from "@azure/functions";
|
|
import { analysisLicensesProcessing } from "./analysisLicenses";
|
|
import * as dotenv from "dotenv";
|
|
import { BlobstorageService } from "../blobstorage/blobstorage.service";
|
|
import { initializeDataSource } from "../database/initializeDataSource";
|
|
import { HTTP_METHODS, HTTP_STATUS_CODES } from "../constants";
|
|
|
|
export async function analysisLicensesManualRetry(
|
|
req: HttpRequest,
|
|
context: InvocationContext
|
|
): Promise<HttpResponseInit> {
|
|
context.log(req);
|
|
try {
|
|
if (req.method === HTTP_METHODS.POST) {
|
|
context.log("[IN]analysisLicensesManualRetry");
|
|
|
|
dotenv.config({ path: ".env" });
|
|
dotenv.config({ path: ".env.local", override: true });
|
|
const datasource = await initializeDataSource(context);
|
|
const blobstorageService = new BlobstorageService(true);
|
|
|
|
try {
|
|
// 現在の日付より、先月の年月をYYYYMM形式で取得
|
|
const currentDate = new Date();
|
|
currentDate.setMonth(currentDate.getMonth() - 1);
|
|
const year = currentDate.getFullYear();
|
|
const month = (currentDate.getMonth() + 1).toString().padStart(2, "0"); // 月は0から始まるため+1する
|
|
const formattedDate = `${year}${month}`;
|
|
|
|
await analysisLicensesProcessing(
|
|
context,
|
|
formattedDate,
|
|
datasource,
|
|
blobstorageService
|
|
);
|
|
|
|
return {
|
|
status: HTTP_STATUS_CODES.OK,
|
|
body: "analysisLicensesProcessing has been triggered.",
|
|
};
|
|
} catch (e) {
|
|
context.log("analysisLicensesProcessing failed.");
|
|
context.error(e);
|
|
throw e;
|
|
}
|
|
} else {
|
|
context.log(`Please use the POST method. method = [${req.method}]`);
|
|
return {
|
|
status: HTTP_STATUS_CODES.BAD_REQUEST,
|
|
body: `Please use the POST method. method = [${req.method}]`,
|
|
};
|
|
}
|
|
} catch (e) {
|
|
context.log("analysisLicensesManualRetry failed.");
|
|
context.error(e);
|
|
return {
|
|
status: HTTP_STATUS_CODES.INTERNAL_SERVER_ERROR,
|
|
body: "analysisLicensesManualRetry failed.",
|
|
};
|
|
} finally {
|
|
context.log("[OUT]analysisLicensesManualRetry");
|
|
}
|
|
}
|
|
|
|
// httpトリガは定時処理licenseAutoAllocationの異常時の手動再実行用
|
|
app.http("analysisLicensesManualRetry", {
|
|
methods: [HTTP_METHODS.POST as HttpMethod],
|
|
authLevel: "function",
|
|
handler: analysisLicensesManualRetry,
|
|
});
|