8 个稳定版本
1.2.2 | 2022 年 5 月 28 日 |
---|---|
1.2.1 | 2022 年 1 月 17 日 |
0.2.1 | 2021 年 12 月 30 日 |
#2036 in 命令行工具
27 monthly downloads
490KB
1.5K SLoC
aws-login
一个命令行实用程序,用于简化登录 AWS 账户和服务。
$ aws-login use
? Please select a profile to use: ›
❯ dev-read
dev-write
$ echo $AWS_PROFILE
dev-read
$ aws-login use --profile dev-write
$ echo $AWS_PROFILE
dev-write
目录
需求
- AWS CLI v2
开发
- Rust 1.57
安装
- 转到 发布页面。
- 下载适合您操作系统的版本。
- 解压发布版本。
unzip-j aws-login_linux_amd64.zip
- 使
aws-login
可执行。chmod755aws-login
- 将
aws-login
移动到您的$PATH
中的某个位置。 - 运行
aws-login shell install -s $SHELL
,其中$SHELL
是您支持的 shell。- 有关支持的 shell 的列表,请参阅
aws-login shell --help
。
- 有关支持的 shell 的列表,请参阅
- 启动新的 shell 会话。
macOS
在 macOS 的较新版本中,Gatekeeper 将阻止您运行应用程序,因为它未使用 Apple 开发者证书签名。请参阅 此指南 了解如何解决此问题。
用法
在我们深入了解应用程序的使用之前,您需要了解 AWS CLI 中的配置文件是如何工作的。官方 AWS CLI 支持使用配置文件,以便记住有关账户、角色和首选项等信息。这可以节省您每次想要做某事时提供这些信息的麻烦。
aws-login
实用程序试图充分利用 AWS CLI 配置文件。当提到“活动的 AWS CLI 配置文件”时,它意味着以下两种情况之一
AWS_PROFILE
环境变量的值。- 或“默认”。
默认情况下,使用aws-login
执行的所有操作都将使用上述位置之一中找到的配置文件,并按照列出的顺序使用。然而,与AWS CLI一样,您可以通过使用--profile
选项来更改您正在使用的配置文件。
配置 Docker 以使用 ECR
aws-login ecr
此子命令将配置Docker使用活动的AWS CLI配置文件的AWS账户中的弹性容器注册库。如果您的ECR区域与您的配置文件配置的默认区域不同,请记住使用--region
选项指定它。
配置 kubectl
以使用 EKS
aws-login eks
此子命令将提示您从活动的AWS CLI配置文件的AWS账户中找到的列表中选择一个EKS集群。一旦做出选择,kubectl
的配置将更新以支持连接到该EKS集群。在尝试之前,请记住登录,可能需要刷新凭证。
使用IAM登录到RDS代理
aws-login rds $USERNAME
此子命令将提示您从活动的AWS CLI配置文件的AWS账户中找到的列表中选择一个RDS代理。一旦做出选择,将为您的首选数据库客户端生成数据库身份验证令牌。
请注意,生成令牌几乎总是成功的,即使您没有权限访问RDS代理端点。如果认证失败,您需要检查以下几件事情
- 确保您的TLS设置匹配。
- 确保您正在使用正确的AWS CLI配置文件。
- 确保您的角色具有IAM
rds-db:connect
权限。
使用AWS SSO门户登录AWS账户
aws-login sso
此子命令将使用活动AWS CLI配置文件的AWS SSO门户设置进行身份验证。如果缺少所需的设置,您将在身份验证可以继续之前被提示提供它们。
设置和激活 AWS CLI 配置文件
aws-login use
此子命令将提示您从现有AWS CLI配置文件和可用的配置文件模板列表中进行选择。如果选择了配置文件模板,并且相应的AWS CLI配置文件尚不存在,它将自动使用模板进行配置。一旦做出选择,shell环境将修改为在shell会话期间将其作为活动的AWS CLI配置文件。
使用配置文件模板
use
子命令不仅为您提供选择现有AWS CLI配置文件的能力,而且还提供使用配置文件模板配置新AWS CLI配置文件的能力。这些模板存储在名为templates.json
的JSON文件中(位于~/.config/aws-login/
或%APPDATA\Roaming\AWS Login\
)。
这是一组配置文件模板的外观
{
"base": {
"enabled": false,
"settings": {
"output": "json",
"region": "us-east-1",
"sso_region": "us-east-1",
"sso_start_url": "https://my-sso-portal.awsapps.com/start"
}
},
"dev-read": {
"extends": "base",
"settings": {
"sso_account_id": 123456789012,
"sso_role_name": "ReadOnly"
}
},
"dev-write": {
"extends": "dev-read",
"settings": {
"sso_role_name": "Developer"
}
}
}
base
配置文件模板作为其他模板构建的基础。它提供了一些常见的设置,例如SSO门户的位置。因为这不是一个完全配置的配置文件,而是打算由其他模板使用,所以enabled
被设置为false
,这样它就不会在运行aws-login use
时列为选项。
dev-read
配置文件模板通过在extends
键下指定它来使用base
模板,并添加自己的SSO设置,使其准备好用于认证。如果dev-read
提供了自己的region
,它将覆盖基本配置文件设置的region
。
《dev-write》配置模板演示了您的配置依赖树可以深入到您需要的程度。在这个模板中,我们重用了《dev-read》(以及随之而来的《base》)中的所有设置,但覆盖了我们想使用的《sso_role_name》。
好吧,但为什么呢?
这里有一个示例场景
您是一家将所有服务托管在AWS的公司的新员工。作为入职流程的一部分,您正在设置您的工作站,以便您可以使用AWS CLI与云环境交互。而不是四处询问、搜索Confluence/Sharepoint等,或者自己摸索,您安装了《aws-login》并使用您提供的URL运行了《pull》子命令。
现在您可以直接访问各种AWS账户和服务。
下载和安装配置文件模板
您可能首先想熟悉以下内容:[设置和激活AWS CLI配置文件](#readme-setting-up-and-activating-aws-cli-profiles)
aws-login pull https://www.example.com/path/to/templates.json
此子命令将下载远程配置模板文件并存储一份副本供以后使用。如果已存在本地模板文件,您将被告知是否要将其与现有文件合并或替换它。
依赖项
~11–25MB
~398K SLoC