0

在尝试使用命名配置文件之前,如何检查它是否存在?

aws cli如果我尝试使用不存在的配置文件会抛出一个丑陋的错误,所以我想做这样的事情:

  $(awsConfigurationExists "${profile_name}") && aws iam list-users --profile "${profile_name}" || echo "can't do it!"
4

1 回答 1

1

方法 1 - 检查.aws/config文件中的条目

function awsConfigurationExists() {

    local profile_name="${1}"
    local profile_name_check=$(cat $HOME/.aws/config | grep "\[profile ${profile_name}]")

    if [ -z "${profile_name_check}" ]; then
        return 1
    else
        return 0
    fi

}

方法 2 - 检查 aws configure list 的结果,请参阅aws-cli issue #819

function awsConfigurationExists() {


    local profile_name="${1}"
    local profile_status=$( (aws configure --profile ${1} list) 2>&1)

    if [[ $profile_status = *'could not be found'* ]]; then
        return 1
    else
        return 0
    fi

}

用法


$(awsConfigurationExists "my-aws-profile") && echo "does exist" || echo "does not exist"

或者

if $(awsConfigurationExists "my-aws-profile"); then
    echo "does exist"
  else
    echo "does not exist"
  fi
于 2021-08-04T08:15:29.700 回答