pulumi/tests/testdata/codegen/invoke-inside-conditional-r.../nodejs/invoke-inside-conditional-r...

51 lines
3.7 KiB
TypeScript

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as std from "@pulumi/std";
export = async () => {
const config = new pulumi.Config();
// A list of availability zones names or ids in the region
const azs = config.getObject<Array<string>>("azs") || [];
// Assigns IPv6 public subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list
const publicSubnetIpv6Prefixes = config.getObject<Array<string>>("publicSubnetIpv6Prefixes") || [];
// Should be true if you want only one NAT Gateway per availability zone. Requires `var.azs` to be set, and the number of `public_subnets` created to be greater than or equal to the number of availability zones specified in `var.azs`
const oneNatGatewayPerAz = config.getBoolean("oneNatGatewayPerAz") || false;
// Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block
const enableIpv6 = config.getBoolean("enableIpv6") || false;
// Indicates whether to create an IPv6-only subnet. Default: `false`
const publicSubnetIpv6Native = config.getBoolean("publicSubnetIpv6Native") || false;
// Indicates whether DNS queries made to the Amazon-provided DNS Resolver in this subnet should return synthetic IPv6 addresses for IPv4-only destinations. Default: `true`
const publicSubnetEnableDns64 = config.getBoolean("publicSubnetEnableDns64") || true;
// Specify true to indicate that network interfaces created in the specified subnet should be assigned an IPv6 address. Default is `false`
const publicSubnetAssignIpv6AddressOnCreation = config.getBoolean("publicSubnetAssignIpv6AddressOnCreation") || false;
// Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records. Default: `true`
const publicSubnetEnableResourceNameDnsAaaaRecordOnLaunch = config.getBoolean("publicSubnetEnableResourceNameDnsAaaaRecordOnLaunch") || true;
// Indicates whether to respond to DNS queries for instance hostnames with DNS A records. Default: `false`
const publicSubnetEnableResourceNameDnsARecordOnLaunch = config.getBoolean("publicSubnetEnableResourceNameDnsARecordOnLaunch") || false;
const lenPublicSubnets = (await std.max({
input: [
1,
2,
3,
],
})).result;
const currentVpc = new aws.ec2.Vpc("currentVpc", {});
const createPublicSubnets = true;
const publicSubnet: aws.ec2.Subnet[] = [];
for (const range = {value: 0}; range.value < (createPublicSubnets && (!oneNatGatewayPerAz || lenPublicSubnets >= azs.length) ? lenPublicSubnets : 0); range.value++) {
publicSubnet.push(new aws.ec2.Subnet(`publicSubnet-${range.value}`, {
assignIpv6AddressOnCreation: enableIpv6 && publicSubnetIpv6Native ? true : publicSubnetAssignIpv6AddressOnCreation,
enableDns64: enableIpv6 && publicSubnetEnableDns64,
enableResourceNameDnsAaaaRecordOnLaunch: enableIpv6 && publicSubnetEnableResourceNameDnsAaaaRecordOnLaunch,
enableResourceNameDnsARecordOnLaunch: !publicSubnetIpv6Native && publicSubnetEnableResourceNameDnsARecordOnLaunch,
ipv6CidrBlock: enableIpv6 && publicSubnetIpv6Prefixes.length > 0 ? currentVpc.ipv6CidrBlock.apply(ipv6CidrBlock => std.cidrsubnetOutput({
input: ipv6CidrBlock,
newbits: 8,
netnum: publicSubnetIpv6Prefixes[range.value],
})).apply(invoke => invoke.result) : undefined,
ipv6Native: enableIpv6 && publicSubnetIpv6Native,
vpcId: currentVpc.id,
}));
}
}