2015-10-20 5 views
3

Я делаю вызов ecs.create_service так:Получение «Создание сервиса не было идемпотентным» с помощью boto3 ECS. Зачем?

createServiceResponse = ecs.create_service(
clientToken='abc123', 
cluster=options.cluster, 
serviceName=options.service, 
desiredCount=1, 
taskDefinition='relay:' + str(revision), 
role='ecsServiceRole', 
loadBalancers=[ 
    { 
     'loadBalancerName': options.elb, 
     'containerName': 'relay', 
     'containerPort': 8080 
    } 
] 
) 

Обратите внимание, что значение в clientToken является abc123 на данный момент, но я пробовал всякие разные строки. Этот документ говорит, что я должен поставить его, чтобы обеспечить идемпотентность (http://boto3.readthedocs.org/en/latest/reference/services/ecs.html), однако, я получаю эту ошибку:

Traceback (most recent call last): 
    File "./deploy.py", line 103, in <module> 
    'containerPort': 8080 
    File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 301, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 386, in _make_api_call 
    raise ClientError(parsed_response, operation_name) 
botocore.exceptions.ClientError: An error occurred  (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent. 

Почему?

ответ

7

Я понял.

Это потому, что я звонил create_service на существующую службу. Я должен был звонить update_service следующим образом:

ecs.update_service(

cluster=options.cluster, 
service=options.service, 
taskDefinition='relay:' + str(revision),  
desiredCount=1) 

 Смежные вопросы

  • Нет связанных вопросов^_^