尝试运行第二个命令时,在 bash 脚本中运行 AWS 服务会产生错误,我做错了吗?
Posted
技术标签:
【中文标题】尝试运行第二个命令时,在 bash 脚本中运行 AWS 服务会产生错误,我做错了吗?【英文标题】:Running AWS services in bash script creates an error when trying to run the second command, am I doing something wrong? 【发布时间】:2021-07-07 06:50:19 【问题描述】:所以我有一个 bash 脚本,它运行一些 AWS 命令来启动 ECS 服务,然后我想向它附加一些自动缩放策略,但我收到了一个错误。我不确定这是否与 AWS 服务 CLI 有任何关系,或者我在 bash 中运行不正确,根据 AWS 文档,语法上看起来不错。
代码如下:
aws ecs create-service \
--cluster $1 \
--service-name $2 \
--task-definition $3:$4 \
--desired-count $DESIRED_COUNT \
--launch-type FARGATE \
--platform-version LATEST \
--network-configuration "awsvpcConfiguration=subnets=[$SUBNETS[0]$SUBNETS[1]$SUBNETS[2]],securityGroups=[$SECURITY_GROUPS],assignPublicIp=ENABLED" \
--service-registries registryArn=$SERVICE_DISCOVERY_ARN \
--load-balancers targetGroupArn=$BACKEND_TARGETGROUP,containerName=$BACKEND_CONTAINERNAME,containerPort=$BACKEND_CONTAINERPORT \
--profile $PROFILE
echo "============ Now creating $2 service auto-scaling policies ============"
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id "service/$CLUSTER/$BACKEND_SERVICE" \
--min-capacity $MINIMUM_APP_COUNT --max-capacity $MAXIMUM_APP_COUNT
aws application-autoscaling put-scaling-policy
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id "service/$CLUSTER/$BACKEND_SERVICE" \
--policy-name "$CLUSTER_scale_up" --policy-type StepScaling \
--step-scaling-policy-configuration file://stepScalingUpPolicy.json
aws application-autoscaling put-scaling-policy
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id "service/$CLUSTER/$BACKEND_SERVICE" \
--policy-name "$CLUSTER_scale_down" --policy-type StepScaling \
--step-scaling-policy-configuration file://stepScalingDownPolicy.json
运行第一个 aws 服务后,我的管道上的图像出现错误。 [1]:https://i.stack.imgur.com/5PxBW.png
【问题讨论】:
我注意到您有许多问题的答案,但没有一个答案被接受。如果他们都不好,那也没关系。但是,如果它们对您有所帮助,那么接受不仅是一种好习惯,而且还可以删除未回答列表中的问题并减少重复问题的数量。 对 SO 还是有点新用户,会去看看调整一下。 【参考方案1】:您在两个命令后缺少斜杠\
。应该是
aws application-autoscaling put-scaling-policy \
和
aws application-autoscaling put-scaling-policy \
还要确保\\
之后没有任何白色字符(空格或制表符)。
【讨论】:
是的,我明白这一点,实际上我没有这个,因为 AWS 文档不需要它,但是看看别的东西;答案可能是这样的:aws autoscaling put-scaling-policy --policy-name alb1000-target-tracking-scaling-policy \ 在服务声明后添加策略名称可能是答案,会让您知道结果 - 还会检查额外的空格。 @narliecholler 没问题,但你仍然应该有斜线,就像你的前两个命令一样。 @narliecholler 你在请求命令时缺少斜线,就像我在答案中写的第一行之后。这是关于多行中断命令,而不是链接它们。 我可以确认它现在可以工作了,我在查找本地文件来配置缩放配置时也遇到了错误,但我将其更改为内联。谢谢。以上是关于尝试运行第二个命令时,在 bash 脚本中运行 AWS 服务会产生错误,我做错了吗?的主要内容,如果未能解决你的问题,请参考以下文章
函数内部 sed 命令中的 bash 语法错误,在命令行上工作正常
如何从上一个 bash 命令中获取倒数第二个参数? (在交互式 bash shell 中)