2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フューチャーAdvent Calendar 2024

Day 8

AWS StepFunctionsでJSONataを使えば簡単に日付取得ができる

Last updated at Posted at 2024-12-07

はじめに

フューチャー Advent Calendar 2024の8日目です。

GlueやDynamoDBを用いたデータ分析のためのワークフローを、Step Functionsで構築しようとしていたところ、どうやらちょうどアプデが来ていて色々便利になっていました。

アップデートについて

主に2つのアップデートがあったようで、

  • 変数が使えるようになった
  • JSONataが使えるようになった

今回は、2つ目について取り扱います。
1つ目に関しては他の方の記事を参考にしてください。かなり便利になったみたいです。

本題

今回は、Step FunctionsでDynamoDBのS3エクスポートを行う際に、出力先のS3パスに日付情報をつける場合を想定します。

スクリーンショット 2024-12-06 164342.png

このステートに対して、日付情報を渡してあげたいわけです。

JSONateで日付を取得

JSONataで日付を取得するには

$fromMillis($millis())

$millis()が現在の経過ミリ秒で、$fromMillis()で日時に変換しています。これはUTC時刻なので注意してください。

$fromMillis($millis(), '[Y0001][M01][D01]', '+0900')

これで、時差を考慮したうえでかつYYYYMMDDの形式になります。

JSONataの日時関数に関する公式ドキュメント

JSONataの出力が確認できるページ

Step Functionsに導入

これを、Step Functionsで書いてステートに渡してあげます。

目的のステートの手前に、日付を渡してあげるためのpassステートを置いて"出力"に定義してあげます。
JSONateを扱うには、"{% %}"で囲ってあげる必要があります。

スクリーンショット 2024-12-06 172821.png

S3エクスポートの引数に、"S3Prefix": "{% $states.input.date_prefix %}"と定義してあげるとpassステートの出力で定義した値を受け取ることができます。

スクリーンショット 2024-12-06 173251.png

実際に実行してみた結果です。
ステートの入力のS3Prefixの値が、想定通りYYYYMMDD形式の日付になっています。
(テーブル名が架空なので、実行自体は失敗しています。)

スクリーンショット 2024-12-06 173505.png

おわりに

今回はたまたまアップデートが来ていた内容に触れる機会があったので記事にすることができました。
以前まではここまで柔軟に日時を扱えずLambdaを使うケースが多かったようで、今回僕はちょうど恩恵を受けることができてラッキーでした。

最初アップデートに気づかず作業していた時は、他の記事の通りやっても変数の受け渡しがうまくいかず苦労していました。
自分が使うAWSサービスのアップデート情報はキャッチアップしておかないといけませんね。

参考にした記事

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?