AWS GlueStudioを使用してDynamoDBからS3にデータを移動してみた。

2022.01.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWS Glue Studioとは?

AWS Glue Studioはグラフィカルインターフェイスです。AWS Glue Studioを使用して、AWS GlueでETLジョブの作成、実行、およびモニタリングをすることができます。データ変換ワークフローを視覚的に作成することができます。

ジョブには3つの部分があります:

  • Source - ソースはAWS Glue Data Catalog, S3, Kinesis, Kafka, RDS, Redshift, DynamoDB, MYSQL, PostgreSQL, Oracle SQL, SQL Serverにすることができます
  • Transform - Join, Drop, Select, Rename, Split, Filter, Aggregate, SQL などいろいろな変換を実行できます。
  • Target - AWS Glue Data Catalog, S3, Redshift, MYSQL, PostgreSQL, Oracle SQL, SQL Server。

この記事では、AWS GlueStudioとAWS GlueCrawlerを使用してDynamoDBからS3にデータを移動してみました。

 

 

やってみた

S3バケットの作成

  • S3 コンソールで、Create bucketを選択します。
  • バケット名を入力して、S3バケットを作成しておきます。

 

 

DynamoDBの作成

  • DynamoDBコンソールで、Create Tableを選択しておきます。
  • テーブル名とPartition Keyを入力して、DynamoDBテーブルを作成しておきます。
  • テーブルを作成した後、テーブルにデータを追加しておきます。

 

 

Crawlerの作成

Databaseの作成

  • AWS Glueのコンソールで、左のナビゲーションペインでDatabase を選択しておきます。
  • Add Databaseを選択して、データベース名を入力して、データベースを作成しておきます。

 

 

Crawlerの作成

  • 左のナビゲーションペインでTables を選択して、Add tables using a crawlerを選択しておきます。
  • クローラの名前を入力して、[Next]をクリックおきます。

 

  • Crawler source typeでData storesを選択しておきます。

 

  • データソースとしてDynamoDBを選択して、以前に作成したDynamoDBテーブルを選択しておきます。

 

  • IAMロールで[Create an IAM role]を選択しておきます。

 

  • スケジュールでRun on demandを選択しておきます。

 

  • Databaseで以前に作成したデータベースを選択しておきます。設定を確認して、クローラを作成しておきあます。

 

  • クローラを作成した後、クローラを実行しておきます。エラーなしで実行が完了したことをみることができます。

 

AWS Glue Studioの作成

  • 以下のポリシーを作成します。これにより、Glue StudioがS3とDynamoDBにアクセスできるようになります。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Scan"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:account-id:table/dynamodb-table*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ]
        }
    ]
}

 

  •  この設定でIAMロールを作成しておきます。
    • 信頼されたエンティティの種類 : AWS のサービス
    • ユースケース : Glue
    • ポリシー  :  前の手順で作成したポリシーの名前

 

  • AWS Glueのコンソールで、左のナビゲーションペインでAWS Glue Studio を選択しておきます。
  • [Create and manage jobs]で [View jobs]をクリックしておきます。

 

 

  • この設定でJobsを作成しておきます。
    • Visual with a source and target
    • Source : Amazon DynamoDB
    • Target : Amazon S3

 

  • ソース設定で、前に作成したデータベースとテーブルを選択しておきます。

 

  • Transformで、必要に応じて変換できます。データフィールドを削除し、ターゲットキー名を変更してみました。

 

  • ターゲット設定:
    • Format : CSV
    • S3 Target Location : 以前に作成されたS3バケットのURL。

 

  • ジョブの名前を入力して、以前に作成したIAMロールを選択して、[Save]をクリックしておきます。

 

  • ジョブを保存した後、ジョブを実行しておきます。
  • ジョブが正常に実行された後、データがS3に移動されていることを確認できます。

 

 

  • コンソールでは、ジョブのモニタリングを確認できます。

 

まとめ

AWS Glue StudioとAWS Glue Crawlerを使用してDynamoDBからS3にデータを移動してみました。他のソースやターゲットで試すこともできます。

Reference : Glue Studio