1

我正在尝试通过创建一个 bash 函数来自动化我的某些工作,该函数让我可以轻松地 ssm 进入我们的一个实例。为此,我只需要知道实例 ID。然后我aws ssm start-session使用正确的配置文件运行。这是功能:

function ssm_to_cluster() {
  local instance_id=$(aws ec2 describe-instances --filters \
    "Name=tag:Environment,Values=staging" \
    "Name=tag:Name,Values=my-cluster-name" \
    --query 'Reservations[*].Instances[*].[InstanceId]' \
    | grep i- | awk '{print $1}' | tail -1)
  aws ssm start-session --profile AccountProfile --target $instance_id
}

当我运行这个函数时,我总是收到如下错误:

An error occurred (TargetNotConnected) when calling the StartSession operation: "i-0599385eb144ff93c" is not connected.

但是,然后我使用该实例 ID 并直接从我的终端运行它,它可以工作:

aws ssm start-session --profile MyProfile --target i-0599385eb144ff93c

为什么是这样?

4

1 回答 1

1

您正在发送实例 ID"i-0599385eb144ff93c"而不是i-0599385eb144ff93c.

修改后的功能应该可以工作 -

function ssm_to_cluster() {
  local instance_id=$(aws ec2 describe-instances --filters \
    "Name=tag:Environment,Values=staging" \
    "Name=tag:Name,Values=my-cluster-name" \
    --query 'Reservations[*].Instances[*].[InstanceId]' \
    | grep i- | awk '{print $1}' | tail -1 | tr -d '"')
  aws ssm start-session --profile AccountProfile --target $instance_id
}
于 2019-03-17T08:12:07.300 回答