Al usar AWS re:Post, aceptas las AWS re:Post Términos de uso

¿Cómo puedo resolver el error «Ha fallado la validación del modelo (número: no se permite la clave ajena [clave])» en CloudFormation?

4 minutos de lectura
0

Utilicé un proveedor de recursos personalizado en la interfaz de línea de comandos de AWS CloudFormation (CFN-CLI) para crear un recurso. Pero recibí el error «Ha fallado la validación del modelo (número: no se permite la clave ajena [clave])» en mis eventos de pila de CloudFormation.

Resolución

Puede usar su proveedor de recursos para crear solo tipos de recursos con propiedades. Cuando no define propiedades en el esquema de tipos de recursos o si utiliza propiedades reservadas, recibe el error de validación del modelo.

Para resolver este problema, complete los siguientes pasos:

  1. Compruebe que las propiedades definidas en la plantilla de CloudFormation también estén definidas en el archivo de esquema de tipos de recursos. Puede encontrar el archivo en el directorio raíz del proyecto.
    Nota: El archivo usa el formato de nomenclatura organization-service-resource.json. Por ejemplo, el nombre del archivo es article-EC2-subnet.json para un recurso de Amazon Elastic Cloud Compute (Amazon ec2) denominado Article::EC2::Subnet.

  2. Compruebe si está usando una propiedad reservada. Si está utilizando una propiedad reservada, cambie el nombre de la propiedad tanto en el esquema del proveedor de recursos como en la plantilla de CloudFormation.

  3. Para comprobar que el proyecto se ha creado correctamente, ejecute los comandos cfn validate, cfn generate y cfn submit de forma secuencial. Si utiliza el complemento de Java, ejecute los comandos cfn validate, cfn generate, mvn package y cfn submit de forma secuencial.
    Ejemplo:

    cfn validate
    Resource schema is valid.
    
    cfn generate
    Generated files for Organization::Service::Resource
    
    mvn package
    [INFO] Scanning for projects...
    [INFO]
    [INFO] --< software.organization.service.resource:organization-service-resource-handler >--
    [INFO] Building organization-service-resource-handler 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  21.690 s
    [INFO] Finished at: 2020-07-14T16:02:47-05:00
    [INFO] ------------------------------------------------------------------------
    
    cfn submit
    Successfully submitted type. Waiting for registration with token '12345a-abcde-6789-abc1-a1234b567891' to complete.
    {'ProgressStatus': 'COMPLETE', 'Description': 'Deployment is currently in DEPLOY_STAGE of status COMPLETED' , 'TypeArn': 'arn:aws:cloudformation:us-east-1:1234567891:type/resource/Organization-Service-Resource', 'TypeVersionArn': 'arn:aws:cloudformation:us-east-1:1234567891:type/resource/Organization-Service-Resource/00000035', 'ResponseMetadata': {'RequestId': '123a1234-b123-4567-abcd-123a123b1c1d', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '123a1234-b123-4567-abcd-123a123b1c1d', 'content-type': 'text/xml', 'content-length': '952', 'date': 'Tue, 14 Jul 2020 21:16:17 GMT'}, 'RetryAttempts': 0}}

    Nota: Si las pruebas unitarias no están completas y quiere omitirlas, ejecute el paquete mvn -Dmaven.test.skip=true en lugar del paquete mvn.

  4. Para establecer la versión actual de su proyecto como predeterminada, ejecute el comando set-type-default-version de la interfaz de la línea de comandos de AWS (AWS CLI):

    aws cloudformation set-type-default-version --type RESOURCE --type-name Organization::Service::Resource --version-id 00000005

    Nota: Sustituya Organization::Service::Resource por el nombre de su tipo de recurso. Además, reemplace 00000005 por la versión más reciente de la compilación que devuelve el cfn submit en la clave TypeVersionArn. Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

  5. Ejecute el siguiente comando para establecer la versión de tipo actual como predeterminada:

    cfn submit --set-default

    Para obtener más información, consulte enviar.

  6. Para solucionar los problemas de las pruebas, use el archivo rpdk.log en el directorio raíz de su proyecto.

Si utiliza un proveedor de recursos y recibe un tipo de error diferente, consulte los siguientes artículos del Centro de conocimiento de AWS para obtener pasos adicionales para la solución de problemas:

Información relacionada

CLI de CloudFormation en el sitio web de GitHub.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 meses