日時バッチを Function App で実行する場合、ファイル名に日付を入れたいといったことがあるかと思います。 Blob binding だといい感じに日付を入れられるのでその方法を紹介します。
やってみる
Function App の Blob output binding で、以下のようにします。
[FunctionName("demo")] public async Task Run( [TimerTrigger("0 0 0 * * * ")]TimerInfo myTimer, [Blob("demo/demo_{datetime}.csv", FileAccess.Write)] Stream csv, ILogger log) { }
{datetime} とすることで、実行時の日付が UTC で差し込まれます。 デフォルトでは、yyyy-MM-ddThh-mm-ssZ になります。 このようにすると、demo_yyyy-MM-ddThh-mm-ssZ.csv といったようなファイル名でファイルが出力されます。
フォーマット指定したい場合は、 {datetime:yyyy-MM-dd} とします。 すると、demo_yyyy-MM-dd.csv となります。
まとめ
ファイル名が動的でも面倒な処理をせずにファイル名に日付を差し込むことが出来ました。
datetime に入ってくる日付は、デフォルトで UTC なので気を付けましょう。 これを変える場合は、 Function App のタイムゾーン設定を変更する必要があり、一緒にデプロイされているすべての Function に影響を与えるのでタイムゾーンを変更する場合は、慎重に行いましょう。