我有一个正在处理的json文件。
aws application-autoscaling put-scaling-policy \
--service-namespace dynamodb \
--resource-id "table/$DYNAMODB_TABLE_NAME_PREFIX$tablename" \
--scalable-dimension "dynamodb:table:WriteCapacityUnits" \
--policy-name "WriteScalingPolicy" \
--policy-type "TargetTrackingScaling" \
--target-tracking-scaling-policy-configuration \
'{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "DynamoDBWriteCapacityUtilization"
},
"ScaleOutCooldown": 60,
"ScaleInCooldown": 60,
"TargetValue": 80.0
}'
请注意,aws
是此处使用的函数,
aws() {
docker exec aws-cli aws $*
}
aws-cli容器是一个已经在运行的容器,从application-autoscaling
到json文本的命令将像这样传递到awscli容器。
docker exec irtci-awscli aws application-autoscaling put-scaling-policy --service-namespace dynamodb --resource-id table/ir-tci_app_resource --scalable-dimension dynamodb:table:ReadCapacityUnits --policy-name ReadScalingPolicy --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration '{' PredefinedMetricSpecification: '{' PredefinedMetricType: DynamoDBReadCapacityUtilization '},' ScaleOutCooldown: 60, ScaleInCooldown: 60, TargetValue: 80.0 '}'
我相信,由于IFS,awscli容器无法解析。 我收到以下错误消息。
`Unknown options: --target-tracking-scaling-policy-configuration, PredefinedMetricSpecification:, {, PredefinedMetricType:, DynamoDBReadCapacityUtilization, },, ScaleOutCooldown:, 60,, ScaleInCooldown:, 60,, TargetValue:, 80.0, }, {
`
答案 0 :(得分:0)
aws() {
docker exec aws-cli aws "$@"
}
Bash Reference Manual: Special Parameters
* ($ )扩展到位置参数,从1开始。当扩展不在双引号内时,每个位置参数都扩展为单独的单词。在执行该操作的上下文中,这些单词会受到进一步的单词拆分和路径名扩展的影响。当在双引号内进行扩展时,它将扩展为一个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,“ $ ”等效于“ $ 1c $ 2c…”,其中c是IFS变量值的第一个字符。如果未设置IFS,则参数之间用空格分隔。如果IFS为null,则将在不插入分隔符的情况下联接参数。
@ ($ @)从一个开始扩展到位置参数。当在双引号内进行扩展时,每个参数都会扩展为单独的单词。也就是说,“ $ @”等效于“ $ 1”“ $ 2”……。如果双引号扩展出现在单词内,则第一个参数的扩展与原始单词的开头部分结合,而最后一个参数的扩展与原始单词的末尾部分连接。如果没有位置参数,则“ $ @”和$ @将扩展为空(即,它们将被删除)。