Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.
Gen1 DocsLegacy

Page updated May 4, 2024

ユーザーグループ

Amplify Authは、ユーザーをグループ化するメカニズムを提供します。ユーザーをグループに割り当てることで、ユーザーのコレクションのアクセスをカスタマイズしたり、監査目的で活用したりできます。たとえば、「ADMINS」ユーザーだけが掲示板から投稿を削除することが許可されているか、「EDITORS」だけが「draft」状態の投稿を変更することが許可されています。グループの使い始めるには、groupsプロパティを設定してください:

amplify/auth/resource.ts
import { defineAuth } from "@aws-amplify/backend"
export const auth = defineAuth({
loginWith: {
email: true,
},
groups: ["ADMINS", "EDITORS"],
})

注意: グループにはいくつかの制限があります。ユーザープールあたり10,000グループの上限が含まれます。

アクセスの定義

Amplifyリソースにより、一般的な言語を使用してグループのアクセスを定義できます。たとえば、データでallow.groupsを使用できます:

amplify/data/resource.ts
import { type ClientSchema, a, defineData } from "@aws-amplify/backend"
const schema = a.schema({
Article: a.model({}).authorization(allow => [
allow.groups(["EDITORS"]).to(["read", "update"])
])
})
// ...

またはストレージ:

amplify/storage/articles/resource.ts
import { defineStorage } from "@aws-amplify/backend"
export const storage = defineStorage({
name: "articles",
access: (allow) => ({
"drafts/*": [allow.groups(["EDITORS"]).to(["read", "write"])],
}),
})

グループでアクセスを定義することで、Amplifyは現在のユーザーのグループから読み取るための認可ルールを設定します。ユーザープールグループは、ユーザーのIDトークンおよびアクセストークンのクレームとしてcognito:groupsとして使用可能です。アクセストークンを使用してセキュアなリソースへのリクエストを実行でき、このクレームに対して検証され、リソースのアクションを許可します。

グループロール

各Cognitoユーザープールグループには、IAMロールが割り当てられています。IAMロールは、他のAWSリソースへのアクセスを拡張するように変更できます。ロールは、グループのroleプロパティのバックエンドからアクセスできます:

amplify/backend.ts
import { defineBackend } from '@aws-amplify/backend';
import { auth } from './auth/resource';
import { data } from './data/resource';
/**
* @see https://docs.amplify.aws/react/build-a-backend/ to add storage, functions, and more
*/
const backend = defineBackend({
auth,
data,
});
const { groups } = backend.auth.resources
// https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.IRole.html
groups["ADMINS"].role

次のステップ