AWS CDK Kinesis Analytics Flink Alpha

2.250.0a0 · active · verified Fri Apr 17

This is an experimental (alpha) AWS CDK Construct Library for defining Kinesis Data Analytics Flink applications. It simplifies the setup of Flink applications, including code location, runtime versions, and IAM roles. As part of the AWS CDK, it receives frequent updates, typically aligning with the CDK's bi-weekly release cycle. The current version is 2.250.0a0.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to define a Kinesis Data Analytics Flink application using the `Application` construct. This quickstart outlines setting up an S3 bucket for the application code, creating an IAM service role with necessary permissions, and configuring the Flink runtime version.

import os
from aws_cdk import (
    Stack,
    aws_kinesisanalytics_flink_alpha as flink,
    aws_s3 as s3,
    aws_iam as iam,
)
from constructs import Construct

class FlinkApplicationStack(Stack):
    def __init__(self, scope: Construct, id: str, **kwargs):
        super().__init__(scope, id, **kwargs)

        # 1. Create an S3 bucket for your Flink application JAR/ZIP
        #    (CDK will deploy this bucket for you)
        app_code_bucket = s3.Bucket(self, "FlinkAppCodeBucket")

        # 2. Define the path to your Flink application code in S3
        #    IMPORTANT: Your Flink application JAR/ZIP must be uploaded to this path BEFORE cdk deploy.
        flink_app_jar_key = os.environ.get('FLINK_APP_JAR_KEY', 'my-flink-app.jar') # e.g., 'path/to/my-app.jar'

        # 3. Create an IAM role for Kinesis Data Analytics service execution
        #    This role grants KDA permissions to access resources like S3, Kinesis streams, etc.
        flink_service_role = iam.Role(self, "FlinkServiceRole",
            assumed_by=iam.ServicePrincipal("kinesisanalytics.amazonaws.com"),
            description="IAM role for Kinesis Data Analytics Flink application"
        )
        # Grant read access to the application code bucket
        app_code_bucket.grant_read(flink_service_role)

        # 4. Define the Kinesis Data Analytics Flink Application
        flink_application = flink.Application(self, "MyFlinkApplication",
            application_name="MyCDKFlinkApp",
            code=flink.ApplicationCode.from_bucket(app_code_bucket, flink_app_jar_key),
            runtime=flink.FlinkRuntime.FLINK_1_15, # Choose your Flink runtime version: FLINK_1_11, FLINK_1_13, FLINK_1_15
            service_execution_role=flink_service_role,
            # Optional: Add environment variables, monitoring, logging, etc.
            # application_properties=[flink.ApplicationProperty(
            #     property_group_id='kda.flink.run.options',
            #     properties={'parallelism.default': '2'})
            # ]
        )

# To deploy this, typically you'd put it in a file like 'app.py'
# from aws_cdk import App
# app = App()
# FlinkApplicationStack(app, "MyFlinkApplicationStack",
#   env={'region': os.environ.get('CDK_DEFAULT_REGION'), 'account': os.environ.get('CDK_DEFAULT_ACCOUNT')}
# )
# app.synth()

view raw JSON →