🔐

aws login で発生した 400 エラーメッセージがわかりづらい

に公開

はじめに

AWS CLI の新コマンド aws login が登場し、ローカルにアクセスキー・シークレットキーを保存することなくセキュアに CLI を利用できるようになりました。
aws login コマンドは、version 2.32.0 以降のバージョンで利用可能)

詳しくは、AWS 公式やクラメソさんのブログ記事を参照ください。(いつもありがとうございます)
https://aws.amazon.com/jp/blogs/security/simplified-developer-access-to-aws-with-aws-login/
https://dev.classmethod.jp/articles/aws-cli-aws-login/

この記事では、aws login コマンドのブラウザ認証時に遭遇した 400 エラーの対処方法を備忘として記録します。

400 エラーの内容

400 Bad Request
You may have typed the address incorrectly or you may have used an outdated link.
Please clear your cookies and try the request again. If the problem persists, please contact Support. We apologize for the inconvenience.

翻訳)アドレスを誤って入力したか、古いリンクを使用している可能性があります。クッキーを削除して再度リクエストをお試しください。問題が解決しない場合はサポートまでご連絡ください。ご不便をおかけし申し訳ございません。

400 エラーの対処方法

エラーメッセージは「アドレス誤り」もしくは「古いリンクを使用」と表示されわかりづらいですが、ポリシー不足が原因です。
AWS 公式ブログにばっちり記載があるとおり、aws login コマンドを利用するには、然るべきポリシー付与が必要です。

The aws login command is controlled by two IAM actions: signin:AuthorizeOAuth2Access and signin:CreateOAuth2Token. Use the SignInLocalDevelopmentAccess managed policy or add these actions to your IAM policies to allow IAM users and IAM roles with console access to use this feature.

翻訳)aws login コマンドは、signin:AuthorizeOAuth2Accesssignin:CreateOAuth2Token の 2 つの IAM アクションによって制御されます。コンソールアクセス権を持つ IAM ユーザーおよび IAM ロールがこの機能を利用できるようにするには、SignInLocalDevelopmentAccess マネージドポリシーを使用するか、これらのアクションを IAM ポリシーに追加してください。

今回は、SignInLocalDevelopmentAccess のマネージドポリシーを付与することで無事に解消しました。

aws login のブラウザ認証に成功した記念スクショがこちら。

sts get-caller-identity コマンドの実行結果のイメージはこちら。

% aws sts get-caller-identity --profile test
{
    "UserId": "xxxxxxxxxxxxxxxxxx",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/minimal-user"
}

さいごに

用途別に限定的な権限を付与した IAM ユーザで運用している場合に遭遇する可能性があるため、誰かの参考になれば嬉しいです。
aws login コマンドを積極的に活用し、ローカル端末へのアクセスキー・シークレットキーの保存からは卒業していきたいですね。

ではでは。

GitHubで編集を提案

Discussion