B -Za8@s^ddlmZmZmZmZm Z m Z m ZmZmZmZmZmZmZmZmZmZGdddej Z!dS))core aws_kinesisaws_ec2aws_elasticsearchaws_kinesisanalyticsaws_iamaws_ecsaws_ecs_patterns aws_databrewaws_s3custom_resourcesaws_logsaws_s3_deployment aws_eventsaws_events_targetsaws_gluecs.eZdZejeeeeddfdd ZZS)FlinkSqlDemoStackN)scope construct_id glueDBExistscidresServiceRoleExistsreturnc% stj||f|t|j}t|j}tj|dtj j dd} t j |d| t j dgd} tj|ddd } tj|d d d } tj|d | d} | jtjdtjdd|stj|dddd}tj|dtj j tjjtjd dd| tj tj!j"dgtj#dtj$j%ddtj&ddd| gtj'd dtj(dgtj)j*t+dgd gd!}t,j-|d"| dt,j.t/j0j1d#d$d%|j2id&dd'}|j3j4j5tj|tjdd(|st6j7|d)d*d+}tj8|d,| tj9j:dtj dtj!j"d-d.}tj8|d/| tj9j;dtj dtj!j"d-d.}tj<|d0tj(d1d2d3d4d5d6d7d8d9d:g tj)j*d;=||gd<gd=}tj>|d>t?d?|gd@}| @||jAtj|dft?dgdhtjPtj(tj)j*didjgdkdlgdmgd=idn}|C|tQjR|dotQjSjTtj(dpgtj)j*dgd<gd=tUjVjWtQjXtQjYdqdodrds|jZidttQjXdudr|jZdvdwdxdy}tGj[|dz|jFdX|d{dX|d{d|tGj[j\tGj[jJ|j]d}dTd~dtGj[j^tGj[j_dUddWdgtGj[j`|jadvddd}tQjR|dtQjSjTtj(dpgtj)j*dgd<gd=tUjVjWtQjXtQjYdddrds|jZidtd}|jbc||jbc||jbc|t/jd|dt/jejfddd} | jgdt/j0j1dd$|j]| jhdddt/jijjddd| k| jl|@| jltmjn|ddtmjodgdg|jZgdgddtpjq|jr| ddgd}!tjs|dd|j3jtdd}"tjs|d| jhd}#tjs|d|j2d}$dS)NZkdaConnectorsBucketT)removal_policyZauto_delete_objectsZflinkConnectorDeploymentz ../connectors)Zdestination_bucketZsourcesZ streamingVPCz 10.0.0.0/16)rZ dataStream)Z shard_countZesSG)vpcP)Zpeer connectionZesServiceLinkedRolezes.amazonaws.comz)Role for ES to access resources in my VPC)Zaws_service_name descriptionZ esClusterzt3.medium.elasticsearch)Z data_nodesZdata_node_instance_type) subnet_typed)Z volume_sizeZ volume_type)enabledF)Zavailability_zone_countzes:**)actionseffectZ principals) rversionZcapacityrZ vpc_subnetsZebsZnode_to_node_encryptionZencryption_at_restZ enforce_httpsZsecurity_groupsZzone_awarenessZaccess_policiesZesProxyServicez../elasticsearch_proxy/) directoryZ ES_ENDPOINT)image environment)r listener_portZtask_image_optionsZpublic_load_balancer)Z port_rangeZglueDefaultDatabasedefault)Z database_nameZglueVPCe)Z one_per_azr)rserviceopensubnetsZ kinesisVPCeZ kdaPolicyz glue:GetTablezglue:GetTableszglue:CreateTablezglue:UpdateTablezglue:GetUserDefinedFunctionzglue:GetDatabasezglue:GetDatabaseszglue:GetConnectionzglue:GetPartitionszglue:DeleteTablezarn:aws:glue:{}:{}:*)r#r$ resources)Z statementsZkdaRolezkinesisanalytics.amazonaws.com) assumed_byZmanaged_policiesZAmazonVPCFullAccess)policyZ kdaStudiozZEPPELIN-FLINK-1_0Z INTERACTIVE)Zruntime_environmentZapplication_modeZservice_execution_roleZkdaSGzSecurity Group for KDA Studio)rrZyellowZfhvZfhvhvZgreenZ nycDataSetznyc-tlcz trip data/z_tripdata_2019-05.csv)bucketkey)Zs3_input_definitionZCSV,) delimiterZ header_row)Zcsvztlc-trip-record-data-2019-may-)inputformatformat_optionsnameZ dataBucketZnycDataSetRecipez$tlc-trip-record-data-2019-may-recipeZUNIONa)[["PULocationID","DOLocationID","tpep_pickup_datetime","tpep_dropoff_datetime"],["PULocationID","DOLocationID","pickup_datetime","dropoff_datetime"],["PULocationID","DOLocationID","lpep_pickup_datetime","lpep_dropoff_datetime"],["PULocationID","DOLocationID","pickup_datetime","dropoff_datetime"]]zq["tlc-trip-record-data-2019-may-fhv","tlc-trip-record-data-2019-may-green","tlc-trip-record-data-2019-may-fhvhv"]a[{"S3InputDefinition":{"Bucket":"nyc-tlc","Key":"trip data/fhv_tripdata_2019-05.csv"}},{"S3InputDefinition":{"Bucket":"nyc-tlc","Key":"trip data/green_tripdata_2019-05.csv"}},{"S3InputDefinition":{"Bucket":"nyc-tlc","Key":"trip data/fhvhv_tripdata_2019-05.csv"}}]zN["PULocationID","DOLocationID","tpep_pickup_datetime","tpep_dropoff_datetime"])ZdatasetsColumnsZsecondaryDatasetNamesZsecondaryInputsZtargetColumnNames) operation parameters)action)r8Zstepsz"tlc-trip-record-data-2019-may-rolezdatabrew.amazonaws.comZ getDataPolicyz s3:ListBucketz s3:GetObjectzarn:aws:s3:::nyc-tlc/*zarn:aws:s3:::nyc-tlc)r$r#r.)r/Zinline_policiesZ publishRecipez databrew:*ZCustomResourcePublishRecipeZDataBrewName)Zphysical_resource_idr;r+r:ZdeleteRecipeVersionz1.0)r<Z RecipeVersion)r;r+r:)r0 log_retention on_updateZ on_deleteZ nycDataSetJobrz-job)r1ZBZIP2)r4)locationr6Zcompression_formatZ overwriter7)r8r%ZRECIPE)role_arnZ dataset_namer8ZoutputsZrecipetypeZ startBrewJobZCustomResourceStartBrewJobZ startJobRun)r0r=r>Z producerTaskZ4096Z8192)Z compatibilitycpuZ memory_mibZproducerContainerz ../producer/)Z BUCKET_NAMEZ STREAM_NAMEii )Z stream_prefix)r'r(rBZmemory_limit_mibloggingZbrewJobeCompletedz aws.databrewzDataBrew Job State ChangeZ SUCCEEDED)ZjobNamestate)sourceZ detail_typeZdetail)clusterZtask_definitionZ task_count)r!Z event_patternZtargetsZ kibanaUrlzhttp://z/_plugin/kibana)valueZ streamNameZ esVPCEndpoint)usuper__init__rofregionaccounts3Bucketcdk RemovalPolicyDESTROY s3_deploymentZBucketDeploymentZSourceassetec2ZVpckinesisZStreamZ SecurityGroupZadd_ingress_ruleZPeeripv4PortZtcpiamZCfnServiceLinkedRoleesZDomainZElasticsearchVersionZV7_10ZCapacityConfigZSubnetSelectionZ SubnetTypePUBLICZ EbsOptionsZEbsDeviceVolumeTypeZGP2ZEncryptionAtRestOptionsZZoneAwarenessConfigZPolicyStatementZEffectZALLOWZ ArnPrincipal ecs_patternsZ%ApplicationLoadBalancedFargateServiceZ'ApplicationLoadBalancedTaskImageOptionsecsZContainerImage from_assetZdomain_endpointZ load_balancerZ connectionsZ allow_fromglueZDatabaseZInterfaceVpcEndpointZInterfaceVpcEndpointAwsServiceZGLUEZKINESIS_STREAMSZ ManagedPolicyr6ZRoleZServicePrincipalZ grant_readZadd_managed_policyZfrom_aws_managed_policy_nameZgrant_read_writekdaZCfnApplicationV2r@databrewZ CfnDatasetZ InputPropertyZS3LocationPropertyZFormatOptionsPropertyZCsvOptionsPropertyZ CfnRecipeZRecipeStepPropertyZActionPropertyZPolicyDocumentr ZAwsCustomResourceZAwsCustomResourcePolicyZfrom_statementslogsZ RetentionDaysZONE_DAYZ AwsSdkCallZPhysicalResourceIdr8ZCfnJobZOutputProperty bucket_nameZOutputFormatOptionsPropertyZCsvOutputOptionsPropertyZRecipePropertyrefnodeadd_dependencyZTaskDefinitionZ CompatibilityZFARGATEZ add_container stream_nameZ LogDriverr Z grant_writeZ task_roleeventsZRuleZ EventPattern events_targetZEcsTaskrG CfnOutputload_balancer_dns_name)%selfrrrrrkwargsrL account_idZconnectors_bucketZdeploy_connectorrZ data_streamZ es_cluster_sgZes_service_linked_roleZ es_clusterZes_proxy_serviceZ glue_databaseZ glue_vpceZ kinesis_vpceZ kda_policyZkda_roleZ kda_studioZkda_sgZ data_sourcessrcZ data_bucketZ brew_recipeZ brew_roleZpublish_recipeZbrew_jobZstart_brew_jobZproducer_task_definitionZbrew_job_completed_ruleZ kibana_urlrgZes_vpc_endpoint) __class__\/Users/flomair/amazon-kda-studio-flinksql-example/cdk/flink_sql_demo/flink_sql_demo_stack.pyrJs                           zFlinkSqlDemoStack.__init__) __name__ __module__ __qualname__rP ConstructstrboolrJ __classcell__rqrq)rprrrs rN)"aws_cdkrrPrrVrrUrrZrr`rrYrr]r r\r rar rNr r rbrrSrrhrrirr_StackrrqrqrqrrsH