aws-cloudformation / cloudformation-cli

The CloudFormation Provider Development Toolkit allows you to author your own resource providers and modules that can be used by CloudFormation.
Apache License 2.0
316 stars 157 forks source link

JSON pointer to elements in arrays of non-fixed length #1079

Open unext-wendong opened 1 week ago

unext-wendong commented 1 week ago

Kindly let me know if this is the wrong place to ask this question.

Given the following sample schema, property Services is an array of non-fixed length.

{
    "definitions": {
        "Service": {
            "properties": {
                "Id": {
                    "description": "The ID of the service instance.",
                    "type": "string"
                }
            },
            "additionalProperties": false
        }
    },
    "properties": {
        "Id": {
            "description": "Unique identifier.",
            "type": "string"
        },
        "Services": {
            "description": "The list of services.",
            "type": "array",
            "items": {
                "$ref": "#/definitions/Service"
            }
        }
    },
    "additionalProperties": false,
    "readOnlyProperties": [
        "/properties/Id"
    ],
    "primaryIdentifier": [
        "/properties/Id"
    ],
    "writeOnlyProperties": [
        "/properties/Services/0/Id"
    ]
}

How could I express in the schema that the Id property in the Service data is write-only? I mean what json pointers should I put in writeOnlyProperties.

If the Services array is of fixed length, I could list all /properties/Services/0/Id, /properties/Services/1/Id, ..., there, but it's of non-fixed length.

If it's not possible, is there any other way to express this?

Thanks,

kddejong commented 1 week ago

Couple of options for you to try. If everything under Services is write only "/properties/Services/*" or if its just the id "/properties/Services/*/Id"

unext-wendong commented 1 week ago

With *, I got error:

E   ValueError: invalid literal for int() with base 10: '*'

Seems to be an invalid syntax.

I'm using the cloudformation-cli-python-plugin==2.1.9.

kddejong commented 1 week ago

@ammokhov I have that right don't I? Is this an issue with the python plugin?