LoginSignup
2
1

More than 1 year has passed since last update.

QuickSightのデータセットの更新をStep Functionsでノーコードで出来るようになった話

Last updated at Posted at 2022-09-04

はじめに

先日、AWS Step Functionsで使える組み込み関数が増えました。

以前、「Step FunctionsでQuickSightのデータセット更新を行う際、ランダム文字列が必要でLambdaを使う必要がある」という内容の記事を書きました。

今回のアップデートで追加された組み込み関数を用いることで、ノーコードでStep FunctionsからQuickSightを更新できるようになりました。

やったこと

States.UUIDを使い、IngestionIdに一意の文字列を渡すだけです。

参考(日本語のページはまだ更新されていません。英語のページで確認ください)

関数だけ使ってみる

Workflow Studioで Pass をドラッグアンドドロップし、入力のParametersの中に以下の様に記載します。

{
    "param.$": "States.UUID()"
}

image.png

あとは保存して実行するだけです。

image.png

UUIDが生成されているのがわかります。

QuickSightデータセット作成

次に正常にデータセット更新が行われることを確認するために、サンプルを作成します。

今回はS3に置いた以下のデータを直接読み込み、表として表示させます。

members.csv
名前,年齢,誕生日,血液型,身長(cm),好きなもの,嫌いなもの,口癖
青天国 春,16,4月28日,A,160,カレーライス(甘口),長いも,春ちゃんにお任せあれ!
玉城 杏夏,15,1月17日,A,158,チーズバーガー,ヨーグルト,お茶目なジョークです
聖舞 理王,14,9月23日,AB,155,プリン(甘天堂),ピーマン,なぜなら私は、理王様だから!
祇園寺 雪音,16,8月8日,AB,164,カレーライス(激辛),無し,私様にお任せだ!
伊藤 紅葉,14,8月15日,A,146,梨,無し,いとおかし

読み込ませる場所を示すマニフェストファイルのサンプルです。

manifesto.json
{
	"fileLocations": [
		{"URIPrefixes": ["s3://<S3バケット名>/testspace/tings/"]}
    ]
}

QuickSightから新規でデータソースを作成し、ビジュアルで表を作りました。
image.png
image.png

この次に使うデータセットIDを取得します。

$ aws quicksight list-data-sets --aws-account-id <AWSアカウントID>
{
    "DataSetSummaries": [
        {
            "Arn": "arn:aws:quicksight:<リージョン>:<AWSアカウントID>:dataset/<DataSetId>",
            "DataSetId": "<DataSetId>",
            "Name": "tings_members",
            "CreatedTime": "2022-09-03T01:51:00.339000+00:00",
            "LastUpdatedTime": "2022-09-03T01:51:00.339000+00:00",
            "ImportMode": "SPICE",
            "RowLevelPermissionTagConfigurationApplied": false,
            "ColumnLevelPermissionRulesApplied": false
        },
        {
...

ステートマシン作成

CreateIngeestionにパーツを変えてパラメータに、アカウントID、先に取得したデータセットIDを設定し、IngestionIdには組み込み関数の結果が渡るようにします。

image.png

ステートマシンにアタッチさせているIAMロールに、CreateIngestionの権限を付与しておいてください。

IAMロール例
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "quicksight:CreateIngestion",
            "Resource": "arn:aws:quicksight:<リージョン>:<AWSアカウントID>:dataset/<DataSetId>/ingestion/*"
        }
    ]
}

実際にファイルから2行を削除し、同名でアップし上書きします。

members.csv
名前,年齢,誕生日,血液型,身長(cm),好きなもの,嫌いなもの,口癖
青天国 春,16,4月28日,A,160,カレーライス(甘口),長いも,春ちゃんにお任せあれ!
玉城 杏夏,15,1月17日,A,158,チーズバーガー,ヨーグルト,お茶目なジョークです
聖舞 理王,14,9月23日,AB,155,プリン(甘天堂),ピーマン,なぜなら私は、理王様だから!
- 祇園寺 雪音,16,8月8日,AB,164,カレーライス(激辛),無し,私様にお任せだ!
- 伊藤 紅葉,14,8月15日,A,146,梨,無し,いとおかし

準備ができたら、ステートマシンを実行します。
image.png

結果をみると、IngestionIdに生成されたUUIDが渡り実行されているのが確認できます。
image.png

QuickSightの更新履歴から、指示を受け付けたことが確認できます。
image.png

表の方も反映されています。
image.png

2回目以降の実行

以前は都度、IngestionIdに渡すパラメータを変更する必要がありましたが、今回はステートマシンに何も変更を加えず、更新されるか確認してみます。
対象のS3のフォルダに、以下のファイルを置きます。

yukimoji.csv
名前,年齢,誕生日,血液型,身長(cm),好きなもの,嫌いなもの,口癖
祇園寺 雪音,16,8月8日,AB,164,カレーライス(激辛),無し,私様にお任せだ!
伊藤 紅葉,14,8月15日,A,146,梨,無し,いとおかし

再度、ステートマシンを実行します。
結果を確認すると、先ほどと異なるIngestionIdが渡っています。
image.png

QuickSightの更新履歴から、更新指示を受け付けたことが確認できます。
image.png

表も更新され、5行になっています。
image.png

変更なしで、データセット更新が確認できました。

おわりに

Step Functionsの新しい組み込み関数を用いて、以前できなかったノーコードでのQuickSightのデータセット更新ができるようになりました。

組み込み関数を駆使すれば、今までLambda等が必要だった処理も、Step Functions単体でできるようになるかもしれず、より使いやすくなったと思います。

2
1
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
1