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

2024-05-18 11:15:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

目前,我正在尝试设置一个传输网关,并与组织和一些帐户共享它。创建基本共享没有问题,但只要我添加了一个传输网关的资源(注意,为了测试目的,我是静态地这样做的),Cloudformation模板验证就失败了,声称合成的Json模板格式不正确。在前段时间}我使用纯json验证器、云结构构建器和CLI aws cloudformation验证器验证了comlete json模板,结果非常好

所以我可能在这里遇到了一个边缘案例,或者在交通网关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,我能够揭示在合成过程中添加了一些神秘的点

代码管道阶跃的Cat输出

 "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"
      }
    },

谢谢你的帮助


Tags: 代码aws模板jsonenableou资源arn
1条回答
网友
1楼 · 发布于 2024-05-18 11:15:39

因为它可能会在将来帮助别人——我会自己解决;)

我发现,由于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"

相关问题 更多 >