コンソール認証情報を使用して AWS ローカル開発にログインする
既存の AWS マネジメントコンソールのサインイン認証情報を使用して、AWS サービスにプログラムでアクセスできます。ブラウザベースの認証フローの後、AWS は AWS CLI、AWS Tools for PowerShell、AWS SDK などのローカル開発ツールで動作する一時的な認証情報を生成します。この機能は、特に長期的なアクセスキーの管理よりもインタラクティブな認証を希望する場合、AWS CLI 認証情報の設定と管理のプロセスを簡素化します。
このプロセスでは、最初のアカウント設定時に作成されたルート認証情報、IAM ユーザー、または ID プロバイダーからのフェデレーティッド ID を使用して認証でき、AWS CLI によって一時的な認証情報が自動的に管理されます。このアプローチにより、長期的な認証情報をローカルに保存する必要がなくなるため、セキュリティが強化されます。
aws login コマンドを実行すると、アクティブなコンソールセッションから選択することも、ブラウザベースの認証フローを使用してサインインすることもできます。これにより、一時的な認証情報が自動的に生成されます。CLI は、これらの認証情報を最大 12 時間自動的に更新します。
設定が完了すると、セッションは AWS CLI およびその他の AWS SDK およびツールで使用できます。
トピック
前提条件
-
AWS CLI をインストールします。詳細については、「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。
aws loginコマンドを使用するには、2.32.0 以降のバージョンが必要です。 -
ルートユーザー、IAM ユーザー、または IAM とのフェデレーションを通じて AWS マネジメントコンソールにサインインするためのアクセス。IAM Identity Center を使用する場合は、代わりに「AWS CLI を使用した IAM アイデンティティセンター認証の設定」を参照してください。
-
IAM ID に適切なアクセス許可があることを確認します。SignInLocalDevelopmentAccess 管理ポリシーを IAM ユーザー、ロール、またはグループにアタッチします。ルートユーザーとしてサインインする場合、追加のアクセス許可は必要ありません。
aws login コマンドを使用して AWS CLI にログインします。
aws login コマンドを実行して、既存の AWS マネジメントコンソール認証情報を使用して認証します。以前にプロファイルを設定していない場合は、追加情報の入力を求められます。プロファイルにサインインまたは設定するには、以下の手順に従います。
-
任意のターミナルで
aws loginコマンドを実行します。$ aws login名前付きプロファイルにサインインするか、新しいプロファイルを作成するには、
--profileオプションを使用します。$ aws login --profile my-dev-profile-
これが新しいプロファイルであるか、AWS リージョンが指定されていない場合、AWS CLI はリージョンを指定するように求めます。
No AWS region has been configured. The AWS region is the geographic location of your AWS resources. If you've used AWS before and already have resources in your account, tell us which region they were created in. If you haven't created resources in your account before, you can pick the region closest to you: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. You are able to change the region in the CLI at any time with the command `aws configure set region NEW_REGION`. AWS Region [us-east-1]: -
AWS CLI を使用するデバイスにブラウザがない場合は、
--remoteオプションを使用して、ブラウザ対応デバイスで開くための URL を指定できます。$ aws login --remote
-
-
AWS CLI は、AWS アカウントのサインインプロセスを行うためのデフォルトのブラウザを開きます。
Attempting to open the login page for `us-east-1` in your default browser. If the browser does not open, use the following URL to complete your login: https://signin.us-east-1.amazonaws.com/authorize?<abbreviated> If you cannot connect to this URL, make sure that you have specified a valid region.-
--remoteオプションを使用した場合、使用している認可のタイプに基づいて、サインインプロセスを手動で開始する手順が表示されます。表示される URL は、https://us-east-1.signin.amazonaws.com/authorize. で始まる一意の URL です。ブラウザのログインが完了したら、結果の認可コードをコピーして CLI に貼り付ける必要があります。Browser will not be automatically opened. Please visit the following URL: https://region.signin.amazonaws.com/authorize?<abbreviated> Please enter the authorization code displayed in the browser:
-
-
ブラウザで、表示されたリストから使用する認証情報を選択し、ターミナルに戻ります。
-
設定しているプロファイルに、新しいセッションと一致しない以前に設定されたログインセッションがある場合、既存のプロファイルに対応するセッションを切り替えていることを確認するように AWS CLI から求められます。
Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly. Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admininstead? (y/n):.
-
-
最後のメッセージは、完了したプロファイル設定について説明しています。これで、このプロファイルを使用して認証情報をリクエストできます。
aws loginコマンドを使用して、コマンドを実行するために必要な認証情報をリクエストして取得します。認証トークンは、解決されたプロファイルに基づいたファイル名を使用して、
.aws/login/cacheディレクトリの下のディスクにキャッシュされます。
生成された設定ファイル
これらのステップを実行すると、config ファイルに次のような default プロファイルが作成されます。
[default] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1
プロファイルでコマンドを実行する
サインインしたら、認証情報を使用して、関連付けられたプロファイルで AWS CLI コマンドを呼び出すことができます。次の例は、default プロファイルを使用する get-caller-identity コマンドを示しています。
$ aws sts get-caller-identity
特定のセッションにサインインするには、--profile オプションを使用します。
$ aws sts get-caller-identity --profilemy-dev-profile
AWS CLI と SDK は、必要に応じて 15 分ごとにキャッシュされた認証情報を自動的に更新します。セッション全体は、IAM プリンシパルの設定セッション期間 (最大 12 時間) まで有効です。その後、aws login を再度実行する必要があります。
aws logout コマンドを使用してセッションからサインアウトする
セッションの使用が完了したら、認証情報の有効期限が切れるのを待つか、aws logout コマンドを実行してキャッシュされた認証情報を削除することができます。コマンドラインまたは AWS_PROFILE 環境変数でプロファイルが指定されていない場合、コマンドはデフォルトのプロファイルからサインアウトします。次の例では、デフォルトプロファイルからサインアウトします。
$ aws logout
特定のセッションからサインアウトするには、--profile オプションを使用します。
$ aws logout --profilemy-dev-profile
ログイン認証情報を使用するすべてのプロファイルからサインアウトするには、--all オプションを使用します。
$ aws logout --all
キャッシュされた認証情報
一時キャッシュされた認証情報と更新に必要なメタデータは、デフォルトで Linux および macOS の ~/.aws/login/cache、または Windows の %USERPROFILE%\.aws\login\cache に保存されます。
短期の認証情報キャッシュを別の場所に保存するには、AWS_LOGIN_CACHE_DIRECTORY 環境変数を設定します。
プロセス認証情報としてのログイン認証情報の共有
AWS SDK やその他の開発ツールの古いバージョンでは、コンソール認証情報がまだサポートされていない場合があります。回避策として、プロセス認証情報プロバイダーとして機能するように AWS CLI を設定できます。CLI は、Credential_process プロファイルを使用するように設定されたツールと共有しながら、必要に応じて認証情報を更新し続けます。
この例では、AWS CLI を使用してプロファイルサインインのために最初にログインします。
$ aws login --profile signin
次に、サインインプロファイルを指す credential_process オプションを使用してプロファイルを手動で設定します。これで、プロセスプロファイルを使用するように SDK またはツールを設定できます。これにより、CLI が呼び出され、サインインプロファイルから認証情報を共有します。
[profile signin] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1 [profile process] credential_process = aws configure export-credentials --profile signin --format process region = us-east-1
トラブルシューティング
このページには、AWS CLI のコンソール認証情報を使用した AWS ローカル開発のログインに関する問題のトラブルシューティングに関する推奨事項が含まれています。
注記
AWS CLI を使用して発生する可能性のあるその他の問題のトラブルシューティングについては、「AWS CLI のエラーのトラブルシューティング」を参照してください。
「aws login」を使用した後の ExpiredToken または AccessDeniedException エラー
特定のプロファイルに対して aws login を実行した後に AWS CLI コマンドを実行すると、期限切れまたは無効な認証情報エラーが発生する可能性があります。
$ aws s3 ls An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
考えられる原因: そのプロファイルに既存の認証情報と新しいログイン認証情報が混在している
aws configure list または aws configure list --profile <profile name> を実行して、CLI がデフォルトまたは指定されたプロファイルの認証情報を解決する場所を出力します。
TYPE 列がログイン以外のものである場合は、ターゲットプロファイルに別のタイプの認証情報が設定されていることを意味します。
この例では、ログイン認証情報よりも優先されるホームディレクトリの共有認証情報ファイルから認証情報が解決されています。
$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : shared-credentials-file : secret_key : ****************EKEY : shared-credentials-file : region : us-east-1 : config-file : ~/.aws/config
これに対処するには、ターゲットプロファイルの設定と認証情報ファイルから既存の認証情報を手動で削除します。これを行うと、aws configure list 再実行時にログイン認証情報が表示されます。
$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : login : secret_key : ****************EKEY : login : region : us-east-1 : config-file : ~/.aws/config
または、--debug オプションを使用すると、CLI が認証情報を解決する場所が表示されます。
「aws login」の実行時にファイアウォールがネットワークアクセスをブロックする
aws login の実行中に、AWS CLI がネットワークにアクセスできないポップアップやファイアウォールソフトウェアからのメッセージが表示されることがあります。
考えられる原因: ファイアウォールまたはセキュリティソフトウェアが AWS CLI が OAuth コールバックの処理に使用されるポートを開くのを妨げています。
この問題を回避するには、代わりに --remote オプションを使用します。これにより、OAuth コールバックを使用する代わりに、認可コードをコピーして貼り付けるよう求められます。
$ aws login --remote
関連リソース
その他のリソースは次のとおりです。