0
0

More than 1 year has passed since last update.

Cognitoユーザプールを使ったAppSyncの認証設定

Last updated at Posted at 2022-12-19

概要

この記事では、Cognitoユーザプールを使ったAppSyncの認証方法を紹介します。

スキーマ

アドベントカレンダーの1日目から5日目で作成したAppSyncをCognitoユーザプールでの認証に切り替えます。

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

# 今回追加する箇所
input DeleteRadioInput {
	id: ID!
}

type Mutation {
	createRadio(input: CreateRadioInput!): Radio
		@aws_cognito_user_pools
	updateRadio(input: UpdateRadioInput!): Radio
		@aws_cognito_user_pools
	deleteRadio(input: DeleteRadioInput!): Radio
		@aws_cognito_user_pools
}

type Query {
	getRadio(id: ID!): Radio
		@aws_cognito_user_pools
	listRadio(filter: TableRadioFilterInput, limit: Int, nextToken: String): RadioConnection
		@aws_cognito_user_pools
}

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

type RadioConnection @aws_cognito_user_pools {
	items: [Radio]
	nextToken: String
}

input TableBooleanFilterInput {
	ne: Boolean
	eq: Boolean
}

input TableIntFilterInput {
	ne: Int
	eq: Int
	le: Int
	lt: Int
	ge: Int
	gt: Int
	contains: Int
	notContains: Int
	between: [Int]
}

input TableRadioFilterInput {
	day: TableIntFilterInput
	time: TableStringFilterInput
	favorite: TableBooleanFilterInput
}

input TableStringFilterInput {
	ne: String
	eq: String
	le: String
	lt: String
	ge: String
	gt: String
	contains: String
	notContains: String
	between: [String]
	beginsWith: String
}

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

MutationQuerytype Radiotype RadioConnection
@aws_cognito_user_poolsを追加することでCognitoでの認証を受け付けます。

リゾルバーの変更は不要です。

おまけ

リゾルバーでCognitoの情報を使用したい場合の記述方法を紹介します。

下記をCREATEのリクエストマッピングテンプレートの先頭に追加することで、CognitoのSub情報をDBに登録できます。

#set( $identityValue = $util.defaultIfNull($ctx.identity.claims.get("sub"), $util.defaultIfNull($ctx.identity.claims.get("cognito:sub"), "null")) )

#if( $util.isNull($identityValue) )
  $util.unauthorized()
#end

$util.qr($ctx.args.input.put("<カラム名>", $identityValue))
0
0
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
0
0