繁体   English   中英

AWS CDK 使用 Python CfnResourceShare 创建 RAM 资源共享导致模板格式错误:JSON 格式不正确

[英]AWS CDK Creating RAM Resource Share with Python CfnResourceShare results in Template format error: JSON not well-formed

我们运行一个 CodePipline,将 python CDK 代码版本 1.91.0 合成到 Cloudformation 模板并执行它们。

目前我正在尝试设置一个 Transit Gateway 并与组织和一些帐户共享它。 创建基本共享没有问题,但是一旦我添加了一个中转网关的 resource_arn(注意我是出于测试目的静态进行的),Cloudformation 模板验证失败,声称合成的 Json 模板格式不正确。 在最后 }我使用纯 Json 验证器、云形成构建器和 CLI aws cloudformation 验证器验证了完整的 json 模板,它绝对没问题。

所以我可能会在这里遇到一个极端情况,或者对 Transit Gateway Arn 做一些根本错误的事情。

from aws_cdk import (
    aws_ram as ram,
)
ram.CfnResourceShare(
            self,
            id="TransitGWRessourceShare",
            name="TransitGWRessourceShare",
            allow_external_principals=False,
            principals=[
                "arn:aws:organizations::1234567890:ou/o-123456asdf/ou-123-asbasdf",
                "1234567890",
            ],
            resource_arns=[
                "arn:aws:ec2:eu-central-1:​​1234567890:transit-gateway/tgw-XXXX",
            ],
        )

经过大量试验,我发现资源 arn 导致了问题,并且使用合成的 json 模板的猫,我发现在合成时添加了一些神秘的点··

Cat output Codepipline Step

 "TransitGW": {
      "Type": "AWS::EC2::TransitGateway",
      "Properties": {
        "AmazonSideAsn": XXXX,
        "AutoAcceptSharedAttachments": "enable",
        "DefaultRouteTableAssociation": "disable",
        "DefaultRouteTablePropagation": "disable",
        "DnsSupport": "enable",
        "MulticastSupport": "disable",
        ],
        "VpnEcmpSupport": "enable"
      },
    },
    "TransitGWRessourceShare": {
      "Type": "AWS::RAM::ResourceShare",
      "Properties": {
        "Name": "TransitGWRessourceShare",
        "AllowExternalPrincipals": false,
        "Principals": [
          "arn:aws:organizations::123456789:ou/o-xxxx/ou-xxxx-xxxx",
          "123456789"
        ],
        "ResourceArns": [
          "arn:aws:ec2:eu-central-1:··1234567890:transit-gateway/tgw-XXXX"
        ]
      },
      "Metadata": {
        "aws:cdk:path": "automation-cicd/dev/InfraBase/TransitGWRessourceShare"
      }
    },

任何帮助表示赞赏

因为它可能会在未来帮助某人 - 我会自己出去;)

我发现由于 arn 的副本,我在中转网关 arn 的行中有一些零宽度空格字符。

https://en.wikipedia.org/wiki/Zero-width_space

在它在很多编辑器中不可见之前我从未遇到过它,我能够在 vi 中看到它。

"arn:aws:ec2:eu-central-1:<200b><200b>1234567890:transit-gateway/tgw-XXXX"

这导致合成模板

 "arn:aws:ec2:eu-central-1:··1234567890:transit-gateway/tgw-XXXX"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM