in cdk/src/main/java/com/amazonaws/services/kinesisanalytics/AmazonKinesisDataAnalyticsApacheFlinkServerSentEventsSseCdkStack.java [183:217]
private void createKinesisDataAnalyticsApplication() {
final Application application = Application.Builder.create(this, "KinesisAnalyticsServerSentEventsApplication")
.parallelismPerKpu(1)
.parallelism(1)
.runtime(Runtime.FLINK_1_11)
.code(ApplicationCode.fromBucket(s3Bucket, filenameParam.getValueAsString()))
.autoScalingEnabled(false)
.build();
// From https://docs.aws.amazon.com/kinesisanalytics/latest/java/vpc-permissions.html
application.addToRolePolicy(PolicyStatement.Builder.create()
.resources(List.of("*"))
.actions(List.of(
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeDhcpOptions"
))
.effect(Effect.ALLOW)
.build());
application.addToRolePolicy(PolicyStatement.Builder.create()
.resources(List.of("*"))
.actions(List.of(
"ec2:CreateNetworkInterface",
"ec2:CreateNetworkInterfacePermission",
"ec2:DescribeNetworkInterfaces",
"ec2:DeleteNetworkInterface"
))
.effect(Effect.ALLOW)
.build());
//Grant the application permission to publish SSE events to the data stream
outputDataStream.grantReadWrite(application);
createKinesisAnalyticsInit(application);
}