3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS AppSyncでAPIを作ってみたAdvent Calendar 2022

Day 1

AppSync×DynamoDB(CREATE編)

Last updated at Posted at 2022-11-30

概要

AppSyncとDynamoDBを使用した簡易的なAPIの作成方法を紹介します。

この記事では、DBにデータを登録する処理を紹介します。

また、個人的にラジオが好きなので、記事全体を通してDBで管理するデータはラジオ番組情報としています。
各々読み替えていただければと思います。

DynamoDBでテーブルを作成する

  • テーブル名:Radio
  • パーティションキー:id 文字列
  • テーブル設定:デフォルト設定
    DynamoDB

AppSyncを作成する

  • 一から構築
  • API名:Radio App

データソース

  • データソース名:radio_db
  • データソースタイプ:Amazon DynamoDB テーブル
  • リージョン:AP-NORTHEAST-1
  • テーブル名:Radio
  • 既存のロールを作成または使用する:新しいロール
    データソース

スキーマ

input CreateRadioInput {
  id: ID!
  program_name: String
  cast: [String!]
  weekday: Int
  time: String
  favorite: Boolean
}

type Mutation {
  createRadio(input: CreateRadioInput!): Radio
}

type Query {
  getRadio(id: ID!): Radio
}

type Radio {
  id: ID!
  program_name: String
  cast: [String!]
  weekday: Int
  time: String
  favorite: Boolean
}

リゾルバー

  • リゾルバーのMutationからcreateRadio(...): Radioアタッチを選択

リクエストマッピングテンプレート

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
      "id": $util.dynamodb.toDynamoDBJson($ctx.args.input.id)
  },
  "attributeValues": $util.dynamodb.toMapValuesJson($ctx.args.input),
  "condition": {
      "expression": "attribute_not_exists(#id)",
      "expressionNames": {
      "#id": "id"
      }
  }
}

レスポンスマッピングテンプレート

$util.toJson($ctx.result)

実行

  • クエリを実行する
    • 画面左が実行クエリ、画面右が実行結果
      クエリ
  • DynamoDBにデータが登録されていることの確認
    DynamoDB
3
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?