UNPKG

@cdklabs/aws-data-solutions-framework

Version:
65 lines 9.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cdk = require("aws-cdk-lib"); const dsf = require("../../index"); const aws_iam_1 = require("aws-cdk-lib/aws-iam"); class ExampleOpenSearchApiStack extends cdk.Stack { constructor(scope, id, props) { super(scope, id, props); this.node.setContext('@data-solutions-framework-on-aws/removeDataOnDestroy', true); /// !show const domainEndpoint = 'search-XXXXXX.XXXXXX.es.amazonaws.com'; const apiRole = aws_iam_1.Role.fromRoleName(this, 'ApiRole', '<IAMRoleWithOpenSearchPermissions>'); const osApi = new dsf.consumption.OpenSearchApi(this, 'MyOpenSearchApi', { iamHandlerRole: apiRole, openSearchEndpoint: domainEndpoint, openSearchClusterType: dsf.consumption.OpenSearchClusterType.PROVISIONED, removalPolicy: cdk.RemovalPolicy.DESTROY }); /// !hide //Add another admin osApi.addRoleMapping('AnotherAdmin', 'all_access', 'sometestId'); //create index template const indexTemplateCr = osApi.callOpenSearchApi('CreateIndexTemplate', '_index_template/movies', { "index_patterns": [ "movies-*" ], "template": { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0 } }, "mappings": { "properties": { "title": { "type": "text" }, "year": { "type": "integer" } } } } }); const metadata = '{ "index" : { "_index" : "movies-02"}}'; const bulk = `${metadata} {"title": "Barbie", "year": 2023} ${metadata} {"title": "Openheimer", "year": 2023}`; // bulk ingestion using POST const bulkCr = osApi.callOpenSearchApi('AddBulk', '_bulk', bulk + '\n\n', 'POST'); //dependency to enforce sequential API calls bulkCr.node.addDependency(indexTemplateCr); const add1Cr = osApi.callOpenSearchApi('AddData1', 'movies-01/_doc/1111', { "title": "Rush", "year": 2013 }, 'PUT'); add1Cr.node.addDependency(indexTemplateCr); const add2Cr = osApi.callOpenSearchApi('AddData3', 'movies-01/_doc/2222', { "title": "Toy Story", "year": 2014 }, 'PUT'); add2Cr.node.addDependency(indexTemplateCr); const add3Cr = osApi.callOpenSearchApi('AddData4', 'movies-01/_doc', { "title": "The Little Mermaid", "year": 2015 }, 'POST'); add3Cr.node.addDependency(indexTemplateCr); } } const app = new cdk.App(); new ExampleOpenSearchApiStack(app, 'ExampleOpenSearchApiStandaloneStack', { env: { region: 'us-east-1' } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnNlYXJjaC1hcGktc3RhbmRhbG9uZS1jb25zdHJ1Y3Rvci5saXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uc3VtcHRpb24vZXhhbXBsZXMvb3BlbnNlYXJjaC1hcGktc3RhbmRhbG9uZS1jb25zdHJ1Y3Rvci5saXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtQ0FBbUM7QUFFbkMsbUNBQW1DO0FBQ25DLGlEQUEyQztBQUczQyxNQUFNLHlCQUEwQixTQUFRLEdBQUcsQ0FBQyxLQUFLO0lBRS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUcsS0FBb0I7UUFFN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsc0RBQXNELEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkYsU0FBUztRQUNULE1BQU0sY0FBYyxHQUFDLHVDQUF1QyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLGNBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFDO1lBQ3RFLGNBQWMsRUFBQyxPQUFPO1lBQ3RCLGtCQUFrQixFQUFDLGNBQWM7WUFDakMscUJBQXFCLEVBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXO1lBQ3ZFLGFBQWEsRUFBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsU0FBUztRQUNULG1CQUFtQjtRQUNuQixLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEUsdUJBQXVCO1FBQ3ZCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsRUFBQyx3QkFBd0IsRUFDNUY7WUFDRSxnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVTthQUNYO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCLEVBQUUsQ0FBQzt3QkFDckIsb0JBQW9CLEVBQUUsQ0FBQztxQkFDeEI7aUJBQ0Y7Z0JBQ0QsVUFBVSxFQUFFO29CQUNWLFlBQVksRUFBRTt3QkFDWixPQUFPLEVBQUU7NEJBQ1AsTUFBTSxFQUFFLE1BQU07eUJBQ2Y7d0JBQ0QsTUFBTSxFQUFFOzRCQUNOLE1BQU0sRUFBRSxTQUFTO3lCQUNsQjtxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUMsd0NBQXdDLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUMsR0FBRyxRQUFROztRQUVwQixRQUFROzRDQUM0QixDQUFDO1FBRXZDLDRCQUE0QjtRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxJQUFJLEdBQUMsTUFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLHFCQUFxQixFQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakgsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RILE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUMsRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNILE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRy9DLENBQUM7Q0FDRjtBQUVELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLElBQUkseUJBQXlCLENBQUMsR0FBRyxFQUFFLHFDQUFxQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUMsTUFBTSxFQUFDLFdBQVcsRUFBQyxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGRzZiBmcm9tICcuLi8uLi9pbmRleCc7XG5pbXBvcnQgeyBSb2xlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5cblxuY2xhc3MgRXhhbXBsZU9wZW5TZWFyY2hBcGlTdGFjayBleHRlbmRzIGNkay5TdGFjayB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyAsIHByb3BzOmNkay5TdGFja1Byb3BzKSB7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLm5vZGUuc2V0Q29udGV4dCgnQGRhdGEtc29sdXRpb25zLWZyYW1ld29yay1vbi1hd3MvcmVtb3ZlRGF0YU9uRGVzdHJveScsIHRydWUpO1xuICAgIC8vLyAhc2hvd1xuICAgIGNvbnN0IGRvbWFpbkVuZHBvaW50PSdzZWFyY2gtWFhYWFhYLlhYWFhYWC5lcy5hbWF6b25hd3MuY29tJztcbiAgICBjb25zdCBhcGlSb2xlID0gUm9sZS5mcm9tUm9sZU5hbWUodGhpcywgJ0FwaVJvbGUnLCAnPElBTVJvbGVXaXRoT3BlblNlYXJjaFBlcm1pc3Npb25zPicpO1xuICAgIGNvbnN0IG9zQXBpID0gbmV3IGRzZi5jb25zdW1wdGlvbi5PcGVuU2VhcmNoQXBpKHRoaXMsICdNeU9wZW5TZWFyY2hBcGknLHtcbiAgICAgIGlhbUhhbmRsZXJSb2xlOmFwaVJvbGUsXG4gICAgICBvcGVuU2VhcmNoRW5kcG9pbnQ6ZG9tYWluRW5kcG9pbnQsXG4gICAgICBvcGVuU2VhcmNoQ2x1c3RlclR5cGU6ZHNmLmNvbnN1bXB0aW9uLk9wZW5TZWFyY2hDbHVzdGVyVHlwZS5QUk9WSVNJT05FRCxcbiAgICAgIHJlbW92YWxQb2xpY3k6Y2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgIH0pO1xuICAgIC8vLyAhaGlkZVxuICAgIC8vQWRkIGFub3RoZXIgYWRtaW5cbiAgICBvc0FwaS5hZGRSb2xlTWFwcGluZygnQW5vdGhlckFkbWluJywgJ2FsbF9hY2Nlc3MnLCdzb21ldGVzdElkJyk7XG5cbiAgICAvL2NyZWF0ZSBpbmRleCB0ZW1wbGF0ZVxuICAgIGNvbnN0IGluZGV4VGVtcGxhdGVDciA9IG9zQXBpLmNhbGxPcGVuU2VhcmNoQXBpKCdDcmVhdGVJbmRleFRlbXBsYXRlJywnX2luZGV4X3RlbXBsYXRlL21vdmllcycsXG4gICAgICB7XG4gICAgICAgIFwiaW5kZXhfcGF0dGVybnNcIjogW1xuICAgICAgICAgIFwibW92aWVzLSpcIlxuICAgICAgICBdLFxuICAgICAgICBcInRlbXBsYXRlXCI6IHtcbiAgICAgICAgICBcInNldHRpbmdzXCI6IHtcbiAgICAgICAgICAgIFwiaW5kZXhcIjoge1xuICAgICAgICAgICAgICBcIm51bWJlcl9vZl9zaGFyZHNcIjogMSxcbiAgICAgICAgICAgICAgXCJudW1iZXJfb2ZfcmVwbGljYXNcIjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtYXBwaW5nc1wiOiB7XG4gICAgICAgICAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJ0ZXh0XCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ5ZWFyXCI6IHtcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBtZXRhZGF0YT0neyBcImluZGV4XCIgOiB7IFwiX2luZGV4XCIgOiBcIm1vdmllcy0wMlwifX0nO1xuICAgICAgY29uc3QgYnVsaz1gJHttZXRhZGF0YX1cbiAgICAgIHtcInRpdGxlXCI6IFwiQmFyYmllXCIsIFwieWVhclwiOiAyMDIzfVxuICAgICAgJHttZXRhZGF0YX1cbiAgICAgIHtcInRpdGxlXCI6IFwiT3BlbmhlaW1lclwiLCBcInllYXJcIjogMjAyM31gO1xuICAgICAgXG4gICAgICAvLyBidWxrIGluZ2VzdGlvbiB1c2luZyBQT1NUXG4gICAgICBjb25zdCBidWxrQ3IgPSBvc0FwaS5jYWxsT3BlblNlYXJjaEFwaSgnQWRkQnVsaycsJ19idWxrJyxidWxrKydcXG5cXG4nLCdQT1NUJyk7XG4gICAgICAvL2RlcGVuZGVuY3kgdG8gZW5mb3JjZSBzZXF1ZW50aWFsIEFQSSBjYWxsc1xuICAgICAgYnVsa0NyLm5vZGUuYWRkRGVwZW5kZW5jeShpbmRleFRlbXBsYXRlQ3IpO1xuICBcbiAgICAgIGNvbnN0IGFkZDFDciA9IG9zQXBpLmNhbGxPcGVuU2VhcmNoQXBpKCdBZGREYXRhMScsICdtb3ZpZXMtMDEvX2RvYy8xMTExJyx7XCJ0aXRsZVwiOiBcIlJ1c2hcIiwgXCJ5ZWFyXCI6IDIwMTN9LCAnUFVUJyk7XG4gICAgICBhZGQxQ3Iubm9kZS5hZGREZXBlbmRlbmN5KGluZGV4VGVtcGxhdGVDcik7XG4gICAgICBjb25zdCBhZGQyQ3IgPSBvc0FwaS5jYWxsT3BlblNlYXJjaEFwaSgnQWRkRGF0YTMnLCAnbW92aWVzLTAxL19kb2MvMjIyMicse1widGl0bGVcIjogXCJUb3kgU3RvcnlcIiwgXCJ5ZWFyXCI6IDIwMTR9LCAnUFVUJyk7XG4gICAgICBhZGQyQ3Iubm9kZS5hZGREZXBlbmRlbmN5KGluZGV4VGVtcGxhdGVDcik7XG4gICAgICBjb25zdCBhZGQzQ3IgPSBvc0FwaS5jYWxsT3BlblNlYXJjaEFwaSgnQWRkRGF0YTQnLCAnbW92aWVzLTAxL19kb2MnLHtcInRpdGxlXCI6IFwiVGhlIExpdHRsZSBNZXJtYWlkXCIsIFwieWVhclwiOiAyMDE1fSwgJ1BPU1QnKTtcbiAgICAgIGFkZDNDci5ub2RlLmFkZERlcGVuZGVuY3koaW5kZXhUZW1wbGF0ZUNyKTtcbiAgICBcblxuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5uZXcgRXhhbXBsZU9wZW5TZWFyY2hBcGlTdGFjayhhcHAsICdFeGFtcGxlT3BlblNlYXJjaEFwaVN0YW5kYWxvbmVTdGFjaycsIHsgZW52OiB7cmVnaW9uOid1cy1lYXN0LTEnfSB9KTsiXX0=