何时使用 AWS CLI 和 EB CLI

11

大约一个月前,我一直在学习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 吗?任何关于此事的澄清将不胜感激。

编辑:

对于任何遇到“无法找到凭据”问题的人,添加 --profile profile-name 选项已解决我的问题。 profile-name 可在 ~/.aws/config(或凭证)文件中的 [profile profile-name] 行中找到。


你后来的编辑为我解决了问题。谢谢! - dpurrington
2个回答

6
AWS CLI是一个通用工具,适用于所有AWS资源。它不与特定软件项目、您所在的机器类型、您所在的目录或任何类似的东西绑定。它只需要凭据,无论是手动放置在自己的计算机上还是由AWS生成(如果是EC2实例)。
EB CLI是一个高级工具,可将您的软件项目整理到正确位置。它与您所在的目录绑定,假设您目录中的内容就是您的项目,并且它有短命令,可以执行许多后台工作,神奇地将所有东西放置在正确的位置。

啊...所以eb CLI就像npm、serverless、terraform和许多其他工具,它们假定正在运行的是“项目”目录。我之前没有注意到这个区别,谢谢! - fool4jesus

5
为验证AWS CLI是否配置在您的系统上,请运行aws configure并提供它需要的所有详细信息。这应该可以解决您的凭据问题,检查配置更改将帮助您了解当前配置存在什么问题。
eb cli和aws cli具有非常相似的功能,我也有点困惑它们为什么都应该存在。从我的经验来看,主要区别在于cli用于使用简单请求与您的AWS帐户交互,而eb cli会创建您与环境之间的连接,因此允许更精细地控制它们。
例如 - 我刚刚为我们的beanstalk应用程序开发了CI/CD流水线。当我使用eb cli时,我可以监视我们的应用程序部署并在完成后通知开发人员。aws cli不提供该功能,唯一实现该功能的方法是重复查询服务,直到收到所需的结果。

谢谢您的解释。就像我说的,这对我来说还太新了,仍然非常困惑。 - ERIK_SON
很酷,你可以边学边做。随时提出任何问题,这就是SO的用途。 - Yaron Idan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接