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

Page updated Jun 8, 2024

Maintenance ModeYou are viewing Amplify Gen 1 documentation. Amplify Gen 1 has entered maintenance mode and will reach end of life on May 1, 2027. New project should use Amplify Gen 2. For existing Gen 1 projects, a migration guide and tooling are available to help you upgrade. Switch to the latest Gen 2 docs →

チームアクセスの管理

Amplify Studioを使用すると、異なる職務を持つチームメンバーがAmplifyにデプロイされたプロジェクトの異なる側面で共同作業できます。Studio開発者は、管理者または管理のみのアクセス権を持つアカウントを作成でき、メールでチームメンバーを招待できます。

以下の手順に従って、チームメンバーを追加し、プロジェクトへのアクセスを管理してください。

チームメンバーをプロジェクトアクセスに招待するには

  1. AWS管理コンソールにサインインしてAWS Amplifyを開きます。
  2. Amplify Studioが有効になっているAmplifyプロジェクトを選択します。
  3. ナビゲーションペインで、Amplify Studioの設定を選択します。
  4. Amplify Studioの設定ページのアクセス制御設定セクションで、チームメンバーを追加を選択します。
  5. メールに、招待するチームメンバーのメールアドレスを入力します。
  6. アクセスレベルで、チームメンバーに付与するアクセスレベルを選択します。
  • フルアクセスにより、チームメンバーはAWSリソースを作成および管理できます。
  • 管理のみアクセスにより、チームメンバーはアプリコンテンツとユーザーを編集できます。
  1. 招待メールを送信するには、招待を送信を選択します。チームメンバーは、一時的な認証情報とStudioでプロジェクトにアクセスするためのリンクが記載されたメールを受け取ります。

ユーザーにフルアクセスレベルを付与すると、AdministratorAccess-Amplify IAMポリシーがアタッチされます。このIAMポリシーは単一のアプリケーションにスコープされておらず、AWSアカウント内のすべてのアプリケーションへのアクセスをユーザーに付与します。詳細については、AWS Amplifyのためのパネルポリシーを参照してください。

チームメンバーのアクセスを編集するか、ユーザーを削除するには

  1. AWS管理コンソールにサインインしてAWS Amplifyを開きます。
  2. Amplify Studioが有効になっているAmplifyプロジェクトを選択します。
  3. ナビゲーションペインで、Amplify Studioの設定を選択します。
  4. Amplify Studioの設定ページのアクセス制御設定セクションで、編集または削除するチームメンバーを選択します。
  5. 以下のいずれかを実行します。
  • 編集を選択します。チームメンバーの編集ウィンドウで、チームメンバーのアクセスレベルを選択します。
  • 削除を選択します。ユーザーを削除ウィンドウで、削除アクションを確認します。

チームメンバーがAmplify Studioにログインすると、ログイントークンは明示的にログアウトされない限り、5時間30分間有効です。チームメンバーのアクセス許可をフルアクセスから管理のみに変更した場合、またはチームメンバーのアクセスを削除した場合、チームメンバーはトークンの有効期限が切れるまで、以前に付与されたアクセス許可でAmplify Studioにアクセスし続けることができます。

Studioがユーザーアクセスを管理する方法を理解する

以下のリソースはすべてStudioで管理されます。これらのリソースへの手動変更により、ログインエクスペリエンスが影響を受ける可能性があります

ユーザープール

Studioはアカウント内のAmazon Cognito User Poolを使用してユーザーアクセスを管理します。コスト無料でStudioに最大50,000人の月次ユーザーを招待できます。

Studioはアカウント内のAmazon Cognito User Poolを使用してユーザーアクセスを管理し、名前は以下の通りです。

  • amplify_backend_manager_APPID

IAMロール

フルアクセスおよび管理のみグループに必要なアクセス許可を付与するため、Studioは2つのIAMロール(以下の名前)を作成します。

  • USERPOOLID_Full-access
  • USERPOOLID_Manage-only

Cognito Identity Pool

Amazon Cognito Identity Poolも作成され、フルアクセスおよび管理のみグループに関連付けられたAWS認証情報を発行し、名前は以下の通りです。

  • amplify_backend_manager_APPID

Cognito Lambda トリガー

AWS Amplify ConsoleからAmplify Studioへのパスワードレスログインエクスペリエンスを提供するため、Studioは4つのCognito Lambda トリガー(上記のUser Poolに関連付けられた)を作成し、名前は以下の通りです。

  • amplify-login-create-auth-challenge-SHORT_CODE
  • amplify-login-custom-message-SHORT_CODE
  • amplify-login-define-auth-challenge-SHORT_CODE
  • amplify-login-verify-auth-challenge-SHORT_CODE

トラブルシューティング

Studioアプリケーションでログインに問題が発生した場合、またはリソースが削除された場合は、Amplify管理コンソールでAmplifyプロジェクトのStudioを無効にしてから再度有効にすることにより、リソースを再作成できます。

  1. AWS管理コンソールにサインインしてAWS Amplifyを開きます。
  2. Amplify Studioが有効になっているAmplifyプロジェクトを選択します。
  3. ナビゲーションペインで、Amplify Studioの設定を選択します。
  4. Amplify Studioを有効化をオフにします。
  5. Amplify Studioを有効化をオンにします。

Amplify Studioを無効にして再度有効にすると、プロジェクトへのアクセスに使用されるAmplify Studio管理ユーザープールリソースが削除され、再作成されるため、ユーザーを再度招待してAmplifyプロジェクトへのアクセスを提供する必要があります。Amplify Studioを無効にして再度有効にしてもAmplifyプロジェクトのリソースは変更されません。

Amplifyでアクションを実行する権限がない

アクションを実行する権限がないというエラーが表示される場合は、ポリシーを更新してアクションを実行できるようにする必要があります。

ヘルプが必要な場合は、AWSアドミニストレータに問い合わせてください。アドミニストレータは、サインイン認証情報を提供した人です。詳細については、AWS Amplifyのためのパネルポリシーを参照してください。

Cognito Lambda トリガーのログインランタイムを更新する

Cognito Lambda トリガーランタイムを更新する必要がある場合は、Cognito User Pool amplify_backend_manager_<app-id> に関連付けられたLambda関数トリガーを更新することで実行できます。

  1. AWS管理コンソールにログインし、Amplifyコンソールを開き、Amplify Studioが有効になっているAmplifyプロジェクトを選択します。
  2. 概要ページのアプリ名の下にあるアプリIDを取得します。
  3. Amazon Cognito コンソールに移動し、ユーザープールを選択します。アプリIDを使用してユーザープールを検索します。アプリIDを使用したamplify_backend_manager_<app-id>の命名形式のユーザープールが表示されます。
  4. ユーザープールを選択し、ユーザープールのプロパティに移動します。Lambda トリガーが表示されるはずです。 Studioによって作成されたCognito Lambda トリガー
  5. Lambda トリガーごとに、アタッチされたLambda関数列に指定されたリンクを選択します。注意として、Lambda トリガーが認証チャレンジレスポンスを検証するLambda トリガーの場合、関数には認証チャレンジレスポンスを検証するLambda トリガーを更新セクションで提供される追加のステップが必要です。
  6. ランタイム設定を編集を選択し、ドロップダウンオプションからNode.js 20.xにランタイムを変更します。 Lambda ランタイム
  7. 最後に、保存を選択します。

認証チャレンジレスポンスを検証するLambda トリガーを更新する

この関数には、NodeJS 20.xのLambdaがaws-sdkの新しいバージョンを使用するため、コード変更が必要です。

  1. Lambda Code Sourceに移動し、index.jsファイルを選択します。 Cognito トリガーリソースのLambdasource codeセクション
  2. index.jsの内容を以下に置き換えます。
const { AmplifyBackendClient, GetTokenCommand, DeleteTokenCommand } = require('@aws-sdk/client-amplifybackend');
exports.handler = async (event, context) => {
try {
const amplifyBackendService = new AmplifyBackendService(event);
await amplifyBackendService.validateToken();
console.log(`verified challenge code with result: ${event.response.answerCorrect}`);
context.done(null, event);
return event;
} catch (e) {
console.error('exception occurred during verify', e);
event.response.answerCorrect = false;
context.done(e, event);
}
};
class AmplifyBackendService {
constructor(event) {
const { sessionId, appId } = event.request.clientMetadata;
const { challengeAnswer } = event.request;
this.appId = appId;
this.sessionId = sessionId;
this.challengeAnswer = challengeAnswer;
this.event = event;
}
async validateToken() {
this.amplifyBackend = this.initService();
// 1. Get token
const tokenResponse = await this.getToken();
// 2. Validate token
const challengeCode = tokenResponse.ChallengeCode;
if (challengeCode && this.challengeAnswer && this.challengeAnswer === challengeCode) {
this.event.response.answerCorrect = true;
} else {
this.event.response.answerCorrect = false;
}
// 3. Delete token
await this.deleteToken();
return this.event.response.answerCorrect;
}
initService() {
const amplifyBackend = process.env.ENDPOINT
? new AmplifyBackendClient({
endpoint: process.env.ENDPOINT,
})
: new AmplifyBackendClient();
return amplifyBackend;
}
getToken() {
return this.amplifyBackend.send(
new GetTokenCommand({
AppId: this.appId,
SessionId: this.sessionId,
}),
);
}
deleteToken() {
return this.amplifyBackend.send(
new DeleteTokenCommand({
AppId: this.appId,
SessionId: this.sessionId,
}),
);
}
}
exports.AmplifyBackendService = AmplifyBackendService;
  1. 最後に、デプロイを選択して変更を保存します。