#aws-cli #aws #login #command-line-tool #环境变量

应用 aws-login

一个命令行实用程序,用于简化登录 AWS 账户和服务。

8 个稳定版本

1.2.2 2022 年 5 月 28 日
1.2.1 2022 年 1 月 17 日
0.2.1 2021 年 12 月 30 日

#2036 in 命令行工具

27 monthly downloads

ISC 许可证

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

安装

  1. 转到 发布页面
  2. 下载适合您操作系统的版本。
  3. 解压发布版本。
    • unzip-j aws-login_linux_amd64.zip
  4. 使 aws-login 可执行。
    • chmod755aws-login
  5. aws-login 移动到您的 $PATH 中的某个位置。
  6. 运行 aws-login shell install -s $SHELL,其中 $SHELL 是您支持的 shell。
    • 有关支持的 shell 的列表,请参阅 aws-login shell --help
  7. 启动新的 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代理端点。如果认证失败,您需要检查以下几件事情

  1. 确保您的TLS设置匹配。
  2. 确保您正在使用正确的AWS CLI配置文件。
  3. 确保您的角色具有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