in lib/constructs/rds-data-set-enrollment.ts [33:85]
constructor(scope: Construct, id: string, props: RDSdataSetSetEnrollmentProps) {
super(scope, id, props);
const dataSetName = props.DataSetName;
const dataSetSourceConnectionName = `${dataSetName}-src`
let includeTargets = new Array<glue.CfnCrawler.JdbcTargetProperty>();
for(let includePath of props.JdbcTargetIncludePaths ){
includeTargets.push({
path: includePath,
exclusions: [],
connectionName: dataSetSourceConnectionName
});
}
this.DataEnrollment = new DataSetEnrollment(this, 'rdsDatasetEnrollment', {
dataLakeBucket: props.dataLakeBucket,
MaxDPUs: props.MaxDPUs,
dataSetName: dataSetName,
SourceConnectionInput: {
connectionProperties: {
USERNAME: props.databaseSecret.secretValueFromJson('username'),
JDBC_ENFORCE_SSL: "false",
PASSWORD: props.databaseSecret.secretValueFromJson('password'),
JDBC_CONNECTION_URL: `${this.jdbcConnStringPrefix}${props.database.dbInstanceEndpointAddress}:${this.jdbcConnStringPort}/${props.databaseSidOrServiceName}`
}
,connectionType: "JDBC"
,description: `${dataSetName} connection`
,name: dataSetSourceConnectionName
,physicalConnectionRequirements: {
availabilityZone: props.AccessSubnet.availabilityZone,
subnetId: props.AccessSubnet.subnetId,
securityGroupIdList: [props.accessSecurityGroup.securityGroupId],
}
},
SourceTargets: {
jdbcTargets: includeTargets
},
DataLakeTargets: {
s3Targets: [{ path: `s3://${props.dataLakeBucket.bucketName}/${dataSetName}/` }]
},
GlueScriptPath: props.GlueScriptPath,
GlueScriptArguments: props.GlueScriptArguments
});
this.createCoarseIamPolicy();
this.grantGlueRoleLakeFormationPermissions(this.DataEnrollment.DataSetGlueRole, props.DataSetName, 'src');
this.grantCoarseIamRead(this.DataEnrollment.DataSetGlueRole);
}