我们有几个带有LoadBalancers的AWS测试环境。由于无法关闭LoadBalancers,因此这会花费很多钱。我因此尝试创建一个脚本来支持它们并恢复它们。 我试过这个:
aws elb describe-load-balancers --load-balancer-name testLB --output json > .\testLB.json
这给了一个json文件,但是当我尝试创建一个新的表单文件时,我只是
aws elb create-load-balancer --cli-input-json file://testLB.json
然后我得到一个像
这样的长错误C:\code\AWS-Scripts\LoadbalancerScript [master ≡ +1 ~0 -0 | +6 ~1 -0 !]> aws elb create-load-balancer --cli-input-json file://test3.json
解析参数'cli-input-json'时出错:无效的JSON:无法解码JSON对象 JSON收到:■{
" L o a d B a l a n c e r D e s c r i p t i o n s " : [
{
" S u b n e t s " : [
" s u b n e t - 1 2 3 4 5 a b c "
] ,
" C a n o n i c a l H o s t e d Z o n e N a m e I D " : " 1 2 3 4 5 a b c d e f g h 6 " ,
和有线间距尿布如果我将文件从UCS-2-LE BOM更改为UTF 8位,它仍然无法解析:
解析参数'cli-input-json'时出错:无效的JSON:无法解码JSON对象 JSON收到:test3.json
有什么想法吗?
更新 尝试使用--generate-cli-skeleton然后
aws elb create-load-balancer --cli-input-json file://C:\code\AWS-Scripts \LoadbalancerScript\lbSkeleton.json
But that returned:
Error parsing parameter 'cli-input-json': Invalid JSON: No JSON object could be decoded
JSON received: {
"LoadBalancerName": "testBalancer",
"Listeners": [
{
"InstancePort": 8003,
"LoadBalancerPort": 8003,
"Protocol": "HTTP",
"InstanceProtocol": "HTTP"
},
],
"AvailabilityZones": [
"eu-central-1b"
],
"Subnets": [
"subnet-123123123"
],
"SecurityGroups": [
"sg-123123",
"sg-123123"
],
"Scheme": "",
"Tags": [
{
"Key": "Environment",
"Value": "123123"
}
]
}
Plz帮助
答案 0 :(得分:2)
您应该考虑使用CloudFormation模板来启动和关闭任何AWS资源。 Cloudformer有助于为现有资源创建模板。
如果仍需要使用CLI,则可以生成CLI Skeleton JSON,该JSON概述了可以为操作指定的所有参数。然后,您可以填写值,然后创建负载平衡器
aws elb create-load-balancer --generate-cli-skeleton
{
"LoadBalancerName": "",
"Listeners": [
{
"Protocol": "",
"LoadBalancerPort": 0,
"InstanceProtocol": "",
"InstancePort": 0,
"SSLCertificateId": ""
}
],
"AvailabilityZones": [
""
],
"Subnets": [
""
],
"SecurityGroups": [
""
],
"Scheme": "",
"Tags": [
{
"Key": "",
"Value": ""
}
]
}