在 AWS CloudFormation 的资源提供者资源上使用 Fn::GetAtt 函数时,如何解决“属性'密钥'不存在”这一错误?

上次更新时间:2020 年 8 月 17 日

在 AWS CloudFormation 的资源提供者资源上使用 Fn::GetAtt 函数时,我收到“属性‘密钥’不存在”这一错误。如何解决此错误?

简短描述

当资源的ReadHandler未返回从资源提供者 schema文件organization-service-resource.json中的列表readOnlyProperties指定的属性时,会收到“属性‘密钥’不存在”这一错误。AWS CloudFormation 会返回此错误,是因为它未收到所需的属性。

如果您遇到与使用资源提供者有关的其他错误的问题,请参阅以下文章,以获取更多排查故障步骤:

解决方法

1.    在您的organization-service-resource.json文件中,确认readOnlyProperties定义遵循的是此格式,其中,Output是在属性部分定义的属性。例如:

"readOnlyProperties": [
    "/properties/Output"
],

注意:资源提供者 schema 文件为Organization-service-resource.json格式的 JSON 文件,位于项目的根目录中。

2.    在ReadHandler中,在模型对象中设置属性(在以下示例中为Outpost)。例如:

final ResourceModel model = request.getDesiredResourceState();
model.setOutput("abcdxyz");
return ProgressEvent.<ResourceModel, CallbackContext>builder()
    .resourceModel(model)
    .status(OperationStatus.SUCCESS)
    .build();

这篇文章对您有帮助吗?


您是否需要账单或技术支持?