in packages/aws-cdk-lib/region-info/build-tools/generate-static-data.ts [26:140]
export async function main(): Promise<void> {
checkRegions(APPMESH_ECR_ACCOUNTS);
checkRegions(DLC_REPOSITORY_ACCOUNTS);
checkRegions(ELBV2_ACCOUNTS);
checkRegions(FIREHOSE_CIDR_BLOCKS);
checkRegions(ROUTE_53_BUCKET_WEBSITE_ZONE_IDS);
checkRegionsSubMap(CLOUDWATCH_LAMBDA_INSIGHTS_ARNS);
checkRegionsSubMap(APPCONFIG_LAMBDA_LAYER_ARNS);
const lines = [
"import { Fact, FactName } from './fact';",
'',
'/* eslint-disable quote-props */',
'/* eslint-disable max-len */',
'',
'/**',
' * Built-in regional information, re-generated by `npm run build`.',
' *',
` * @generated ${new Date().toISOString()}`,
' */',
'export class BuiltIns {',
' /**',
' * Registers all the built in regional data in the RegionInfo database.',
' */',
' public static register(): void {',
];
const defaultMap = 'default';
for (const region of AWS_REGIONS) {
let partition = PARTITION_MAP[defaultMap].partition;
let domainSuffix = PARTITION_MAP[defaultMap].domainSuffix;
for (const key in PARTITION_MAP) {
if (region.startsWith(key)) {
partition = PARTITION_MAP[key].partition;
domainSuffix = PARTITION_MAP[key].domainSuffix;
}
}
registerFact(region, 'PARTITION', partition);
registerFact(region, 'DOMAIN_SUFFIX', domainSuffix);
registerFact(region, 'CDK_METADATA_RESOURCE_AVAILABLE', AWS_CDK_METADATA.has(region) ? 'YES' : 'NO');
registerFact(region, 'IS_OPT_IN_REGION', partition === 'aws' && after(region, RULE_CLASSIC_PARTITION_BECOMES_OPT_IN) ? 'YES' : 'NO');
registerFact(region, 'S3_STATIC_WEBSITE_ENDPOINT', before(region, RULE_S3_WEBSITE_REGIONAL_SUBDOMAIN)
? `s3-website-${region}.${domainSuffix}`
: `s3-website.${region}.${domainSuffix}`);
registerFact(region, 'S3_STATIC_WEBSITE_ZONE_53_HOSTED_ZONE_ID', ROUTE_53_BUCKET_WEBSITE_ZONE_IDS[region] || '');
registerFact(region, 'EBS_ENV_ENDPOINT_HOSTED_ZONE_ID', EBS_ENV_ENDPOINT_HOSTED_ZONE_IDS[region] || '');
registerFact(region, 'ELBV2_ACCOUNT', ELBV2_ACCOUNTS[region]);
registerFact(region, 'DLC_REPOSITORY_ACCOUNT', DLC_REPOSITORY_ACCOUNTS[region]);
registerFact(region, 'APPMESH_ECR_ACCOUNT', APPMESH_ECR_ACCOUNTS[region]);
registerFact(region, 'SAML_SIGN_ON_URL', PARTITION_SAML_SIGN_ON_URL[partition] || '');
registerFact(region, 'LATEST_NODE_RUNTIME', LATEST_NODE_RUNTIME_MAP[partition]);
const firehoseCidrBlock = FIREHOSE_CIDR_BLOCKS[region];
if (firehoseCidrBlock) {
registerFact(region, 'FIREHOSE_CIDR_BLOCK', `${FIREHOSE_CIDR_BLOCKS[region]}/27`);
}
const vpcEndpointServiceNamePrefix = `${domainSuffix.split('.').reverse().join('.')}.vpce`;
registerFact(region, 'VPC_ENDPOINT_SERVICE_NAME_PREFIX', vpcEndpointServiceNamePrefix);
for (const version in CLOUDWATCH_LAMBDA_INSIGHTS_ARNS) {
for (const arch in CLOUDWATCH_LAMBDA_INSIGHTS_ARNS[version]) {
registerFact(region, ['cloudwatchLambdaInsightsVersion', version, arch], CLOUDWATCH_LAMBDA_INSIGHTS_ARNS[version][arch][region]);
}
}
for (const version in APPCONFIG_LAMBDA_LAYER_ARNS) {
for (const arch in APPCONFIG_LAMBDA_LAYER_ARNS[version]) {
registerFact(region, ['appConfigLambdaLayerVersion', version, arch], APPCONFIG_LAMBDA_LAYER_ARNS[version][arch][region]);
}
}
for (const type in ADOT_LAMBDA_LAYER_ARNS) {
for (const version in ADOT_LAMBDA_LAYER_ARNS[type]) {
for (const arch in ADOT_LAMBDA_LAYER_ARNS[type][version]) {
registerFact(
region,
['adotLambdaLayer', type, version, arch],
ADOT_LAMBDA_LAYER_ARNS[type][version][arch][region],
);
}
}
}
for (const version in PARAMS_AND_SECRETS_LAMBDA_LAYER_ARNS) {
for (const arch in PARAMS_AND_SECRETS_LAMBDA_LAYER_ARNS[version]) {
registerFact(region, ['paramsAndSecretsLambdaLayer', version, arch], PARAMS_AND_SECRETS_LAMBDA_LAYER_ARNS[version][arch][region]);
}
}
}
lines.push(' }');
lines.push('');
lines.push(' private constructor() {}');
lines.push('}');
await fs.writeFile(path.resolve(__dirname, '..', 'lib', 'built-ins.generated.ts'), lines.join('\n'));
function registerFact(region: string, name: string | string[], value: string) {
const factName = typeof name === 'string' ? name : `${name[0]}(${name.slice(1).map(s => JSON.stringify(s)).join(', ')})`;
lines.push(` Fact.register({ region: ${JSON.stringify(region)}, name: FactName.${factName}, value: ${JSON.stringify(value)} });`);
}
}