AWS CDK Создание общего ресурса RAM с помощью Python CfnResourceShare приводит к ошибке формата шаблона: JSON неправильно сформирован
Мы запускаем CodePipline, синтезирующий код Python CDK версии 1.91.0 в шаблоны Cloudformation и выполняющий их.
В настоящее время я пытаюсь настроить транзитный шлюз и поделиться им с организацией и некоторой учетной записью. Создание базового общего ресурса не проблема, но как только я добавляю resource_arn транзитного шлюза (обратите внимание, что я делаю это статически для тестовых целей), проверка шаблона Cloudformation не проходит, утверждая, что синтезированный шаблон Json сформирован неправильно. в позапрошлом} Я проверил шаблон comlete json с помощью чистого валидатора Json, построителя облачных вычислений и валидатора облачной информации aws CLI, и это абсолютно нормально.
Так что я могу столкнуться с крайним случаем здесь или сделать что-то принципиально неправильное с 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 для Codepipline Step
"ResourceArns": [
"arn:aws:ec2:eu-central-1:··1234567890:transit-gateway/tgw-XXXX"
]
Любая помощь приветствуется
1 ответ
Так как это может кому-то помочь в будущем - я сам выберусь;)
Я обнаружил, что у меня из-за копии 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"