Designing and Engineering "遊び心"駆動開発

Playful IT
4/14 11:15

AWS AppSyncでAWSDateTime型を使って日時を扱う

スキーマ定義

日時を扱うためにはAWSDateTime型を利用する。

GraphQLのスキーマでは以下のように使用できる。

type Post {
	id: ID
	title: String!
	content: String!
	createdAt: AWSDateTime!
}

リゾルバーで値を自動的にセットする

例えば上のスキーマで、createdAtに投稿日時を自動的に登録したい場合はリクエストマッピングテンプレートに以下のように書くことで実現できる。

#set($nowISO8601 = "${util.time.nowISO8601()}")
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson("$util.autoId()"),
    },
    "attributeValues" : {
        "title": $util.dynamodb.toDynamoDBJson("$ctx.args.input.title"),
        "content": $util.dynamodb.toDynamoDBJson("$ctx.args.input.content"),
        "createdAt": $util.dynamodb.toDynamoDBJson("$nowISO8601"),
    }
}

DynamoDBに格納された後の値

AWSDateTime型で宣言した属性は、DynamoDBには 2019-04-11T04:59:22.088Z のような形式で保存される。

JavaScriptから利用するには、これをそのままDateクラスの引数に渡せばよい。

new Date('2019-04-11T04:59:22.088Z')
// => Thu Apr 11 2019 13:59:22 GMT+0900 (日本標準時)
関連記事
3/3 11:18

AppSyncのリゾルバー(VTL)ケーススタディ

リクエストマッピングテンプレート インデックスを使用してクエリする  ※IAMロールにインデックスへのアクセス権限をつける必要がある。 アンダーバーで始まる列名で検索する  レスポンスマッピングテンプレート ハッシュの配列に属性を追加する  

2/14 6:14

Apollo Clientもくもく会 2019.2.14@AWSオフィス

はじめに Apollo Clientを勉強していて、おそらくデータの読み出しと監視を行なっている readQuery メソッドと watchQuery メソッドが出てきたので、公式ドキュメントを読んで概要を把握する。 readQueryについてApollo Client…

2018/11/7

GraphQL入門(AWS AppSync)セミナー@AWS Loft 2018/11/6

前書き この記事は2018/11/7のAWS Loftでのセミナー参加中に同時にメモした内容です。内容の誤りが多分にある可能性がありますのでご容赦ください。 資料 https://aws.amazon.com/jp/blogs/news/aws-devday-tokyo-201…

11:15

AWS CDKでDynamoDBのテーブルを作成する

AWS CDKでDynamoDBテーブルを作成する billingMode でオンデマンドを指定するには、 dynamodb.BillingMode.PayPerRequest を指定すればよい。 @aws-cdk/aws-dynamodb には、CfnTable…

4/13 11:40

AWS AppSyncをGitでバージョン管理する

Serverless FrameworkにAWS AppSync用のプラグインを追加することで、AWS AppSyncのスキーマ・リゾルバーをはじめとした設定が全てコードで書けて、Gitを使ったバージョン管理も行えるようになる。 動作確認 macOS Mojave 10.14.…

プロフィール