如何使用 AWS CDK 获取长区域名称

How to get the long region name with AWS CDK

如何获取 AWS CDK 中的区域名称?

一些 SDK 提供区域对象(另请参阅此

在 CDK 构造中,self.region 可用,cdk.aws_region 有一个 RegionInfo class,但它不提供名称,例如:ap- southeast-1 -> 新加坡

AWS 将区域长名称(如 Asia Pacific (Singapore) 用于 ap-southeast-1)公开为 publicly available Parameter Store parameters. Lookup this value at synth-time with ssm.StringParameter.valueFromLookup*。您需要参数路径的区域 ID,堆栈(或构造)可以自省。

export class MyStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props: cdk.StackProps) {
    super(scope, id, props);

    const regionLongName: string = ssm.StringParameter.valueFromLookup(
      this,
      `/aws/service/global-infrastructure/regions/${this.region}/longName`
    );

    console.dir({ region: this.region, regionLongName });
  }
}

对于Python

aws_cdk.aws_ssm.StringParameter.value_from_lookup(
            scope=self,
            parameter_name=f'/aws/service/global-infrastructure/regions/{self.region}/longName')

cdk synth 输出::

{ region: 'us-east-1', regionLongName: 'US East (N. Virginia)' }

* CDK 的 valueFromLookup context method 会将 looked-up 参数存储值缓存在 cdk.context.json 中的 synth-time。您最初可能会得到一个虚拟值。再次合成。