この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
いろんなPoCをやっていると、同じような管理画面を作ることがあります。 そんなとき、Retoolを使えば、管理画面を楽に作れるのでは?となったので、まずはデータ取得と表示を試してみました。
おすすめの方
- Retoolの雰囲気を知りたい方
- Retoolに興味がある方
- RetoolでDynamoDBテーブルの内容を表示するサンプルを見たい方
Retool用のIAMユーザとDynamoDBテーブルを作成する
CloudFormationテンプレート
DynamoDB Integrationを参考に作成します。
aws.yaml
AWSTemplateFormatVersion: 2010-09-09
Description: IAM and DynamoDB for Retool
Resources:
# Retool用のIAMユーザ
RetoolUser:
Type: AWS::IAM::User
Properties:
UserName: retool-user
# Retool用のIAMユーザに付与するIAMポリシー(AssumeRoleできる)
RetoolUserPoricy:
Type: AWS::IAM::Policy
Properties:
PolicyName: retool-user-policy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action:
- "dynamodb:ListTables"
- "dynamodb:DeleteItem"
- "dynamodb:ListTagsOfResource"
- "dynamodb:DescribeReservedCapacityOfferings"
- "dynamodb:DescribeTable"
- "dynamodb:GetItem"
- "dynamodb:DescribeContinuousBackups"
- "dynamodb:DescribeLimits"
- "dynamodb:BatchGetItem"
- "dynamodb:BatchWriteItem"
- "dynamodb:PutItem"
- "dynamodb:ListBackups"
- "dynamodb:Scan"
- "dynamodb:Query"
- "dynamodb:DescribeStream"
- "dynamodb:UpdateItem"
- "dynamodb:DescribeTimeToLive"
- "dynamodb:ListStreams"
- "dynamodb:DescribeGlobalTableSettings"
- "dynamodb:ListGlobalTables"
- "dynamodb:GetShardIterator"
- "dynamodb:DescribeGlobalTable"
- "dynamodb:DescribeReservedCapacity"
- "dynamodb:DescribeBackup"
- "dynamodb:GetRecords"
Resource: "*"
Users:
- !Ref RetoolUser
# DynamoDBテーブル
DeviceTable:
DeletionPolicy: Retain
UpdateReplacePolicy: Retain
Type: AWS::DynamoDB::Table
Properties:
TableName: retool-device-table
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: deviceId
AttributeType: S
KeySchema:
- AttributeName: deviceId
KeyType: HASH
Retool側で「DynamoDBテーブルの一覧が取得できないエラー」が発生するため、Resource: "*"
を指定しています。
デプロイ
aws cloudformation deploy \
--template-file aws.yaml \
--stack-name IAM-and-Retool-Stack \
--capabilities CAPABILITY_NAMED_IAM
テスト用のデータを準備する
適当にテスト用のデータをDynamoDBテーブルに格納しました。
アクセスキー取得
Retoolに渡すアクセスキーを取得します。
aws iam create-access-key \
--user-name retool-user
Retoolを使う
ResourcesにDynamoDBテーブルを追加する
DynamoDBテーブルを選択します。
アクセスキーなどを入力します。
作成完了しました。
Appを作成する
いろいろなテンプレートがありますが、DynamoDBを扱うテンプレートは無いので、イチから作成していきます。
Black Appを作成する
Black Appを作成します。
初期のアプリができました。サンプル用のテーブルが表示されています。
query1をDynamoDBに変更する
デフォルトで用意されているquery1
は、PostgreSQLなので、DynamoDBテーブルに変更します。
さきほど作成したDynamoDBテーブルを選択し、Methodをscan
にします。
Save & Run
するとデータ取得が確認できました。
tableの設定を変更し、DynamoDBテーブルの内容を表示させる
さきほど、query1
をDynamoDBテーブルに変更したので、データが表示されなくなりました。
そのため、table1
のデータソースを「{{ query1.data.Items }}
」に変更します。
変更後、テーブルにデータが表示されました。
ドラッグ&ドロップでカラムの順番も変更できます。
ほかにも、テーブルにフィルタ追加したり、ページネーション設定などができます。
動作を確認してみる
右上のPreview
ボタンを押すと、動作確認ができます。
他ユーザに共有できる
右上のShare
ボタンを押すと、第三者に共有できます。
さいごに
簡単にDynamoDBなどの外部サービスと連携し、UIを作れるRetoolをまずは試してみました。他にも色々と実験してみます。