やりたいこと

AWS CDKで、既存のVPC内のSubnetを利用してNLBを構築したいのですが、 cdk runの段階で Exception in thread "main" software.amazon.jsii.JsiiException: There are no subnets named 'PrivateSubnet1' in this VPC. Use a different VPC subnet selection. と表示されてしまい、Subnetが参照できません。

試したこと

以下のテンプレートでCDKを利用しようとしています。Kotlinで記述しています。

fun main() {
    val app = App()
    val stack = Stack(app, "infrastructure", StackProps.builder().withEnv(Environment.builder().withRegion("ap-northeast-1").withAccount("******").build()).build())

    val myVpc = Vpc.fromLookup(stack, "MyVpc", VpcLookupOptions.builder().withVpcId("vpc-******").build())
    val subnetName = myVpc.privateSubnets[0].node.id
    println(subnetName) // PrivateSubnet1

    val nlbProps = NetworkLoadBalancerProps.
        builder().
        withInternetFacing(false).
        withLoadBalancerName("MyNlb").
        withVpc(myVpc).
        withVpcSubnets(

 SubnetSelection.builder().withSubnetName(subnetName).build()).
        build()

    val nlb = NetworkLoadBalancer(stack, "MyNlb", nlbProps)

    app.synth()
}

次のようなエラーが表示されます。

Exception in thread "main" software.amazon.jsii.JsiiException: There are no subnets named 'PrivateSubnet1' in this VPC. Use a different VPC subnet selection.

気になっていること

  • withSubnetName 関数で参照される値として何を指定すべきなのかがわかっていません。ドキュメントを読む限りは (This is the name supplied in subnetConfiguration). とのことですが、既存のリソースだとそれが何に当たるのか...

  • PrivateSubnet1という名前をつけた覚えはないのですが...

  • そもそも withSubnetName だと複数のSubnetを指定できない気がするのですが、それはAPIとしてOKなのでしょうか?

参考:
https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.SubnetSelection.html

https://docs.aws.amazon.com/cdk/latest/guide/resources.html