背景: 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_elasticloadbalancingv2
CDK を使用して、モジュールを使用して次のものを (とりわけ) 作成しました。
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 にリスナーを追加しました。ターゲット グループをリスナーに追加しました。
使用したリソースの一部:
- https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer.html
- https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup.html
- https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.InterfaceVpcEndpoint.html
- https://docs.aws.amazon.com/cdk/api/v2//docs/aws-cdk-lib.aws_elasticloadbalancingv2_targets.InstanceIdTarget.htmlおよび関連。
- CDK で VPC エンドポイントの PrivateIPAddress を取得するには? しかし、これは役に立ちませんでした。
画像を介してセットアップを視覚化することが役立つ場合は、ここで私たちが目指しているものの近似値を示します.
withオブジェクトのそのtargets
プロパティを設定するための助けをいただければ幸いです。ありがとう!ApplicationTargetGroup
IApplicationLoadBalancerTarget