UNPKG

@project-lakechain/opensearch-index

Version:

Creates an OpenSearch index using AWS CDK.

110 lines 9.83 kB
"use strict"; /* * Copyright (C) 2023 Amazon.com, Inc. or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = void 0; const credential_provider_node_1 = require("@aws-sdk/credential-provider-node"); const opensearch_1 = require("@opensearch-project/opensearch"); const aws_1 = require("@opensearch-project/opensearch/aws"); /** * The index name. */ const INDEX_NAME = process.env.OPENSEARCH_INDEX_NAME; /** * The OpenSearch endpoint. */ const OPENSEARCH_ENDPOINT = process.env.OPENSEARCH_ENDPOINT; /** * The index body attributes. */ const BODY_PARAMETERS = JSON.parse(process.env.BODY_PARAMETERS); /** * The OpenSearch service identifier. */ const SERVICE_IDENTIFIER = process.env.SERVICE_IDENTIFIER; /** * The OpenSearch client. */ const client = new opensearch_1.Client({ ...(0, aws_1.AwsSigv4Signer)({ region: process.env.AWS_REGION, service: SERVICE_IDENTIFIER, getCredentials: () => { const credentialsProvider = (0, credential_provider_node_1.defaultProvider)(); return credentialsProvider(); } }), node: OPENSEARCH_ENDPOINT }); /** * Creates the index associated with the given event. * @returns the response to the custom resource event * @throws if an error occurs */ const onCreate = async () => { try { await client.indices.create({ index: INDEX_NAME, body: BODY_PARAMETERS }); } catch (error) { // We don't catch index already exists errors. if (error.meta?.body?.error?.type !== 'resource_already_exists_exception') { throw error; } } return { PhysicalResourceId: INDEX_NAME }; }; /** * Deletes the index associated with the given event. * @returns the response to the custom resource event * @throws if an error occurs */ const onDelete = async () => { try { await client.indices.delete({ index: INDEX_NAME }); } catch (error) { // The index might not exist anymore. if (error.statusCode !== 404) { throw error; } } return { PhysicalResourceId: INDEX_NAME }; }; /** * The custom resource entry point. * @param event the CloudFormation custom resource event * @returns the response to the custom resource event */ const handler = (event) => { if (event.RequestType === 'Create') { return (onCreate()); } else if (event.RequestType === 'Delete') { return (onDelete()); } return { PhysicalResourceId: INDEX_NAME }; }; exports.handler = handler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9pbmRleC1tYW5hZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRzs7O0FBRUgsZ0ZBQW9FO0FBQ3BFLCtEQUF3RDtBQUN4RCw0REFBb0U7QUFHcEU7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUErQixDQUFDO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUE2QixDQUFDO0FBRXRFOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQXlCLENBQUMsQ0FBQztBQUUxRTs7R0FFRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBdUMsQ0FBQztBQUUvRTs7R0FFRztBQUNILE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQU0sQ0FBQztJQUN4QixHQUFHLElBQUEsb0JBQWMsRUFBQztRQUNoQixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFXO1FBQy9CLE9BQU8sRUFBRSxrQkFBa0I7UUFDM0IsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUNuQixNQUFNLG1CQUFtQixHQUFHLElBQUEsMENBQWUsR0FBRSxDQUFDO1lBQzlDLE9BQU8sbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRSxtQkFBbUI7Q0FDMUIsQ0FBQyxDQUFDO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzFCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDMUIsS0FBSyxFQUFFLFVBQVU7WUFDakIsSUFBSSxFQUFFLGVBQWU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsOENBQThDO1FBQzlDLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxtQ0FBbUMsRUFBRSxDQUFDO1lBQzFFLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsa0JBQWtCLEVBQUUsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzFCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixxQ0FBcUM7UUFDckMsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsa0JBQWtCLEVBQUUsVUFBVTtLQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNJLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7SUFDcEMsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxrQkFBa0IsRUFBRSxVQUFVO0tBQy9CLENBQUM7QUFDSixDQUFDLENBQUM7QUFWVyxRQUFBLE9BQU8sV0FVbEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIzIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBkZWZhdWx0UHJvdmlkZXIgfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVyLW5vZGUnO1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnQG9wZW5zZWFyY2gtcHJvamVjdC9vcGVuc2VhcmNoJztcbmltcG9ydCB7IEF3c1NpZ3Y0U2lnbmVyIH0gZnJvbSAnQG9wZW5zZWFyY2gtcHJvamVjdC9vcGVuc2VhcmNoL2F3cyc7XG5pbXBvcnQgeyBTZXJ2aWNlSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zL3NlcnZpY2UtaWRlbnRpZmllcic7XG5cbi8qKlxuICogVGhlIGluZGV4IG5hbWUuXG4gKi9cbmNvbnN0IElOREVYX05BTUUgPSBwcm9jZXNzLmVudi5PUEVOU0VBUkNIX0lOREVYX05BTUUgYXMgc3RyaW5nO1xuXG4vKipcbiAqIFRoZSBPcGVuU2VhcmNoIGVuZHBvaW50LlxuICovXG5jb25zdCBPUEVOU0VBUkNIX0VORFBPSU5UID0gcHJvY2Vzcy5lbnYuT1BFTlNFQVJDSF9FTkRQT0lOVCBhcyBzdHJpbmc7XG5cbi8qKlxuICogVGhlIGluZGV4IGJvZHkgYXR0cmlidXRlcy5cbiAqL1xuY29uc3QgQk9EWV9QQVJBTUVURVJTID0gSlNPTi5wYXJzZShwcm9jZXNzLmVudi5CT0RZX1BBUkFNRVRFUlMgYXMgc3RyaW5nKTtcblxuLyoqXG4gKiBUaGUgT3BlblNlYXJjaCBzZXJ2aWNlIGlkZW50aWZpZXIuXG4gKi9cbmNvbnN0IFNFUlZJQ0VfSURFTlRJRklFUiA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfSURFTlRJRklFUiBhcyBTZXJ2aWNlSWRlbnRpZmllcjtcblxuLyoqXG4gKiBUaGUgT3BlblNlYXJjaCBjbGllbnQuXG4gKi9cbmNvbnN0IGNsaWVudCA9IG5ldyBDbGllbnQoe1xuICAuLi5Bd3NTaWd2NFNpZ25lcih7XG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5BV1NfUkVHSU9OISxcbiAgICBzZXJ2aWNlOiBTRVJWSUNFX0lERU5USUZJRVIsXG4gICAgZ2V0Q3JlZGVudGlhbHM6ICgpID0+IHtcbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBkZWZhdWx0UHJvdmlkZXIoKTtcbiAgICAgIHJldHVybiBjcmVkZW50aWFsc1Byb3ZpZGVyKCk7XG4gICAgfVxuICB9KSxcbiAgbm9kZTogT1BFTlNFQVJDSF9FTkRQT0lOVFxufSk7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBldmVudC5cbiAqIEByZXR1cm5zIHRoZSByZXNwb25zZSB0byB0aGUgY3VzdG9tIHJlc291cmNlIGV2ZW50XG4gKiBAdGhyb3dzIGlmIGFuIGVycm9yIG9jY3Vyc1xuICovXG5jb25zdCBvbkNyZWF0ZSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbGllbnQuaW5kaWNlcy5jcmVhdGUoe1xuICAgICAgaW5kZXg6IElOREVYX05BTUUsXG4gICAgICBib2R5OiBCT0RZX1BBUkFNRVRFUlNcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIFdlIGRvbid0IGNhdGNoIGluZGV4IGFscmVhZHkgZXhpc3RzIGVycm9ycy5cbiAgICBpZiAoZXJyb3IubWV0YT8uYm9keT8uZXJyb3I/LnR5cGUgIT09ICdyZXNvdXJjZV9hbHJlYWR5X2V4aXN0c19leGNlcHRpb24nKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogSU5ERVhfTkFNRVxuICB9O1xufTtcblxuLyoqXG4gKiBEZWxldGVzIHRoZSBpbmRleCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGV2ZW50LlxuICogQHJldHVybnMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnRcbiAqIEB0aHJvd3MgaWYgYW4gZXJyb3Igb2NjdXJzXG4gKi9cbmNvbnN0IG9uRGVsZXRlID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGNsaWVudC5pbmRpY2VzLmRlbGV0ZSh7IGluZGV4OiBJTkRFWF9OQU1FIH0pO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgLy8gVGhlIGluZGV4IG1pZ2h0IG5vdCBleGlzdCBhbnltb3JlLlxuICAgIGlmIChlcnJvci5zdGF0dXNDb2RlICE9PSA0MDQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBJTkRFWF9OQU1FXG4gIH07XG59O1xuXG4vKipcbiAqIFRoZSBjdXN0b20gcmVzb3VyY2UgZW50cnkgcG9pbnQuXG4gKiBAcGFyYW0gZXZlbnQgdGhlIENsb3VkRm9ybWF0aW9uIGN1c3RvbSByZXNvdXJjZSBldmVudFxuICogQHJldHVybnMgdGhlIHJlc3BvbnNlIHRvIHRoZSBjdXN0b20gcmVzb3VyY2UgZXZlbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICBpZiAoZXZlbnQuUmVxdWVzdFR5cGUgPT09ICdDcmVhdGUnKSB7XG4gICAgcmV0dXJuIChvbkNyZWF0ZSgpKTtcbiAgfSBlbHNlIGlmIChldmVudC5SZXF1ZXN0VHlwZSA9PT0gJ0RlbGV0ZScpIHtcbiAgICByZXR1cm4gKG9uRGVsZXRlKCkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IElOREVYX05BTUVcbiAgfTtcbn07XG4iXX0=