使用控制台凭证登录以进行 Amazon 本地开发
您可以使用现有的 Amazon 管理控制台登录凭证以编程方式访问 Amazon 服务。在基于浏览器的身份验证流程之后,Amazon 会生成可在各种本地开发工具(例如 Amazon CLI、Amazon Tools for PowerShell 和 Amazon SDK)中使用的临时凭证。此功能简化了配置和管理 Amazon CLI 凭证的过程,尤其适合您更希望使用交互式身份验证而不是管理长期访问密钥的情况。
通过此身份验证流程,您可以使用在初始账户设置期间创建的根凭证、IAM 用户或来自身份提供商的联合身份进行身份验证,Amazon CLI 会自动为您管理临时凭证。这种方法无需在本地存储长期凭证,从而增强了安全性。
运行 aws login 命令时,您可以从活动控制台会话中进行选择,也可以通过基于浏览器的身份验证流程登录,这将自动生成临时凭证。CLI 将自动刷新这些凭证,时间最长可达 12 小时。
在配置后,您的会话即可在 Amazon CLI 以及其他 Amazon SDK 和工具中使用。
先决条件
-
安装 Amazon CLI。有关更多信息,请参阅 安装或更新最新版本的 Amazon CLI。最低需要版本 2.32.0 才能使用
aws login命令。 -
以根用户和 IAM 用户身份或通过 IAM 联合身份验证登录 Amazon 管理控制台的访问权限。如果您使用 IAM Identity Center,请转到使用 Amazon CLI 配置 IAM Identity Center 身份验证。
-
确保 IAM 身份具有适当的权限。将 SignInLocalDevelopmentAccess 托管式策略附加到您的 IAM 用户、角色或组。如果您以根用户身份登录,则不需要额外的权限。
使用 aws login 命令登录 Amazon CLI。
运行 aws login 命令以使用您现有的 Amazon 管理控制台凭证进行身份验证。如果您之前未配置过配置文件,系统会提示您提供额外的信息。要登录或配置配置文件,请按照以下步骤操作。
-
在首选终端中运行
aws login命令。$ aws login要登录到指定的配置文件或者创建新配置文件,请使用
--profile选项。$ aws login --profile my-dev-profile-
如果这是新配置文件或者未指定 Amazon 区域,Amazon CLI 会提示您提供一个区域。
No Amazon region has been configured. The Amazon region is the geographic location of your Amazon resources. If you've used Amazon 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`. Amazon Region [us-east-1]: -
如果使用 Amazon CLI 的设备不具有浏览器,您可以使用
--remote选项提供一个 URL,以便在启用浏览器的设备上打开。$ aws login --remote
-
-
Amazon CLI 会尝试打开您的默认浏览器,以便开始您的 Amazon 账户的登录过程。
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 是唯一 URL,开头为 https://us-east-1.signin.amazonaws.com/authorize. 登录上浏览器后,您需要复制生成的授权码并粘贴回 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:
-
-
在浏览器中显示的列表内,选择要使用的凭证,然后返回到您的终端。
-
如果您正在配置的配置文件有一个先前配置的登录会话,而该会话与您的新会话不匹配,Amazon 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
使用您的配置文件运行命令
登录后,您可以使用您的凭证通过关联的配置文件来调用 Amazon CLI 命令。以下示例使用 default 配置文件调用 get-caller-identity 命令:
$ aws sts get-caller-identity
要登录特定会话,请使用 --profile 选项。
$ aws sts get-caller-identity --profilemy-dev-profile
Amazon CLI 和 SDK 将根据需要每 15 分钟自动刷新一次缓存的凭证。整个会话的有效时间将持续到 IAM 主体设置的会话时长(最长 12 小时),之后您必须重新运行 aws login。
使用 aws 注销命令退出会话
使用完会话后,您可以让您的凭证过期,或者运行 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 环境变量。
将登录凭证共享为进程凭证
旧版本的 Amazon SDK 或其他开发工具可能尚不支持控制台凭证。一种解决方法是,您可以配置 Amazon CLI 作为进程凭证提供者。CLI 将根据需要继续刷新凭证,同时将凭证共享给配置为使用 credential_process 配置文件的工具。
在此示例中,首先使用 Amazon 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
问题排查
此页面中包含一些问题的故障排除建议,使用 Amazon CLI 控制台凭证登录进行 Amazon 本地开发时可能遇到这些问题。
注意
要解决使用 Amazon CLI 时可能遇到的其他问题,请参阅排查 Amazon CLI 错误。
使用“aws login”后出现 ExpiredToken 或 AccessDeniedException 错误
在为给定配置文件运行 aws login 后执行 Amazon 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 列的值不是 login,这意味着目标配置文件中仍然设置了其他类型的凭证。
在此示例中,凭证是从主目录中的共享凭证文件中解析的,该文件优先于登录凭证。
$ 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 时,您可能会遇到防火墙软件弹出窗口或消息,阻止 Amazon CLI 访问您的网络
可能的原因:您的防火墙或安全软件阻止了 Amazon CLI 打开用于处理 OAuth 回调的端口。
为避免此问题,请改用 --remote 选项。这将提示您复制并粘贴授权码,而不是使用 OAuth 回调。
$ aws login --remote
相关资源
其他资源如下所示。