1

필자는 boto로 자동화하기가 비교적 쉽고 Python의 boto API를 사용하여 AWS에 자동 확장 인프라를 설정하는 스크립트를 만들었습니다.AWS- boto API를 사용하여로드 밸런서 생성과 VPC 연결하기

그러나로드 균형 조정자 생성과 내 VPC를 연결할 수 없습니다. 전체에서

zoneStrings = 'eu-west-1a', 'eu-west-1b' #The availability zones of my VPC 
elb_conn = boto.ec2.elb.connect_to_region('eu-west-1') # 

lb_name = 'my-lb' 
zones = zoneStrings 
subnets = 'subnet-09519f50', 'subnet-9fa12dfa' #VPC subnets 
ports= [(80, 80, 'http'), (443, 443, 'tcp')] 
lb = elb_conn.create_load_balancer(lb_name, zones, subnets, ports) 

오류는 다음과 같습니다 : 모든 통찰력이 크게 감사하겠습니다

Traceback (most recent call last): 
    File "./test.py", line 70, in <module> 
    lb = elb_conn.create_load_balancer(lb_name, zones, subnets, ports) 
    File "/usr/local/lib/python2.7/dist-packages/boto/ec2/elb/__init__.py", line 243, in create_load_balancer 
    params, LoadBalancer) 
    File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1207, in get_object 
    raise self.ResponseError(response.status, response.reason, body) 
boto.exception.BotoServerError: BotoServerError: 400 Bad Request 
<ErrorResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>MalformedInput</Code> 
    </Error> 
    <RequestId>12659703-a021-11e4-9488-1f8ceceab6a1</RequestId> 
</ErrorResponse> 

다음 코드는 잘못된 입력 오류를 반환합니다.

답변

0

BOTO 문서는 create_load_balancer 방법에 관한 매개 변수의 순서가 있음을 말한다 ...

  • 이름
  • 영역
  • 청취자
  • 서브넷

당신은 그들을 다른 O에서 공급하는 것 같습니다. rder. 아마도 가장 안전한 방법은 위치 순서에 의존하기보다는 키워드 인수를 사용하는 것입니다. 따라서 :

lb = elb_conn.create_load_balancer(name=lb_name, zones=zones, subnets=subnets, listeners=ports) 

그게 효과가 있습니까?

+1

도움을 주셔서 감사합니다. 다음은 lb = elb_conn.create_load_balancer (name = lb_name, zones = zones, subnets = subnets, listener = ports, security_groups = sg)를 사용했습니다. 흥미롭게도 문서 순서는 서브넷 이전의 리스너이므로 나에게 적합하지 않습니다. http://boto.readthedocs.org/en/latest/ref/elb.html#boto.ec2.elb.ELBConnection.create_load_balancer – AD26891

+1

또한 존의 값은 none이거나 vpc 서브넷과 충돌합니다 . – AD26891

관련 문제