ローカル開発用にAWSを設定する
このガイドは、IAM Identity CenterとAWS Organizationsを使用して一時認証情報をセットアップするのに役立ちます。これにより、シングルサインオン(SSO)、ユーザー、グループ、権限セットなどをチーム向けに定義できます。AWS Organizationsは複数のAWSアカウントを含むように拡張できます。組織内のユーザーは、その権限セットが許可する範囲でAWSアカウントを利用できます。
Amplifyは、AWSサービスへのアクセスを簡素化するために標準的なローカル認証情報チェーンプロバイダーを利用しています。このガイドではIAM Identity Centerについて説明していますが、AWSローカル認証の追加方法を探索することもできます。
IAM Identity Center用語
IAM Identity Centerは、ユーザーが単一のユーザーアイデンティティを使用してサインインし、割り当てられたすべてのAWSアカウント、ビジネスアプリケーション、およびAWSクラウドのカスタムアプリケーションにアクセスできるようにします。このシングルサインオン機能は、複数の認証情報を管理する複雑さを軽減し、ユーザー認証を一元化することでセキュリティを向上させます。
ユーザー
ユーザーとは、ユーザーアイデンティティとグループ情報が保存および管理される場所です。IAM Identity CenterはMicrosoft Active Directoryなどの外部アイデンティティソースと統合するか、AWSによって提供される組み込みアイデンティティストアを使用することができます。
権限セット
ユーザーやグループに割り当てることができる権限のコレクション。権限セットは、ユーザーがAWSアカウントで実行を許可されるアクションを定義します。IAMポリシーに似ていますが、複数のアカウント全体でアクセスを管理するためにIAM Identity Center内で使用されます。
AWSOrganization
AWS OrganizationsとIAM Identity Centerは、複数のAWSアカウント全体の管理を効率化するために協力しています。AWS Organizationsはアカウント構造とポリシーを管理し、IAM Identity Centerはそれと統合して、シングルサインオンを有効にし、組織のロールに権限を合わせます。このシナジーは、安全で一貫したアクセス制御を確保し、ユーザーと権限の管理を簡素化します。
ローカルプロファイル
認証情報は通常、AWSプロファイルの使用により解決されます。プロファイルには永続認証情報またはSSOMETADATAを含めることができ、AWS CLIと同じ手法を使用してAmplifyで使用するように設定できます:
--profileフラグでAWS_PROFILE環境変数で
一時認証情報
永続認証情報の代替として、_セッション_の権限を定義できます。セッションはIAMロールを_引き受けた_とき、またはAWS IAM Identity Centerを使用してサインインしたときに作成されます。これらのセッションには、一時認証情報を検証するために使用され、AWSへのリクエストに含める必要がある追加の「セッショントークン」が付属しています。ローカルで作業している場合、これは追加の環境変数として表示されます。
一時セキュリティ認証情報を使用して、AWS CLIまたはAWS API(AWS SDKを通じて)を使用してAWSリソースへのプログラムリクエストを作成できます。一時認証情報は、IAMユーザー認証情報などの長期セキュリティ認証情報と同じ権限を提供します。ただし、いくつかの違いがあり、AWS ID and Access Management documentationで説明されています。
Identity Centerをセットアップする
以下の手順に従ってください。AWSプロファイルをセットアップしたことがない場合。
既存のプロファイルがある場合は、AmplifyBackendDeployFullAccessマネージドポリシーをIAMユーザーにアタッチしてください。
1. Amplify権限を持つユーザーを作成する
AWSコンソールにサインインしてIAM Identity Centerページにアクセスし、有効化を選択します。
ダイアログが開き、「AWSEnvironmentでIAM Identity Centerを設定する方法を選択する」というメッセージが表示されます。AWS Organizationsで有効化を選択し、続行を選択します。
次に、IAM Identity Centerコンソールでユーザーをセットアップする操作をシミュレートする一連のステップを自動化します。開始するには、コンソールフッターにあるCloudShellを開きます。
CloudShellターミナルに次のコマンドを貼り付け、このAWSアカウントに関連付けるメールアドレスを入力します:
read -p "Enter email address: " user_email # hit enterEnter email address: <your-email-address>次に、次のコマンドを実行します
response=$(aws sso-admin list-instances)ssoId=$(echo $response | jq '.Instances[0].IdentityStoreId' -r)ssoArn=$(echo $response | jq '.Instances[0].InstanceArn' -r)email_json=$(jq -n --arg email "$user_email" '{"Type":"Work","Value":$email}')response=$(aws identitystore create-user --identity-store-id $ssoId --user-name amplify-admin --display-name 'Amplify Admin' --name Formatted=string,FamilyName=Admin,GivenName=Amplify --emails "$email_json")userId=$(echo $response | jq '.UserId' -r)response=$(aws sso-admin create-permission-set --name amplify-policy --instance-arn=$ssoArn --session-duration PT12H)permissionSetArn=$(echo $response | jq '.PermissionSet.PermissionSetArn' -r)aws sso-admin attach-managed-policy-to-permission-set --instance-arn $ssoArn --permission-set-arn $permissionSetArn --managed-policy-arn arn:aws:iam::aws:policy/service-role/AmplifyBackendDeployFullAccessaccountId=$(aws sts get-caller-identity | jq '.Account' -r)aws sso-admin create-account-assignment --instance-arn $ssoArn --target-id $accountId --target-type AWS_ACCOUNT --permission-set-arn $permissionSetArn --principal-type USER --principal-id $userId# Hit enterこれが機能したことを検証するには、CloudShellで次のコマンドを実行します。このプロセスで何か失敗した場合は、**issue報告**してください。この情報は次のステップで利用できるようにしておいてください。
printf "\n\nStart session url: https://$ssoId.awsapps.com/start\nRegion: $AWS_REGION\nUsername: amplify-admin\n\n"
# you should seeStart session url: https://d-XXXXXXXXXX.awsapps.com/startRegion: us-east-1Username: amplify-adminコンソールでのステップバイステップのウォークスルー手動セットアップの方が良いですか?
-
AWSOrganizationが作成され、IAM Identity Centerが有効になった後、ダッシュボードが表示されます。ナビゲーションペインで、権限セットを選択します。
-
権限セットを作成を選択します。
-
権限セットのタイプについて尋ねられたら、カスタム権限セットを選択します。次に、次へを選択します。**AWS Managed Policies (set)**を展開して、_amplify_を検索します。AmplifyBackendDeployFullAccessを選択し、次へを選択します。
-
権限セットに_amplify-policy_という名前を付けて、必要に応じてセッション期間を変更します。次へを選択します。
-
権限セットを確認して、作成を選択します。
-
権限セットが作成されたら、IAM Identity Centerダッシュボードに戻ります。これでユーザーの作成準備ができました。ナビゲーションペインを使用して、ユーザーを選択します。
-
ユーザーの詳細を入力して、次へを選択します。
-
オプションでグループを作成してユーザーを追加し、次へを選択します。
-
ユーザー情報を確認して、ユーザーを追加を選択します。ユーザーはその後、ユーザー作成中に指定されたメールアドレスを使用してメールを確認する必要があります。
-
新しいユーザーが作成されたら、IAM Identity Centerダッシュボードに戻ります。次のステップは、ユーザーにAWSアカウントへのアクセス権を付与することです。このデモでは、Organizationの作成に使用したAWSアカウントを使用しますが、Amplify用にOrganization配下に新しいAWSアカウントを作成することもできます。管理アカウントの横にあるチェックボックスを選択して、ユーザーまたはグループを割り当てを選択します。
-
ユーザーまたはグループを割り当てるよう促されたら、ユーザータブを選択し、ステップ13で作成したユーザーを選択して、次へを選択します。
-
ステップ9で作成した権限セットを割り当てて、次へを選択します。
-
割り当て情報を確認して、送信を選択します。
-
これでアクセスポータルにサインインする準備ができました。IAM Identity Centerダッシュボードに戻ります。設定サマリーペイン内で、AWSアクセスポータルURLのURLをコピーします。
-
コピーしたURLに移動して、ユーザー_amplify-admin_としてサインインします。サインイン後、AWSアカウントにアクセスできます。
2. ユーザーのパスワードを作成する
次のステップに必要なユーザーのパスワードを作成します。IdCコンソールで、_ユーザー > amplify_admin > パスワードをリセット > パスワードをリセットするための指示をユーザーにメールで送信_に移動します。
メール(スパムフォルダも確認してください)をチェックします。_パスワードをリセット_リンクをクリックして、任意のパスワードを選択します。サインイン時は、ユーザー名として_amplify-admin_を使用してください。
ローカルセットアップを完了する
次に、作成したばかりのユーザーにリンクされたAWSプロファイルをローカルマシンにセットアップします。IAM Identity Centerユーザー認証情報を取得するためのいくつかのオプションがありますが、AWS CLI設定ウィザードを使用します。
3. AWS CLIをインストールする
AWS CLIをインストールします。
ブラウザで、macOS pkgファイルをダウンロードします:
ブラウザで、Windows(64ビット)用のAWS CLI MSIインストーラーをダウンロードして実行します:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zip./aws/install -i /usr/local/aws-cli -b /usr/local/bin4. ローカルAWSプロファイルをセットアップする
ターミナルを開きます。これでSSOユーザーを使用するAWSプロファイルを設定する準備ができました。CloudShellからの情報を使用して、以下の情報を入力します。
aws configure sso
| SSO session name (Recommended): amplify-admin| SSO start URL: <START SESSION URL>| SSO region: <your-region>| SSO registration scopes [sso:account:access]: <leave blank>| Attempting to automatically open the SSO authorization page in your default browser.| If the browser does not open or you wish to use a different device to authorize this request, open the following URL:|| https://device.sso.us-east-2.amazonaws.com/|| Then enter the code:|| SOME-CODE
## browser opensこの情報を提供すると、ブラウザが自動的に開き、作成したばかりのユーザー名とパスワードでサインインして、多要素認証デバイスを設定するよう求めます。
ここで、ターミナルに戻り、次の情報を入力します:
The only AWS account available to you is: <your-aws-account-id>Using the account ID <your-aws-account-id>The only role available to you is: amplify-policyUsing the role name "amplify-policy"CLI default client Region [us-east-1]: <your-region>CLI default output format [None]:プロファイル名をdefaultに設定してください。また、自動生成されたプロファイル名を覚えておいてください。後で必要になります。
CLI profile name [amplify-policy-<your-aws-account-id>]: defaultTo use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile default~/.aws/configを確認すると、SSOプロファイルが表示されます:
[profile default]sso_session = amplify-adminsso_account_id = <your-aws-account-id>sso_role_name = AdministratorAccessregion = <your-region>[sso-session amplify-admin]sso_start_url = https://xxxxxx.awsapps.com/start#sso_region = <your-region>sso_registration_scopes = sso:account:access5. AWSアカウントをブートストラップする
これでこのAWSプロファイルをAWS Amplifyで使用する準備ができました。Amplifyプロジェクトを開き、サンドボックスを開始します。複数のローカルプロファイルがあるか、プロファイルにdefault以外の名前を付けた場合は、--profileでプロファイルを指定できます。
npx ampx sandbox
# OR
npx ampx sandbox --profile <profile-name>クラウドサンドボックス環境でリソースのデプロイを開始する前に、Amplifyはリソースのデプロイを開始する前に、アカウントとAWSリージョンのワンタイムブートストラップセットアップを完了する必要があります。
詳細情報ブートストラップとは?
ブートストラップは、AWS CDKアプリをAWSEnvironmentにデプロイする前にリソースをプロビジョニングするプロセスです。これらのリソースには、ファイルを保存するためのAmazon S3バケットと、デプロイを実行するために必要な権限を付与するIAMロールが含まれます。必要なリソースは、通常CDKToolkitという名前のAWS CloudFormationスタック(ブートストラップスタック)で定義されます。他のAWS CloudFormationスタックと同様に、デプロイされるとAWS CloudFormationコンソールに表示されます。このプロセスの詳細はCDK documentationをご覧ください。
npx ampx sandbox --profile amplify-adminThe region us-east-1 has not been bootstrapped. Sign in to the AWS console as a Root user or Admin to complete the bootstrap process, then restart the sandbox.If this is not the region you are expecting to bootstrap, check for any AWS environment variables that may be set in your shell or use --profile <profile-name> to specify a profile with the correct region.初回セットアップ時に、npx ampx sandboxはAWSManagement Consoleにサインインするよう求めます。アカウントルートユーザー、またはアカウントAdministratorAccess権限を持つユーザーとしてサインインする必要があります。サインインすると、Amplifyコンソールにリダイレクトされます。新しいアプリを作成ページで、今すぐセットアップを初期化を選択します。ブートストラップ処理が完了するまで数分かかる場合があります。
成功
ブートストラップ処理を正常に完了しました。これでターミナルに戻って新しいAmplifyサンドボックス環境を作成できます:
npx ampx sandbox --profile <value>