何时使用 AWS CLI 和 EB CLI

When to use AWS CLI and EB CLI

一个多月以来,我一直在研究 AWS 服务,现在我必须通过命令行在 AWS elastic beanstalk 上完成一些基本的工作。据我了解,构建实例上安装了 aws elasticbeanstalk [command]eb [command] CLI。

当我在应用程序文件夹中 运行 eb status 时,我得到以下形式的响应:

Environment details for: app-name
Application name: app-name
Region: us-east-1
Deployed Version: app-version
Environment ID: env-name
Platform: 64bit Amazon Linux ........
Tier: WebServer-Standard
CNAME: app-name.elasticbeanstalk.com
Updated: 2016-07-14 .......
Status: Ready
Health: Green

这告诉我 eb init 已经 运行 用于应用程序。

另一方面,如果我 运行:

aws elasticbeanstalk describe-application-versions --application-name app-name --region us-east-1

我收到错误:

Unable to locate credentials. You can configure credentials by running "aws configure".

在当前用户的主文件夹中有一个 .aws 目录,其中包含一个包含 [profile] 行和 aws_access_key_id 的凭证文件,并且 aws_secret_access_key行全部设置好。

除了明显的凭据问题外,我真正缺乏的是对这两个 cli 的理解。为什么 EB cli 不要求凭证而 AWS cli 要求?我什么时候使用一个或另一个?我可以只使用 aws cli 吗?对此事的任何澄清将不胜感激。

编辑:

对于最终来到这里且遇到与 "Unable to locate credentials" 相同问题的任何人。添加 --profile profile-name 选项解决了我的问题。 profile-name 可以在 [profile profile-name] 行的 ~/.aws/config(或凭据)文件中找到。

为了验证您的系统上是否配置了 AWS CLI 运行 aws configure 并向其提供所需的所有详细信息。这应该可以解决您的凭据问题,检查配置更改将使您了解当前的 conf 有什么问题。

eb cli 和 aws cli 具有非常相似的功能,我也有点困惑为什么它们都应该存在。根据我的经验,主要区别在于 cli 用于使用简单请求与您的 AWS 帐户进行交互,而 eb cli 在您和 eb envs 之间创建连接,因此可以更好地控制它们。

例如 - 我刚刚为我们的 beantalk 应用程序开发了一个 CI/CD 管道。当我使用 eb cli 时,我可以监控我们应用程序的部署并在完成时通知开发人员。 aws cli 不提供该功能,实现该功能的唯一方法是重复查询服务,直到您收到所需的结果。

AWS CLI 是适用于所有 AWS 资源的通用工具。它不依赖于特定的软件项目、您所在的机器类型、您所在的目录或类似的东西。它只需要凭据,如果是您自己的机器,则它们是手动放置的,如果是 EC2 实例,则由 AWS 生成。

EB CLI 是一种高级工具,可将您的软件项目安排到位。它与您所在的目录相关联,它假定您目录中的内容就是您的项目,并且它有一些简短的命令,可以执行大量后台工作以神奇地将所有内容放在正确的位置。