aws cli:ssm 启动会话不使用变量作为参数值
aws cli: ssm start-session not working with a variable as a parameter value
我正在尝试通过创建一个 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 }' | 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
这是为什么?
您发送的实例 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 }' | tail -1 | tr -d '"')
aws ssm start-session --profile AccountProfile --target $instance_id
}
我正在尝试通过创建一个 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 }' | 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
这是为什么?
您发送的实例 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 }' | tail -1 | tr -d '"')
aws ssm start-session --profile AccountProfile --target $instance_id
}