[小ネタ] AWS Tools for PowerShellにもaws login相当のコマンドレットがあります
しばたです。
タイトル通りの話ではあるのですが意外と言及している人が少なかったので本記事で語ろうと思います。
aws login, aws logout コマンド
先月のre:Invent 2025直前に発表されたaws login(およびaws logout)コマンドはWEBブラウザベースの認証とPKCEを使用したOAuth 2.0による認可によりIAMアクセスキーの保存無しにAWS CLI等のツールが使える便利なコマンドです。
細かい話は以下の記事をご覧ください。
名前の通りaws loginコマンドで認証・認可を行い、一時的なアクセストークンをキャッシュして利用します。
aws logoutコマンドではキャッシュされたトークンを削除することでログアウト相当の処理を行います。
Invoke-AWSLogin, Invoke-AWSLogout コマンドレット
AWS Tools for PowerShellにもaws login、aws logoutと同等のコマンドレットがあり、それぞれ
になります。
両コマンドはVer.5.0.101から使用可能となっておりAWS.Tools.Commonモジュールに属する形となっています。
このため対応バージョンであれば初期インストール時点ですぐ使える形となっています。
ちなみにAWS Tools for PowerShell v4系にはこれらのコマンドはバックポートされていませんが、この点に関してはAWS Tools for PowerShell v4自体のサポート終了が近いので特に問題にはならないでしょう。
コマンドレットの使い方と挙動はAWS CLIとほとんど同じでキャッシュも両者同じものを使い共用可能でした。
このため、実際にやるかは別として、AWS CLIとAWS Tools for PowerShell両方インストール済みの環境において「aws loginでログイン、Invoke-AWSLogoutでログオフ」、「Invoke-AWSLoginでログイン、aws logoutでログオフ」といったことも可能だったりします。
リージョン指定の挙動だけは異なる
ただ、AWS CLIとAWS Tools for PowerShellでデフォルトリージョン指定の仕様が異なるため微妙に挙動も変わります。
AWS Tools for PowerShellでは現在最新のv5においてもAWS共有認証情報ファイルに記載されたデフォルトリージョン指定が非サポートです。
# AWS Tools for PowerShellではプロファイル中に記載されたリージョン指定は無効(=参照されない)
[profile test_profile]
region=ap-northeast-1
このためデフォルトリージョン指定で各種コマンドレットを使う際はAWS_REGION環境変数やSet-DefaultAWSRegionコマンドを使用する必要があります。
# AWS_REGION 環境変数でデフォルトリージョンを指定
$env:AWS_REGION="ap-northeast-1"
# Set-DefaultAWSRegion コマンドを使ってデフォルトリージョンを指定
Set-DefaultAWSRegion -Region ap-northeast-1
しかしながらInvoke-AWSLoginだけはaws loginと同等の挙動にするためにプロファイル中のリージョン指定が有効になっており、サインインエンドポイント(https://<リージョン名>.signin.aws.amazon.com/)のリージョンを決めるため だけ に使われます。
これにより「Invoke-AWSLoginはエラーなく完了したが、その後のコマンド実行でリージョン未指定エラー」になる場合があるので注意してください。
リージョン未指定エラーが出た際はAWS_REGION環境変数を設定するかSet-DefaultAWSRegionコマンドを使用してください。
なお、リージョン選択の優先度としてはAWS_REGION環境変数やSet-DefaultAWSRegionコマンドによる指定の方が高いのでInvoke-AWSLoginを実施する前に先にデフォルトリージョンを指定しておく方が良いでしょう。
試してみた
ここからは実際に試していきます。
私の開発用PC(Windows 11 24H2)にPowerShell 7.5.4とAWS Tools for PowerShell 5.0.129をインストールして動作確認します。
AWS Tools for PowerShellのインストール手順は割愛します。

記事公開時点で最新のPowerShellとAWS Tools for PowerShellをインストール済み
はじめにInvoke-AWSLogin、Invoke-AWSLogoutコマンドがインストール済みであることを確認しておきます。

ちゃんとありますね。
(ちなみに上図にあるInvoke-AWSSSOLogin、Invoke-AWSSSOLogoutは従来から存在するaws sso login、aws sso logout相当のコマンドレットです。)
ここから最初にリージョン指定をしておき、そのうえでInvoke-AWSLoginコマンドを実行するとWEBブラウザが起動し認証ページが表示されます。


こちらから認証してやるとローカル環境にアクセストークンが渡され、

各種コマンドが期待したとおり動作します。


サインインした時点でAWS共有認証情報ファイルにセッション情報が追記される挙動もaws loginと同じです。
# Invoke-AWSLoginコマンド実行後に追記される設定内容 : aws loginコマンドと同じ
[default]
login_session=arn:aws:sts::xxxxxxxxxxxx:assumed-role/xxxxxxxxxx/xxxxxxxxxx
region=ap-northeast-1
Invoke-AWSLogoutコマンドを実行すると認証情報(キャッシュ)の削除に対する確認メッセージが表示され、Yesを選択するとキャッシュが削除されます。

処理内容としてはaws logoutと同じですが、デフォルトで確認メッセージが出る点は挙動が異なります。
確認メッセージ無しにキャッシュを削除したい場合は-Confirm:$falseパラメーターを指定してください。
# -Confirm:$false を指定し確認メッセージ無しにキャッシュを削除
Invoke-AWSLogout -Confirm:$false
ちなみに類似パラメーターとなる-Forceはありませんでした。
その他オプションについて
今回はdefaultプロファイルで試しましたが、利用プロファイルを明示するときは-ProfileNameパラメーターを指定します。
また、クロスデバイスフローによる認証認可を行う場合は-Remoteパラメーターを指定します。
# プロファイルを明示的に指定
Invoke-AWSLogin -ProfileName your_profile
# クロスデバイスフローで認証認可
Invoke-AWSLogin -Remote
さらにInvoke-AWSLogoutですべてのキャッシュを削除する場合は-Allパラメーターを指定します。
# すべてのキャッシュを削除
Invoke-AWSLogout -All
この辺の指定方法もaws login、aws logoutと同様ですね。
最後に
以上となります。
ちょっとした小ネタですがAWS Tools for PowerShellを使う方は覚えておいて損はないと思います。






