问题描述: 在使用AWS Waiter任务时,出现了"AWS Waiter TasksStopped 失败:taskId 的长度应为其中之一"的错误。
解决方法: 要解决这个问题,需要检查并确保taskId的长度符合要求。根据错误信息中提到的“长度应为其中之一”,我们可以假设taskId的长度有一定的要求。
下面是一个示例代码,展示了如何使用AWS Waiter任务来等待任务停止,并确保taskId的长度符合要求:
import boto3
from botocore.exceptions import WaiterError
def wait_for_task_stopped(task_id):
ecs_client = boto3.client('ecs')
try:
waiter = ecs_client.get_waiter('tasks_stopped')
waiter.wait(
cluster='your-cluster-name',
tasks=[task_id],
WaiterConfig={
'Delay': 10,
'MaxAttempts': 6
}
)
print("Task {} stopped successfully.".format(task_id))
except WaiterError as e:
error_message = e.last_response.get('Error', {}).get('Message', '')
print("AWS Waiter TasksStopped 失败:{}".format(error_message))
# 使用示例
task_id = 'your-task-id'
wait_for_task_stopped(task_id)
在上面的示例代码中,首先创建了一个ECS客户端对象ecs_client。然后,使用ecs_client的get_waiter方法创建一个名为'tasks_stopped'的Waiter对象。接下来,调用wait方法来等待任务停止,传入任务的cluster和tasks参数,以及WaiterConfig对象来设置等待的延迟和最大尝试次数。
如果等待成功,则输出"Task {task_id} stopped successfully.";如果等待失败,则输出"AWS Waiter TasksStopped 失败:{error_message}"。
请注意,示例代码中的'your-cluster-name'和'your-task-id'需要替换为实际的集群名称和任务ID。
希望以上解决方法对您有帮助!