You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CDK为Kinesis Data Analytic应用添加VPC配置

AWS CDK部署VPC内KDA应用实现方案

当前CDK的Kinesis Data Analytics L2高级构造确实没有封装VPC配置参数,直接使用L1级CloudFormation资源CfnApplication即可完成配置,L1资源和AWS API、CloudFormation的能力完全对齐,不需要等待CDK官方更新L2层封装。

前置准备

  • 提前规划KDA应用部署的VPC、子网、安全组:如果使用私有子网,需要确保子网有公网出口(NAT网关)或配置了对应AWS服务的VPC端点,避免KDA无法拉取依赖、上报运行状态。
  • 给KDA绑定的执行角色提前授权EC2网络接口相关操作权限,包括ec2:CreateNetworkInterface、ec2:DescribeNetworkInterfaces、ec2:DeleteNetworkInterface,否则应用启动时会因为无法创建弹性网卡报错。

代码示例(TypeScript CDK)

import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as kda from 'aws-cdk-lib/aws-kinesisanalyticsv2';
import { Construct } from 'constructs';

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

    // 引用已有VPC、安全组,也可以根据需求在栈内新建
    const targetVpc = ec2.Vpc.fromLookup(this, 'WorkVpc', { vpcId: 'vpc-替换为你的VPCID' });
    const kdaSg = ec2.SecurityGroup.fromSecurityGroupId(this, 'KdaSg', 'sg-替换为你的安全组ID');
    const deploySubnets = targetVpc.selectSubnets({
      subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS
    }).subnetIds;

    // 创建VPC内的KDA Flink应用
    new kda.CfnApplication(this, 'VpcKdaApp', {
      runtimeEnvironment: 'FLINK-1_18', // 按需替换为你使用的Flink版本
      serviceExecutionRole: 'arn:aws:iam::替换为你的账号ID:role/kda-execution-role',
      applicationName: 'vpc-inner-kda-demo',
      applicationConfiguration: {
        // Flink作业基础配置
        flinkApplicationConfiguration: {
          parallelismConfiguration: {
            configurationType: 'CUSTOM',
            parallelism: 2,
            autoScalingEnabled: false
          },
          checkpointConfiguration: {
            configurationType: 'CUSTOM',
            checkpointingEnabled: true,
            checkpointInterval: 60000
          }
        },
        // 作业代码配置,以下示例为从S3加载Jar包
        applicationCodeConfiguration: {
          codeContentType: 'ZIPFILE',
          codeContent: {
            s3ContentLocation: {
              bucketArn: 'arn:aws:s3:::替换为存作业代码的S3桶名',
              fileKey: 'your-flink-job.jar'
            }
          }
        },
        // 核心VPC配置,和AWS SDK参数完全一致
        vpcConfigurations: [
          {
            subnetIds: deploySubnets,
            securityGroupIds: [kdaSg.securityGroupId]
          }
        ]
      }
    });
  }
}

补充说明

  • 如果你使用的是KDA SQL版本,只需要将runtimeEnvironment替换为对应SQL版本标识,把flinkApplicationConfiguration替换为sqlApplicationConfiguration即可,vpcConfigurations配置块完全通用。
  • L1构造创建的资源和L2构造创建的资源没有本质区别,后续如果CDK L2层原生支持VPC配置,可以平滑迁移,不会导致资源重建。
  • 部署完成后可以在KDA控制台的网络配置页看到绑定的VPC、子网、安全组信息,和控制台手动配置的效果完全一致。
  • 注意:KDA挂载的安全组默认不需要开放入站规则,只需要根据业务访问需求配置出站规则即可。

内容的提问来源于stack exchange,提问作者priyadhingra19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 10:07:04