Looking for how to use this in your app?See Frontend Libraries →
ユーザーグループ
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"],})アクセスの定義
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.htmlgroups["ADMINS"].role