AWS CDK Как обрабатывать Fn.getAtt, который предполагает возврат списка вместо строки - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть тип ресурса AWS :: EC2 :: VPCEndpoint, и я хочу получить значения DnsEntries, которые согласно https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#aws -resource-ec2-vpcendpoint-return-values ​​ являются список записей DNS. Я хочу иметь возможность выбрать первый элемент из списка, поэтому я попробовал что-то вроде этого:

const vpcEndpoint = new ec2.CfnVPCEndpoint(this, "vpcendpoint", {
    serviceName: "com.amazonaws.vpce.us-west-2.vpce-svc-xxxxxx",
    vpcId: "vpc-123",
    privateDnsEnabled: false,
    subnetIds: ["subnet-123"],
    vpcEndpointType: "Interface",
});
const fisrtDnsEntry = cdk.Fn.select(0, cdk.Fn.getAtt(vpcEndpoint.logicalId, "DnsEntries"))

, который не работает, поскольку Fn.select ожидает массив строк, но Fn.getAtt возвращает IResolvable и имеет только toString() метод.

Есть идеи, что еще я могу сделать?

1 Ответ

0 голосов
/ 06 февраля 2020

Существует открытая проблема по этому поводу - https://github.com/aws/aws-cdk/issues/3627.

В настоящее время вы можете использовать следующий фрагмент кода:

const firstEntry = cdk.Fn.select(0, vpcEndpoint.attrDnsEntries);
const entryParts = cdk.Fn.split(':', firstEntry);
const primaryDNSName = cdk.Fn.select(1, entryParts);

new cdk.CfnOutput(this, 'primaryDNSName', { value: primaryDNSName });

Выход CDK :

enter image description here

Выход пользовательского интерфейса:

enter image description here

...