问题描述
boto3为某些服务(例如EC2,S3等)提供默认的服务员。默认情况下,并非所有服务都提供此服务。现在,我来创建一个EFS卷并将生命周期策略添加到文件系统中。 EFS创建需要一些时间,并且生命周期策略未处于必需的efs状态。即创建了efs。
如何等待在Python boto3代码中创建EFS,以便可以添加策略?
解决方法
看起来不存在服务生,但您可以像这样创建自己的客户服务生:
import boto3
from botocore.waiter import WaiterModel
from botocore.waiter import create_waiter_with_client
client = boto3.client('efs')
waiter_name = "LifeCycleCompleted"
waiter_config = {
"version": 2,"waiters": {
"LifeCycleCompleted": {
"operation": "DescribeLifecycleConfiguration","delay": 60,# Number of seconds to delay
"maxAttempts": 5,# Max attempts before failure
"acceptors": [
{
"matcher": "path","expected": lifecycle_policy,"argument": "length(LifecyclePolicies[]) > `0`","state": "success"
}
]
}
}
}
waiter_model = WaiterModel(waiter_config)
efs_lifecycle_waiter = create_waiter_with_client(waiter_name,waiter_model,client)
efs_lifecycle_waiter.wait(FileSystemId='MyFileSystemId')