2019/07/08

前提

状態

type Foo @model {
  id: ID!
  name: String!
}

やりたいこと

Fuga のlambdaから DynamoDBの Foo テーブルを参照したい

手順

APIのIDをLambda側から扱えるようにする

amplify/backend/backend-config.json を、以下のように変更する

変更前

{
  "api": {
    "hoge": {
      "service": "AppSync",
      "providerPlugin": "awscloudformation"
    }
  },
  "function": {
    "fuga": {
      "service": "Lambda",
      "providerPlugin": "awscloudformation",
      "build": true
    }
  }
}

変更後

DBを利用したいfunctionに、 dependsOn でapiのIDへの参照を追記する

{
  "api": {
    "hoge": {
      "service": "AppSync",
      "providerPlugin": "awscloudformation"
    }
  },
  "function": {
    "fuga": {
      "service": "Lambda",
      "providerPlugin": "awscloudformation",
      "build": true,
      "dependsOn": [
        {
          "category": "api",
          "resourceName": "hoge",
          "attributes": [
            "GraphQLAPIIdOutput"
          ]
        }
      ]
    }
  }
}

LambdaにDynamoDBの取得を許可

amplify/backend/function/fuga/fuga-cloudformation-template.jsonの指定項目を以下のように変更する