在 AWS CloudFormation 中使用资源提供者类型创建资源时,如何解决“等待创建物理资源时资源超时”这一错误?
上次更新时间:2020 年 8 月 17 日
在 AWS CloudFormation 中使用资源提供者类型创建资源时,我在堆栈事件中收到“等待创建物理资源时资源超时”这一错误。如何解决此错误?
简短描述
如果资源未在 60 秒内返回其primaryIdentifier或物理 ID,则 AWS CloudFormation 将返回“等待创建物理资源时资源超时”这一错误。发生错误是因为资源的CreateHandler不会返回在资源提供者 schema文件organization-service-resource.json中指定为primaryIdentifier的属性。
如果您遇到与使用资源提供者有关的其他错误的问题,请参阅以下文章,以获取更多排查故障步骤:
- 在 AWS CloudFormation 中使用 CloudFormation CLI 运行 cfn generate 命令时,如何解决“资源规范无效”这一错误?
- 如何解决 AWS CloudFormation 中的 “模型验证失败(#:不允许无关密钥 [密钥])”这一错误?
- 在 AWS CloudFormation 的资源提供者资源上使用 Fn::GetAtt 函数时,如何解决“属性'密钥'不存在”这一错误?
- 如何解决 AWS CloudFormation 中的“ java.lang.ClassNotFoundException:com.example.package.resource.HandlerWrapper”这一错误?
解决方法
1. 在您的organization-service-resource.json文件中,确认primaryIdentifier定义遵循的是此格式,其中,Id是在属性部分定义的属性:
"primaryIdentifier": [
"/properties/Id"
]
注意:资源提供者 schema 文件为Organization-service-resource.json格式的 JSON 文件,位于项目的根目录中。
2. 在 CreateHandler中,在模型对象中设置primaryIdentifier属性。例如:
final ResourceModel model = request.getDesiredResourceState();
model.setId("abcdxyz");
return ProgressEvent.<ResourceModel, CallbackContext>builder()
.resourceModel(model)
.status(OperationStatus.SUCCESS)
.build();