diff --git a/knowledge base/cloud computing/aws/ssm.md b/knowledge base/cloud computing/aws/ssm.md index 20b701d..f715dee 100644 --- a/knowledge base/cloud computing/aws/ssm.md +++ b/knowledge base/cloud computing/aws/ssm.md @@ -143,6 +143,24 @@ aws ssm describe-instance-associations-status --instance-id 'instance-id' > **Other shell profile configuration options**
> By default, Session Manager starts in the "/usr/bin" directory. +- **Avoid** executing SSM through commands like `xargs` or `parallel` like in the following: + + ```sh + aws ec2 describe-instances --output text --query 'Reservations[].Instances[0].InstanceId' --filters … \ + | xargs -ot aws ssm start-session --target + ``` + + The middle commands start the session correctly, but will intercept traps like `CTRL-C` and stop their own execution + terminating the SSM session. + + Prefer using the `describe-instance` command's output as input for the `start-session` command instead: + + ```sh + aws ssm start-session --target "$( \ + aws ec2 describe-instances --output text --query 'Reservations[].Instances[0].InstanceId' --filters … \ + )" + ``` + ## Integrate with Ansible Create a dynamic inventory which name ends with `aws_ec2.yml` (e.g. `test.aws_ec2.yml` or simply `aws_ec2.yml`).
diff --git a/snippets/aws/functions.fish b/snippets/aws/functions.fish index df4c44b..3014e56 100644 --- a/snippets/aws/functions.fish +++ b/snippets/aws/functions.fish @@ -45,10 +45,11 @@ alias aws-ec2-running-instanceIds "aws ec2 describe-instances --output 'text' \ --filters 'Name=instance-state-name,Values=running' \ --query 'Reservations[].Instances[0].InstanceId' \ | sed -E 's/\t+/\n/g'" -alias aws-ssm-gitlabAutoscalingManager-ita-b "aws ec2 describe-instances --output text \ +alias aws-ssm-gitlabAutoscalingManager-ita-b "aws ssm start-session --target ( \ + aws ec2 describe-instances --output text \ + --query 'Reservations[].Instances[0].InstanceId' \ --filters \ 'Name=availability-zone,Values=eu-south-1b' \ 'Name=instance-state-name,Values=running' \ 'Name=tag:Name,Values=Gitlab Autoscaling Manager' \ - --query 'Reservations[].Instances[0].InstanceId' \ -| xargs -ot aws ssm start-session --target" +)"