对于AWS CLI describe-instances,在null返回时显示错误消息

时间:2017-02-08 18:36:55

标签: bash amazon-web-services amazon-ec2 aws-cli

我有一个bash脚本,根据用户的参数调用各种实例的IP。现在,如果他们的查询与脚本不匹配,则根本不返回任何内容,甚至不返回null。我喜欢结合某种错误处理来提示用户重试。这可以是从内置AWS功能到自定义错误消息的任何内容,我不挑剔。

我的脚本如下;

#!/usr/bin/env bash
set -e

#READ ARGUMENTS PASSED IN - expects stack name
if [ "$#" != 1 ]; then
    echo "Illegal number of parameters.  Expecting 1: stack name"
    exit 1
fi

name=$1

aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text

如果成功,我会得到像

这样的东西
00.00.00.000
name-of-instance

但如果失败我什么也得不到。

如果aws describe-instances没有返回匹配项,是否有提示用户或以其他方式显示错误消息的方法?

2 个答案:

答案 0 :(得分:2)

首先将输出捕获到变量中:

output=$(aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text)

然后检查output的内容。如果有什么东西只是回应它到屏幕上。如果没有,请显示您的自定义错误消息。

答案 1 :(得分:2)

output=`aws ec2 describe-instances --query "Reservations[].Instances[].[PublicIpAddress,Tags[?Key=='Name'].Value]" --filter Name=tag:Name,Values=${name} --output text`

if [ -n "$output" ]; then
    echo "$output"
else
    echo "No such instance $name exists"
fi