labunix's blog

labunixのラボUnix

aws * waitサブコマンドについて調べてみる。

■aws * waitサブコマンドについて調べてみる。
 イベントが完了されるまで待機する。
 試行回数が一定回数を超えたら、リターンコード255を返してタイムアウトする。

$ awk '/wait/{print NF | "sort -uV"}' aws-allsubcmd.txt
3

$ awk '/wait/{print $2}' aws-allsubcmd.txt | wc -l
40

■リターンコードは以下から。

$ awk '/^[0-9]*$/' return/code | grep -v "^\$"
0
1
2
130
252
253
254
255

■検索するときは以下のように。

$ cat return/code | lsec -sep "^[0-9]*$" aws

コード
意味
参考 https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-usage-returncodes.html

$ cat return/code | lsec -sep "^[0-9]*$" ^1[^0-9]
1
1 つ以上の Amazon S3 転送オペレーションが失敗しました。S3 コマンドに制限されます。

$ cat return/code | lsec -sep "^[0-9]*$" ^2[^0-9]
2
このリターンコードの意味は、コマンドによって異なります。

■waitサブコマンドを受け付けるコマンドの一覧

$ awk '/wait/{print $2}' aws-allsubcmd.txt | column
acm			docdb			elastictranscoder	lambda			rekognition
acm-pca			dynamodb		elb			machinelearning		route53
appstream		ec2			elbv2			medialive		s3api
cloudformation		ecr			emr			neptune			sagemaker
cloudfront		ecs			glacier			opsworks		schemas
cloudwatch		eks			iam			opsworks-cm		ses
deploy			elasticache		iotsitewise		rds			signer
dms			elasticbeanstalk	kinesis			redshift		ssm

■「--generate-cli-skeleton」を受け付けなかった一覧でもある。

 AWS CLIコマンドのすべてのパラメータファイルを「--generate-cli-skeleton 」で生成してみる。
 https://labunix.hateblo.jp/entry/20210207/1612701943

$ diff all-jsonlist_{to,success}.txt | \
    awk -F'<' '/</{gsub(" ","_",$2);print substr($2,2)".json",substr($2,2)".json"}' | \
    awk '{gsub("_"," ",$1); \
      print "echo -n \042# "substr($1,1,length($1)-5)" ### \042;awk \047BEGIN{a=0}{if(/[A-Za-z0-9]/){if(a==0){print $1;a=1}}}\047 "$2}' | \
    sh | nl | grep wait | nl
     1	     3	# aws acm wait ### Unknown
     2	     5	# aws acm-pca wait ### Unknown
     3	    26	# aws appstream wait ### Unknown
     4	    44	# aws cloudformation wait ### Unknown
     5	    47	# aws cloudfront wait ### Unknown
     6	    55	# aws cloudwatch wait ### Unknown
     7	   105	# aws deploy wait ### Unknown
     8	   115	# aws dms wait ### Unknown
     9	   117	# aws docdb wait ### Unknown
    10	   121	# aws dynamodb wait ### Unknown
    11	   128	# aws ec2 wait ### Unknown
    12	   132	# aws ecr wait ### Unknown
    13	   137	# aws ecs wait ### Unknown
    14	   142	# aws eks wait ### Unknown
    15	   144	# aws elasticache wait ### Unknown
    16	   146	# aws elasticbeanstalk wait ### Unknown
    17	   148	# aws elastictranscoder wait ### Unknown
    18	   151	# aws elbv2 wait ### Unknown
    19	   153	# aws elb wait ### Unknown
    20	   171	# aws emr wait ### Unknown
    21	   188	# aws glacier wait ### Unknown
    22	   204	# aws iam wait ### Unknown
    23	   219	# aws iotsitewise wait ### Unknown
    24	   237	# aws kinesis wait ### Unknown
    25	   248	# aws lambda wait ### Unknown
    26	   269	# aws machinelearning wait ### Unknown
    27	   280	# aws medialive wait ### Unknown
    28	   295	# aws neptune wait ### Unknown
    29	   300	# aws opsworks wait ### Unknown
    30	   302	# aws opsworks-cm wait ### Unknown
    31	   321	# aws rds wait ### Unknown
    32	   324	# aws redshift wait ### Unknown
    33	   327	# aws rekognition wait ### Unknown
    34	   334	# aws route53 wait ### Unknown
    35	   339	# aws s3api wait ### Unknown
    36	   352	# aws sagemaker wait ### Unknown
    37	   361	# aws schemas wait ### Unknown
    38	   373	# aws ses wait ### Unknown
    39	   376	# aws signer wait ### Unknown
    40	   382	# aws ssm wait ### Unknown

■「aws ec2 wait」のサブコマンドはaws-allsubcmd.txtに出してないので、以下で取得する。

$ awk '/wait/{print "echo \042#  "$0"\042;./aws-subcmd-list "$0}' subcmd/aws-allsubcmd.txt | sh > wait/wait-subcmd.txt

■クラスタサブコマンドの使い方。waitに渡せるのは3つ。

$ aws emr wait help | lsec E.*X.*A
EXAMPLES
       The following command  waits  until  a  cluster  with  the  cluster  ID
       j-3SD91U2E1L2QX is up and running:

          aws emr wait cluster-running --cluster-id j-3SD91U2E1L2QX



                                                                        WAIT()

$ cat wait/wait-subcmd.txt | lsec -sep "^#" emr
#  aws emr wait
cluster-running
cluster-terminated
step-complete

■ec2 waitには32個渡せる。

$ cat wait/wait-subcmd.txt | lsec -sep "^#" ec2 | awk '{printf "%3d %s\n",(NR-1),$0}'
  0 #  aws ec2 wait
  1 bundle-task-complete
  2 conversion-task-cancelled
  3 conversion-task-completed
  4 conversion-task-deleted
  5 customer-gateway-available
  6 export-task-cancelled
  7 export-task-completed
  8 image-available
  9 image-exists
 10 instance-exists
 11 instance-running
 12 instance-status-ok
 13 instance-stopped
 14 instance-terminated
 15 key-pair-exists
 16 nat-gateway-available
 17 network-interface-available
 18 password-data-available
 19 security-group-exists
 20 snapshot-completed
 21 spot-instance-request-fulfilled
 22 subnet-available
 23 system-status-ok
 24 volume-available
 25 volume-deleted
 26 volume-in-use
 27 vpc-available
 28 vpc-exists
 29 vpc-peering-connection-deleted
 30 vpc-peering-connection-exists
 31 vpn-connection-available
 32 vpn-connection-deleted