左右的时间里,我一直在研究AWS服务,现在我必须通过命令行在AWS elastic beanstalk上完成一些基本工作。据我了解,构建实例上安装了aws elasticbeanstalk [命令]和eb [命令] CLI。
当我在应用程序文件夹中运行 eb 状态时,我得到以下形式的响应:
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 配置文件名称选项为我解决了问题。配置文件名称可以在 ~/.aws/config(或凭据)文件的 [配置文件配置文件名称] 行中找到。
为了验证是否在您的系统上配置了 AWS CLI,请运行aws configure
并向其提供所需的所有详细信息。这应该可以解决您的凭据问题,检查配置更改将使您能够了解当前会议的问题。
EB CLI 和 AWS CLI 具有非常相似的功能,我也对为什么它们都应该存在感到有些困惑。根据我的经验,主要区别在于 cli 用于使用简单请求与您的 AWS 账户进行交互,而 eb cli 在您和 eb envs 之间创建连接,因此可以更好地控制它们。
例如 - 我刚刚为我们的 beanstalk 应用程序开发了一个 CI/CD 管道。当我使用 eb cli 时,我可以监控我们应用程序的部署,并在完成后通知开发人员。AWS CLI 不提供该功能,唯一要实现此功能的方法就是重复查询服务,直到您收到所需的结果。
CLI 是适用于所有 AWS 资源的通用工具。它与特定的软件项目、您所在的计算机类型、您所在的目录或类似内容无关。它只需要凭证,无论它们是手动放置的(如果是您自己的计算机),还是由 AWS 生成的(如果是 EC2 实例)。
EB CLI 是用于整理软件项目的高级工具。它与您所在的目录相关联,它假定目录中的内容是您的项目,并且它具有简短的命令,可以执行大量后台工作以神奇地将所有内容放在正确的位置。