raindancers-network
Version:
Extensions to the ec2.Vpc Constructs
61 lines • 9.01 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolveSubnetGroupName = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const path = require("path");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const cdk = require("aws-cdk-lib");
const constructs = require("constructs");
/**
* Creates a period task to update the SSM Agent on an EC2 Instance
*/
class ResolveSubnetGroupName extends constructs.Construct {
constructor(scope, id, props) {
super(scope, id);
// get the owner of the VPC via a SDK Call.
const getVpcOwner = new aws_cdk_lib_1.custom_resources.AwsCustomResource(this, 'GetVpcOwner', {
onCreate: {
service: 'EC2',
action: 'describeVpcs',
parameters: {
VpcIds: [props.vpc.vpcId],
},
physicalResourceId: aws_cdk_lib_1.custom_resources.PhysicalResourceId.of(props.vpc.vpcArn),
},
policy: aws_cdk_lib_1.custom_resources.AwsCustomResourcePolicy.fromSdkCalls({
resources: aws_cdk_lib_1.custom_resources.AwsCustomResourcePolicy.ANY_RESOURCE,
}),
});
const vpcOwner = getVpcOwner.getResponseField('Vpcs.0.OwnerId');
const resolverFn = new aws_cdk_lib_1.aws_lambda.Function(this, 'ResolverFunction', {
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../../lambda/evpc')),
runtime: aws_cdk_lib_1.aws_lambda.Runtime.PYTHON_3_9,
handler: 'flowlogintegration.on_event',
});
resolverFn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW,
resources: [`arn:aws:iam::${vpcOwner}:role/read-${props.vpc.vpcId}-${cdk.Aws.ACCOUNT_ID}`],
actions: ['sts:AssumeRole'],
}));
const subnetNameResolver = new cdk.CustomResource(this, 'ResolveSubnetGroupCR', {
serviceToken: new aws_cdk_lib_1.custom_resources.Provider(this, 'resolverFnCR', {
onEventHandler: resolverFn,
}).serviceToken,
properties: {
vpcId: props.vpc.vpcId,
subnetGroupName: props.subnetGroupName,
assumeRole: `arn:aws:iam::${vpcOwner}:role/read-${props.vpc.vpcId}-${cdk.Aws.ACCOUNT_ID}`,
},
});
let subnetIds = [];
for (let i = 0; i < props.azcount; i++) {
subnetIds.push(aws_cdk_lib_1.aws_ec2.Subnet.fromSubnetId(this, `subnet${i}`, subnetNameResolver.getAttString(`Subnet${i}`)));
}
this.subnetSelection = { subnets: subnetIds };
}
}
exports.ResolveSubnetGroupName = ResolveSubnetGroupName;
_a = JSII_RTTI_SYMBOL_1;
ResolveSubnetGroupName[_a] = { fqn: "raindancers-network.network.ResolveSubnetGroupName", version: "1.29.3" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZVN1Ym5ldEdyb3VwTmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZwYy9yZXNvbHZlU3VibmV0R3JvdXBOYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3Qiw2Q0FNcUI7QUFDckIsbUNBQW1DO0FBQ25DLHlDQUF5QztBQVV6Qzs7RUFFRTtBQUNGLE1BQWEsc0JBQXVCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFJOUQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUFrQztRQUN0RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDJDQUEyQztRQUUzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLDhCQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMvRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztpQkFDMUI7Z0JBQ0Qsa0JBQWtCLEVBQUUsOEJBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7YUFDL0Q7WUFDRCxNQUFNLEVBQUUsOEJBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUM7Z0JBQzlDLFNBQVMsRUFBRSw4QkFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVk7YUFDbkQsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBR2hFLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ2xFLElBQUksRUFBRSx3QkFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUMxRSxPQUFPLEVBQUUsd0JBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVTtZQUN0QyxPQUFPLEVBQUUsNkJBQTZCO1NBQ3hDLENBQUMsQ0FBQztRQUdILFVBQVUsQ0FBQyxlQUFlLENBQ3ZCLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFDeEIsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLFFBQVEsY0FBYyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFGLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQzVCLENBQUMsQ0FDSixDQUFDO1FBRUYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQzdFLFlBQVksRUFBRSxJQUFJLDhCQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7Z0JBQ2xELGNBQWMsRUFBRSxVQUFVO2FBQzNCLENBQUMsQ0FBQyxZQUFZO1lBQ2YsVUFBVSxFQUFFO2dCQUNWLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7Z0JBQ3RCLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtnQkFDdEMsVUFBVSxFQUFFLGdCQUFnQixRQUFRLGNBQWMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7YUFDMUY7U0FDSCxDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNHO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUUvQyxDQUFDOztBQTNESCx3REE0REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgYXdzX2VjMiBhcyBlYzIsXG4gIGN1c3RvbV9yZXNvdXJjZXMgYXMgY3IsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfbGFtYmRhLFxufVxuICBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVTdWJuZXRHcm91cE5hbWVQcm9wcyB7XG4gIHJlYWRvbmx5IHZwYzogZWMyLlZwYyB8IGVjMi5JVnBjO1xuICByZWFkb25seSBzdWJuZXRHcm91cE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYXpjb3VudDogbnVtYmVyO1xufVxuXG5cbi8qKlxuKiBDcmVhdGVzIGEgcGVyaW9kIHRhc2sgdG8gdXBkYXRlIHRoZSBTU00gQWdlbnQgb24gYW4gRUMyIEluc3RhbmNlXG4qL1xuZXhwb3J0IGNsYXNzIFJlc29sdmVTdWJuZXRHcm91cE5hbWUgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG5cbiAgc3VibmV0U2VsZWN0aW9uOiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlc29sdmVTdWJuZXRHcm91cE5hbWVQcm9wcykge1xuXHQgIHN1cGVyKHNjb3BlLCBpZCk7XG5cblx0ICAvLyBnZXQgdGhlIG93bmVyIG9mIHRoZSBWUEMgdmlhIGEgU0RLIENhbGwuXG5cblx0ICBjb25zdCBnZXRWcGNPd25lciA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCAnR2V0VnBjT3duZXInLCB7XG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiAnRUMyJyxcbiAgICAgICAgYWN0aW9uOiAnZGVzY3JpYmVWcGNzJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIFZwY0lkczogW3Byb3BzLnZwYy52cGNJZF0sXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKHByb3BzLnZwYy52cGNBcm4pLFxuICAgICAgfSxcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHtcbiAgICAgICAgcmVzb3VyY2VzOiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UsXG4gICAgICB9KSxcblx0ICB9KTtcblxuXHQgIGNvbnN0IHZwY093bmVyID0gZ2V0VnBjT3duZXIuZ2V0UmVzcG9uc2VGaWVsZCgnVnBjcy4wLk93bmVySWQnKTtcblxuXG5cdCAgY29uc3QgcmVzb2x2ZXJGbiA9IG5ldyBhd3NfbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdSZXNvbHZlckZ1bmN0aW9uJywge1xuICAgICAgY29kZTogYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vbGFtYmRhL2V2cGMnKSksXG4gICAgICBydW50aW1lOiBhd3NfbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOSxcbiAgICAgIGhhbmRsZXI6ICdmbG93bG9naW50ZWdyYXRpb24ub25fZXZlbnQnLFxuXHQgIH0pO1xuXG5cblx0ICByZXNvbHZlckZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFtgYXJuOmF3czppYW06OiR7dnBjT3duZXJ9OnJvbGUvcmVhZC0ke3Byb3BzLnZwYy52cGNJZH0tJHtjZGsuQXdzLkFDQ09VTlRfSUR9YF0sXG4gICAgICAgIGFjdGlvbnM6IFsnc3RzOkFzc3VtZVJvbGUnXSxcbiAgICAgIH0pLFxuXHQgICk7XG5cblx0ICBjb25zdCBzdWJuZXROYW1lUmVzb2x2ZXIgPSBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvbHZlU3VibmV0R3JvdXBDUicsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdyZXNvbHZlckZuQ1InLCB7XG4gICAgICAgIG9uRXZlbnRIYW5kbGVyOiByZXNvbHZlckZuLFxuICAgICAgfSkuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgICAgICBzdWJuZXRHcm91cE5hbWU6IHByb3BzLnN1Ym5ldEdyb3VwTmFtZSxcbiAgICAgICAgYXNzdW1lUm9sZTogYGFybjphd3M6aWFtOjoke3ZwY093bmVyfTpyb2xlL3JlYWQtJHtwcm9wcy52cGMudnBjSWR9LSR7Y2RrLkF3cy5BQ0NPVU5UX0lEfWAsXG4gICAgICB9LFxuXHQgIH0pO1xuXG5cdCAgbGV0IHN1Ym5ldElkczogZWMyLklTdWJuZXRbXSA9IFtdO1xuXHQgIGZvciAobGV0IGk9MDsgaSA8IHByb3BzLmF6Y291bnQ7IGkrKykge1xuXHQgIFx0c3VibmV0SWRzLnB1c2goZWMyLlN1Ym5ldC5mcm9tU3VibmV0SWQodGhpcywgYHN1Ym5ldCR7aX1gLCBzdWJuZXROYW1lUmVzb2x2ZXIuZ2V0QXR0U3RyaW5nKGBTdWJuZXQke2l9YCkpKTtcblx0ICB9XG5cblx0ICB0aGlzLnN1Ym5ldFNlbGVjdGlvbiA9IHsgc3VibmV0czogc3VibmV0SWRzIH07XG5cbiAgfVxufSJdfQ==