Release 1.112.0 (to main) - #3975
Conversation
Merge main to develop after 1.111.0 release
…ill sam-docs descriptions (#3954)
There was a problem hiding this comment.
Code Review Results
Reviewed: d9d2dce..e7b6f98
Files: 34
Comments: 2
Comments on lines outside the diff:
[samtranslator/model/init.py:746] [BUG] The new Property.Path=Value presence syntax is documented as a general feature of PropertyRule (comment added at line 579), and MUTUALLY_EXCLUSIVE / MUTUALLY_INCLUSIVE now route through _is_property_present, but the CONDITIONAL_REQUIREMENT branch still calls _get_property_value directly:
elif (
rule_type == ValidationRule.CONDITIONAL_REQUIREMENT
and self._get_property_value(properties[0], validated_model) is not None
and self._get_property_value(properties[1], validated_model) is None
):If a rule is ever declared as (ValidationRule.CONDITIONAL_REQUIREMENT, ["Foo.Bar=True", "Baz"]), _get_property_value("Foo.Bar=True", ...) walks the path parts ["Foo", "Bar=True"], finds no Bar=True attribute, and returns None — the rule silently never fires instead of erroring. That is a silent-validation-bypass failure mode rather than a loud one. Suggest using _is_property_present for properties[0] here so all three rule types share the same presence semantics.
[samtranslator/model/sam_resources.py:1577] [GENERAL] The rule string is surfaced verbatim in the customer-facing error, leaking internal DSL syntax and misattributing the conflict. Per tests/translator/output/error_capacity_provider_managed_resource_tags_mutual_exclusion.json:
Resource with id [CpExplicitTagsConflictWithGlobal] is invalid. Cannot specify 'ManagedResourceTags.Propagate=True' and 'ManagedResourceTags.Tags' together.
Two problems in that case: (a) =True is internal rule syntax that has no meaning in a SAM template, and (b) that resource only declares ManagedResourceTags.Tags — Propagate: true comes from the Globals section, so the user is told they specified something they never wrote and gets no hint that the fix is Propagate: false on the resource or a change to Globals. Consider special-casing the = form when building the message (e.g. Cannot specify 'ManagedResourceTags.Tags' when 'ManagedResourceTags.Propagate' is true (it may be set in the Globals section).).
Scope note: I reviewed the transform logic, validation, generators, globals, and the translator input/output fixtures. samtranslator/schema/schema.json, schema_source/sam.schema.json, and sam-docs.json are generated and were not line-reviewed. I did not attempt to verify the contents or partition availability of AWSLambdaNetworkConnectorOperatorPolicy, which the network connector operator role now relies on in place of its inline policy.
This PR & commit is automatically created by aws-sam-cli-bot for SamTranslator@1.112.0 release.