使用boto3 ECS获取“服务的创建不是等幂的”。为什么?

2024-04-20 12:17:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在打电话给ecs.create_service如下:

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.

为什么?


Tags: inpyapicreateservicelinecalloperation
1条回答
网友
1楼 · 发布于 2024-04-20 12:17:25

我想出来了。

这是因为我正在对现有服务调用create_service。我应该按如下方式给update_service打电话:

ecs.update_service(

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

相关问题 更多 >