2

背景: AWS クラウド開発キット (CDK) 2.5.0 を使用しています。

AWS コンソールとハードコーディングされた IP アドレスを手動で使用して、ルート 53 を ALB (Application Load Balancer)、プライベート インターフェイス VPC エンドポイント、プライベート REST API ゲートウェイ (など) に接続します。下の画像を参照してください。

コード: CDK を介してこの手動ソリューションをコーディングしようとしていますが、IP アドレスを取得して使用する方法、またはロード バランサーをインターフェイス VPC エンドポイントに接続する方法に行き詰まっています。(エンドポイントには、リージョン内のアベイラビリティ ゾーンごとに 1 つずつ、合計 3 つの IP アドレスがあります。)

ALB には、インターフェイス VPC エンドポイントの IP アドレスをターゲットとするターゲット グループが必要です。(IP アドレスの代わりに「インスタンス」アプローチを使用InstanceIdTargetして、エンドポイントのvpcEndpointIdで使用しようとしましたが、失敗しました。エラーが発生しましたInstance ID 'vpce-WITHWHATEVERWASHERE' is not valid)

aws_elasticloadbalancingv2CDK を使用して、モジュールを使用して次のものを (とりわけ) 作成しました。

  • ApplicationLoadBalancer(ALB)
  • ApplicationTargetGroup(ATG) 別名ターゲット グループ

aws_elasticloadbalancingv2_targetsに似ていることを期待していましaws_route53_targetsたが、うまくいきませんでした。targetsのプロパティがオブジェクトApplicationTargetGroupの配列を取ることはわかっていますが、それだけです。IApplicationLoadBalancerTarget

  :
import { aws_ec2 as ec2 } from 'aws-cdk-lib';
  :
import { aws_elasticloadbalancingv2 as loadbalancing } from 'aws-cdk-lib';

// endpointSG, loadBalancerSG, vpc, ... are defined up higher
        const endpoint = new ec2.InterfaceVpcEndpoint(this, `ABCEndpoint`, {
            service: {
                name: `com.amazonaws.us-east-1.execute-api`,
                port: 443
            },
            vpc,
            securityGroups: [endpointSG],
            privateDnsEnabled: false,
            subnets: { subnetGroupName: "Private" }
        });


        const loadBalancer = new loadbalancing.ApplicationLoadBalancer(this, 'abc-${config.LEVEL}-load-balancer', {
            vpc: vpc,
            vpcSubnets: { subnetGroupName: "Private" },
            internetFacing: false,
            securityGroup: loadBalancerSG
        });

        const listenerCertificate = loadbalancing.ListenerCertificate.fromArn(config.ARNS.CERTIFICATE)
        const listener = loadBalancer.addListener('listener', {
            port: 443,
            certificates: [ listenerCertificate ]
        });

        let applicationTargetGroup = new loadbalancing.ApplicationTargetGroup(this, 'abc-${config.LEVEL}-target-group', {
            port: 443,
            vpc: vpc,
            // targets: [ HELP ], - how to get the IApplicationLoadBalancerTarget objects?  
        })
        listener.addTargetGroups( 'abc-listener-forward-to-target-groups', { 
            targetGroups: [applicationTargetGroup]
        } );

上記のように、ALB にリスナーを追加しました。ターゲット グループをリスナーに追加しました。

使用したリソースの一部:

画像を介してセットアップを視覚化することが役立つ場合は、ここで私たちが目指しているものの近似値を示します. ここに画像の説明を入力

withオブジェクトのそのtargetsプロパティを設定するための助けをいただければ幸いです。ありがとう!ApplicationTargetGroupIApplicationLoadBalancerTarget

4

1 に答える 1