我正在尝试通过创建一个 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
为什么是这样?