让我们比力一下 AWS、Microsoft Azure 和 Google Cloud Platform 提供的 CL ...

打印 上一主题 下一主题

主题 583|帖子 583|积分 1749

  1.   欢迎来到[雲闪世界](https://www.cloud88.xyz)。真正的开发人员会使用 CLI,至少有人告诉我是这样。这或许解释了为什么我主要使用主要云提供商的门户体验。但从大多数云提供的门户体验来看,他们也更喜欢使用 CLI。所以让我们来看看 CLI。
复制代码
具体来说,我从五个差别的方面评估了云 CLI:
API 界面和模式。有多少云是通过 CLI 公开的?是否有同等的方式与每个服务进行交互?
身份验证。用户怎样向 CLI 表明本身的身份,您能否维护差别的用户配置文件?
创建和查察服务。配置实例,然后浏览这些已配置的实例感觉怎样?
CLI 的甜味剂。CLI是否提供了一些功能,让使用 CLI 更加愉快?
实用步伐。CLI是否提供了可帮助开发人员构建或测试其软件的附加工具?
让我们深入发掘。
免责声明:我在 Google Cloud 工作,因此显然我会有一些偏见。话虽如此,我使用 AWS 已有十多年,多年来一直是 Azure MVP,在比力产品和服务时基本上可以做到公平公正。请指出我所犯的任何错误!
AWS
有几种方法可以安装 AWS CLI。您可以使用 Docker 映像,也可以直接在您的机器上安装。如果直接安装,您可以从 AWS 下载,或使用您最喜欢的包管理器。AWS 告诫您第三方存储库大概不是最新的。我继续使用 Homebrew 在我的 Mac 上安装了CLI。
API 表面和模式
正如您所期望的,AWS CLI覆盖范围很广。真的很广。我以为此中有一个 API 可以检索 Andy Jassy 最喜欢的森林猫的名字。仅EC2 命令就可以写成一本书。文档很全面,包含参数的具体择要和示例调用。
命令模式相对同等,但新旧服务之间存在一些差异。大多数服务命令如下所示:
  1. aws [服务名称] [操作] [参数]
复制代码
大多数“操纵”以创建、删除、描述、获取、列出或更新开始。
比方:
  1. aws elasticache 创建缓存集群 --engine redis
  2. aws kinesis describe-stream --stream-name seroter-stream
  3. aws kinesis describe-stream --stream-name seroter-stream
  4. aws qldb 删除分类账——名称 seroterledger
  5. aws sqs 列表队列
复制代码
S3 是原始 AWS 服务之一,其 API 有所差别cp。它使用诸如、ls和之类的命令rm。一些服务有修改命令,其他服务使用更新命令。在大多数环境下,它是直观的,但我想大多数人都猜不到这些命令。
验证
没有一种方法可以对 AWS CLI 进行身份验证。您可以使用 SSO、外部文件或内联访问密钥和 ID,就像我下面做的那样。

CLI 支持“配置文件”,这在您大概根据所进行的工尴尬刁难默认值有差别的访问权限时似乎很重要。
创建和查察服务实例
默认环境下,CLI 执行的所有操纵都发生在活动配置文件的地区中。您可以通过向每个命令传递地区标志来覆盖默认地区。请参见下文,我创建了一个没有提供地区的新 SQS 队列,并将其放入我的默认队列 (us-west-2)。通过明白传递目标地区,我在其他地方创建了第二个队列。

AWS 控制台会向您显示所选地区的资源。我看不出有什么明显的方法可以得到全面的视图。一些服务(如 S3)不受地区限制,您可以一次查察所有资源。CLI 的举动相同。我无法查察来自天下各地的所有 SQS 队列、数据库或其他任何东西。我可以按地区“列出”项目。删除举动相同。如果不提供地区标志,我就无法删除上述 SQS 队列,即使 URL 是特定于地区的。
总体而言,使用 CLI 调配、更新和列出 AWS 服务既快速又简单。只需记取按地区划分的视角!
CLI工具
AWS CLI 让您可以控制输出格式。我将配置文件的默认格式设置为 json,但您也可以使用 yaml、text 和 table。您可以根据每个请求切换此选项。
您还可以利用命令完乐成能。思量到猜测命令简直切语法大概非常棘手,这非常方便。同样,我真的很喜欢可以提示您输入参数。您无需猜测或创建长字符串,而是可以按照引导方式逐个参数进行操纵。
AWS CLI 还提供了与资源本身进行交互的精选机会。我可以发送和吸收SQS 消息。或者将项目直接放入 DynamoDB 表中。有少数服务可让您在资源中创建/更新/删除数据,但许多服务仅专注于资源本身的生命周期。
最后,我没有看到从 CLI 内部进行自我更新的方法。看起来你依赖于包管理器或重新下载来刷新它。如果我错了,请告诉我!
实用工具
CLI 似乎没有附带开发人员大概用来为 AWS 构建应用步伐的其他工具。
微软 Azure
Microsoft Azure CLI 的覆盖范围也很广,文档齐全。示例丰富,并且清楚地解释了怎样使用每个命令。
与 AWS 一样,微软在 Docker 镜像中提供了 CLI。他们还提供直接下载,或通过包管理器访问。我从Homebrew获取了我的 CLI 。
API 表面和模式
CLI 支持几乎所有重要的 Azure 服务。有些服务(如 Logic Apps 或 Blockchain)仅出现在实在行沙盒中。
命令遵循特定的语法:
  1. az [服务名称] [对象] create | list | delete | update [参数]
复制代码
让我们看几个例子:
  1. az ad app create --display-name my-ad-app
  2. az cosmosdb 列表 --资源组 group1
  3. az postgres db show --name mydb --resource-group group1 --server-name myserver
  4. az 服务总线队列删除 --name myqueue --namespace-name mynamespace --resource-group group1
复制代码
我没有发现 CLI 命令有什么差别等之处。它们似乎都遵循相同的基本模式。
验证
登录 CLI非常简单。您可以az login按照我下面的操纵进行操纵 - 这将打开一个浏览器窗口并让您登录 Azure 帐户以检索令牌 - 或者您可以传入根据。这些根据大概是用户名/密码、具有机密的服务主体或具有客户端证书的服务主体。

登录后,您将看到所有 Azure 订阅。您可以剖析 JSON 以查察哪一个处于活动状态,并将用作默认订阅。如果您希望更改默认订阅,可以使用az account set --subscription [name]选择其他订阅。
似乎没有办法创建差别的本地配置文件。
创建和查察服务实例
似乎您在 Azure 中创建的大多数内容都会放入资源组中。虽然资源组具有“位置”属性,但它与元数据有关,而不是对部署到此中的内容的限制。您可以设置默认资源组(az configure --defaults group=[name])或在每个请求上提供相干的输入参数。
与其他云差别,Azure 有许多嵌套。您有一个根帐户,然后是一个订阅,然后是一个资源组。而且大多数资源还具有父子关系,您必须先定义父子关系,然后才能现实构建所需的东西。
比方,如果您想要一个服务总线队列,则起主要创建一个命名空间。您不能同时创建两者。这是两个调用。想要一个存储 blob 来上传视频?先创建一个存储帐户。一个 Web 应用步伐来运行您的 .NET 应用步伐?提供一个筹划。无服务器功能?创建一个筹划。这并不实用于所有环境,但请留意,通常涉及多个步调。
创建活动本身相当简单。以下是创建服务总线命名空间和队列的命令
  1. az servicebus namespace create --resource-group mydemos --name seroter-demos --location westus
  2. az servicebus 队列创建--资源组 mydemos--命名空间名称 seroter-demos--名称 myqueue
复制代码
与 AWS 一样,一些 Azure 资产按地区分组。使用 Service Bus,命名空间与地理位置相干联。我看不到查询所有队列的方法,无论地区怎样。但对于许多没有查询所有队列的方法,您可以查察全球所有资源。在我创建了几个 Redis 缓存后,我的资源组中出现了一个简单的az redis list --resource-group mydemos缓存,它向我展示了美国两个差别地区的缓存。
根据您使用资源组的方式(大概是按应用步伐或按项目,乃至按团队),请留意 CLI 不会跨资源组检索效果。除了 Azure 门户之外,我不确定查察订阅范围资源的最佳策略。
CLI工具
Azure CLI 有一些方便的功能使其更易于使用。
有一个查找功能可以找出命令。有输出格式为 json、表格或 yaml。您还会发现一个有用的交互模式,可以获取主动完成、命令示例等。最后,我喜欢 Azure CLI 支持自我升级。如果没有必要,为什么要离开 CLI?
实用工具
我留意到这个 CLI 中有几项功能对开发人员有帮助。起首,有一个az rest命令,它允许您调用 Azure 服务端点,并为您处理身份验证标头。这是一个用于调用安全端点的有用工具。
Azure为 CLI提供了各种各样的扩展az extension list-available。这些扩展不是作为 CLI 本身的一部分提供的,但您可以轻松地将它们附加到 CLI 上。您也可以创建本身的扩展。这是一个不固定的列表,但向您展示了现在池中的内容。停止撰写本文时,已有预览 AKS 功能、管理 Azure DevOps、使用 DataBricks、使用 Azure LogicApps、查询 Azure Resource Graph 等扩展。
谷歌云平台
我最近才开始认真使用GCP CLI。gcloud 工具给我留下的最深刻印象是,它更像是一个系统(我敢说,平台),而不仅仅是一个 CLI。我们稍后会具体讨论这一点。
与其他云一样,您可以在受支持的 Docker 映像、包管理器或直接下载中使用 SDK/CLI 。我进行了直接下载,由于这也是一个自我更新的 CLI,以是我不想用我的包管理器创建僵尸场景。
API 表面和模式
gcloud CLI全面覆盖了GCP。我没有发现任何缺失的服务,包罗两周前推出的服务。alpha 或 beta 渠道中有一部分服务/命令可用,并且已完全集成到体验中。每个命令都有详尽的文档,包罗参数描述和示例调用。
CLI 命令遵循同等的模式:
  1. gcloud [服务] 创建 | 删除 | 描述 | 列表 | 更新 [参数]
复制代码
让我们看一些例子:
  1. gcloud bigtable 实例创建 seroterdb --display-name=seroterdb --cluster=serotercluster --cluster-zone=us-east1-a
  2. gcloud pubsub 主题描述 serotertopic
  3. gcloud 运行服务更新--memory=1Gi
  4. gcloud spanner 实例删除 myspanner
复制代码
我遇到的所有 GCP 服务都遵循相同的模式。这也是合乎逻辑的,我乃至不用查找任何东西就能猜出一些。
验证
命令gcloud auth login 触发基于 Web 的授权流程。

通过身份验证后,我会设置一个配置文件。可以今后过程开始,它会触发授权流程。调用 gcloud init 命令可以让我创建一个新的配置文件/配置,或更新现有的配置文件/配置。配置文件包罗您正在使用的帐户、您正在使用的“项目”(帐户下的顶级包装器)以及要使用的默认地区等信息。它是 CLI 中的引导过程,非常好。

这是一件小事,但我喜欢当它询问我默认地区时,它现实上向我显示了所有地区代码。对于其他云,我终极会跳回到它们的门户或文档来查察可用的值。
创建和查察服务实例
如上所述,GCP 中的所有内容都归入“项目”类别。项目与地区无关。它们用于计费目的和管理权限。这也是大多数 CLI 命令的作用范围。
配置资源非常简单。Azure 中没有嵌套,因此您可以更快地进入正题。比方,配置新的 PubSub 主题如下所示:
  1. gcloud pubsub 主题创建 richard-topic
复制代码
它快速而轻松。PubSub 没有地区归属——它是一项全球服务,就像 GCP 中的其他服务一样——以是让我们看看如果我创建更具地理感知的东西会发生什么。我创建了两个 Spanner 实例,每个实例位于差别的地区。
  1. gcloud spanner 实例创建 seroter-db1 --config=region-us-east1 --description=ordersdb --nodes=1
  2. gcloud spanner 实例创建 seroter-db2 --config=region-us-west1 --description=productsdb --nodes=1
复制代码
只需几秒钟即可完成配置,然后查询gcloud spanner instances list即可得到所有 Spanner 数据库实例,无论地区怎样。而且我可以在任何命令上使用方便的“过滤器”参数来筛选效果。

默认 CLI 命令不会跨项目提取资源,但有一个新命令可以跨项目和组织进行搜索(如果您有权限)。另请留意,Cloud Storage ( gsutil ) 和 Big Query ( bq ) 使用单独的 CLI,这些 CLI 不直接属于 gcloud。
CLI甜味剂
我之前使用过此中一种“甜味剂”:filter。它使用一种简单的表达式语言来返回效果子集。您会发现其他有用的标志,用于对效果进行排序和限制。与其他云 CLI 一样,gcloud 允许您以 json、table、csv、yaml 和其他格式返回效果。
另有一个完备的交互式 shell,提供发起、主动完成等功能。这对您学习 CLI 非常有用。
gcloud 有许多用于与服务本身交互的命令。您可以发布到 PubSub 主题、针对 Spanner 数据库执行SQL 语句,或者部署和调用无服务器函数。它并不实用于所有地方,但我喜欢它实用于许多服务。
GCP CLI 也会自我更新。我们将在下面的部分中进一步讨论这一点。
实用工具
前几段中,我说过 gcloud CLI 感觉更像一个系统。我这样说是由于它自带了许多组件。当我输入 时gcloud components list,我会看到所有选项:

我们拥有用于 Big Query 的焦点 SDK 和其他 GCP CLI,另有各种其他方便使用的工具。您拥有 Kubernetes 开发工具,比方 minikube、Skaffold、Kind、kpt 和 kubectl。此外,您还可以得到用于 Bigtable、Firestore、Spanner、PubSub 和 Spanner 等云服务的本地模拟器。
我可以安装此中的任意一个或全部,并从这里升级它们。 gcloud components update 命令可以更新所有组件,并向我显示一个不错的更改日志。

gcloud 中还包含其他较小的实用功能。我喜欢使用命令来配置 Docker以与 Google Container Registry 共同使用,或者获取 Kubernetes 集群根据并将其放入我的活动配置文件中。并打印我的身份令牌以注入到安全端点调用的身份验证标头中。
感谢关注雲闪天下。(Aws办理方案架构师vs开发人员&GCP办理方案架构师vs开发人员)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表