在 AWS CLI 的惯用 Bash 中,如何'create' AWS 资源,然后'wait'(获取/描述)给定状态的所述资源?



我想了解习惯的Bash(即Bash相当于'Pythonic')方式与AWS CLI创建AWS资源(说AWS Cloud9 EC2环境),然后'poll'/'等待'/'睡眠'为该资源达到一定的状态;当AWS资源达到给定状态时,命令完成,用户可以将命令输入回shell。

输入

[cloudshell-user@ip-10-10-10-10 ~]$ #an idiomatic Bash one-liner that combines 'aws cloud9 create-environment-ec2 --name this-resource-will-take-a-moment-to-create --instance-type t2.micro' and 'aws cloud9 describe-environments --environment-ids tHiSiDwAsThEoUtPuToFtHePrEvIoUsCoMmAnD'

一段时间后,用户将看到

[cloudshell-user@ip-10-10-10-10 ~]$ #an idiomatic Bash one-liner that combines 'aws cloud9 create-environment-ec2 --name this-resource-will-take-a-moment-to-create --instance-type t2.micro' and 'aws cloud9 describe-environments --environment-ids tHiSiDwAsThEoUtPuToFtHePrEvIoUsCoMmAnD'
[cloudshell-user@ip-10-10-10-10 ~]$

此时AWS Cloud9 EC2环境已达到给定状态。

由于创建(创建-,启动-等)/等待(获取-/描述-)模式在AWS服务API调用和相应的AWS CLI命令中是常见的,因此只要对其他服务进行微小的更改,这个单行程序应该是可重用的。

Bash一行程序将在CloudShell中使用,但应该可以移植到其他Bash安装中。

我已经阅读了关于&&sleep的内容,但是我想知道如何将这些命令(或任何替代命令)集成到一个惯用的Bash一行程序中。此外,我还担心不会违反AWS api的任何限制或请求限制。

正如jarmod评论的'boto3侍者',我进一步研究了AWS CLI的Github问题,发现了这个问题

为CLI提供动力的底层库botocore已经通过一个称为"waiters"的概念具有此功能,这是一种数据驱动的方式,用于描述等待资源达到特定状态…我们只需要想出一个合适的API来在CLI中公开它。

该功能是在aws-cli中实现的,但是每个服务必须在自己的服务中使用该功能。

在撰写本文时,aws的Cloud9部分不支持等待。

相关内容

  • 没有找到相关文章

最新更新