AWS Step FunctionsステートマシンからDynamoDBテーブルのスキャンをする

2021.10.31

こんにちは、CX事業本部 IoT事業部の若槻です。

今回は、AWS Step FunctionsステートマシンからDynamoDBテーブルのスキャンをする方法を確認してみました。

背景

AWS Step Functionsでは、AWSの各種データベースサービスに対してAPIを使用した処理を行うことができます。

もともとDynamoDBのクエリ操作について調べる予定だったのですがパラメータの書き方でハマりったので、代わりにもっと単純と思われるにスキャンの動作で試していたところ権限周りで少し注意が必要だったので、書き残すことにしました。

やってみた

ステートマシンの作成

Step Functions Workflow Studioでステートマシンを作成します。

Step Functionsのマネジメントコンソールでステートマシンの作成を開始します。

[次へ]をクリックします。

[action]をscanで検索して[DynamoDB Scan]をドラッグします。

[Scan]の[設定]で、[APIパラメータ]でテーブル名を指定したら、[次へ]をクリックします。

生成されたコードを確認したら[次へ]をクリックします。

生成されたコード(ステートマシン定義)は下記のようになります。

{
  "Comment": "A description of my state machine",
  "StartAt": "Scan",
  "States": {
    "Scan": {
      "Type": "Task",
      "End": true,
      "Parameters": {
        "TableName": "taxiCrews"
      },
      "Resource": "arn:aws:states:::aws-sdk:dynamodb:scan"
    }
  }
}

ステートマシン設定の確認をします。[アクセス許可]-[実行ロール]で新しいロールを自動作成するようにしていますが、

その場合にDynamoDBのScanアクションを許可するロールは自動で作成されないようで、下記のような警告が出ます。 1

一旦ここでは作成を完了します。

ステートマシンを作成できました。しかしこのままでは権限が不足しているため実行をしても失敗します。

[IAMでロールを編集]からロールへの許可の追加をできるようなのでクリックします。

現状X-Rayを使用するポリシーしかアタッチされていないようです。

今回はスキャンをしたいので、AmazonDynamoDBReadOnlyAccessをアタッチします。

動作

Step Functionsのコンソールに戻り、ステートマシンを実行します。入力の指定はデフォルトのままです。

実行が成功しました。

テーブル上のデータがスキャンできています。取得結果はDynamoDB JSON形式となるようです。

おわりに

AWS Step FunctionsステートマシンからDynamoDBテーブルのスキャンをする方法を確認してみました。

DynamoDBにアクセスするステートマシンをStep Functions Workflow Studioから作成する場合に権限周りで少し注意が必要でした。次回はもともとやりたかったクエリを試してみたいと思います。

以上