@aws-solutions-constructs/aws-lambda-opensearch 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
6
+ * with the License. A copy of the License is located at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
11
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
12
+ * and limitations under the License.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
16
+ const lib_1 = require("../lib");
17
+ const lambda = require("aws-cdk-lib/aws-lambda");
18
+ const defaults = require("@aws-solutions-constructs/core");
19
+ // Setup
20
+ const app = new aws_cdk_lib_1.App();
21
+ const stack = new aws_cdk_lib_1.Stack(app, defaults.generateIntegStackName(__filename), {
22
+ env: {
23
+ region: process.env.CDK_DEFAULT_REGION,
24
+ account: process.env.CDK_DEFAULT_ACCOUNT,
25
+ }
26
+ });
27
+ const lambdaProps = {
28
+ code: lambda.Code.fromAsset(`${__dirname}/lambda`),
29
+ runtime: lambda.Runtime.NODEJS_14_X,
30
+ handler: 'index.handler',
31
+ };
32
+ new lib_1.LambdaToOpenSearch(stack, 'test-lambda-opensearch', {
33
+ lambdaFunctionProps: lambdaProps,
34
+ openSearchDomainName: "deploytestwithvpcprops",
35
+ deployVpc: true,
36
+ vpcProps: {
37
+ cidr: '172.168.0.0/16',
38
+ }
39
+ });
40
+ // Synth
41
+ app.synth();
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcudnBjLXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaW50ZWcudnBjLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCw2Q0FBeUM7QUFDekMsZ0NBQTRDO0FBQzVDLGlEQUFpRDtBQUNqRCwyREFBMkQ7QUFFM0QsUUFBUTtBQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksaUJBQUcsRUFBRSxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQ3hFLEdBQUcsRUFBRTtRQUNILE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtRQUN0QyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7S0FDekM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFdBQVcsR0FBeUI7SUFDeEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxTQUFTLENBQUM7SUFDbEQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztJQUNuQyxPQUFPLEVBQUUsZUFBZTtDQUN6QixDQUFDO0FBRUYsSUFBSSx3QkFBa0IsQ0FBQyxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7SUFDdEQsbUJBQW1CLEVBQUUsV0FBVztJQUNoQyxvQkFBb0IsRUFBRSx3QkFBd0I7SUFDOUMsU0FBUyxFQUFFLElBQUk7SUFDZixRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsZ0JBQWdCO0tBQ3ZCO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsUUFBUTtBQUNSLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCAyMDIyIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTGFtYmRhVG9PcGVuU2VhcmNoIH0gZnJvbSBcIi4uL2xpYlwiO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnQGF3cy1zb2x1dGlvbnMtY29uc3RydWN0cy9jb3JlJztcblxuLy8gU2V0dXBcbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbmNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgZGVmYXVsdHMuZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZShfX2ZpbGVuYW1lKSwge1xuICBlbnY6IHtcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICB9XG59KTtcblxuY29uc3QgbGFtYmRhUHJvcHM6IGxhbWJkYS5GdW5jdGlvblByb3BzID0ge1xuICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQoYCR7X19kaXJuYW1lfS9sYW1iZGFgKSxcbiAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbn07XG5cbm5ldyBMYW1iZGFUb09wZW5TZWFyY2goc3RhY2ssICd0ZXN0LWxhbWJkYS1vcGVuc2VhcmNoJywge1xuICBsYW1iZGFGdW5jdGlvblByb3BzOiBsYW1iZGFQcm9wcyxcbiAgb3BlblNlYXJjaERvbWFpbk5hbWU6IFwiZGVwbG95dGVzdHdpdGh2cGNwcm9wc1wiLFxuICBkZXBsb3lWcGM6IHRydWUsXG4gIHZwY1Byb3BzOiB7XG4gICAgY2lkcjogJzE3Mi4xNjguMC4wLzE2JyxcbiAgfVxufSk7XG5cbi8vIFN5bnRoXG5hcHAuc3ludGgoKTsiXX0=
@@ -0,0 +1,60 @@
1
+ var AWS = require('aws-sdk');
2
+ var path = require('path');
3
+
4
+ console.log('Loading function');
5
+
6
+ var openSearchDomain = {
7
+ endpoint: process.env.DOMAIN_ENDPOINT,
8
+ region: process.env.AWS_REGION,
9
+ index: 'records',
10
+ doctype: 'movie'
11
+ };
12
+
13
+ var creds = new AWS.EnvironmentCredentials('AWS');
14
+ var endpoint = new AWS.Endpoint(openSearchDomain.endpoint);
15
+
16
+ function postDocumentToOpenSearch(doc, context) {
17
+ var req = new AWS.HttpRequest(endpoint);
18
+
19
+ req.method = 'POST';
20
+ req.path = path.join('/', openSearchDomain.index, openSearchDomain.doctype);
21
+ req.region = openSearchDomain.region;
22
+ req.body = doc;
23
+ req.headers['presigned-expires'] = false;
24
+ req.headers['Host'] = openSearchDomain.endpoint;
25
+ req.headers['Content-Type'] = 'application/json';
26
+
27
+ // Sign the request (Sigv4)
28
+ var signer = new AWS.Signers.V4(req, 'es');
29
+ signer.addAuthorization(creds, new Date());
30
+
31
+ // Post document to the OpenSearch Service
32
+ var send = new AWS.NodeHttpClient();
33
+
34
+ send.handleRequest(req, null, (httpResp) => {
35
+ var body = '';
36
+ httpResp.on('data', (chunk) => {
37
+ body += chunk;
38
+ });
39
+ httpResp.on('end', (chunk) => {
40
+ console.log('All movie records added to the OpenSearch Service.');
41
+ context.succeed();
42
+ });
43
+ }, (err) => {
44
+ console.log('Error: ' + err);
45
+ context.fail();
46
+ });
47
+ }
48
+
49
+ exports.handler = (event, context) => {
50
+ console.log('Received event:', JSON.stringify(event, null, 2));
51
+ postDocumentToOpenSearch("{ \"title\": \"Moby Dick\" }", context);
52
+ postDocumentToOpenSearch("{ \"title\": \"A Tale of Two Cities\" }", context);
53
+ postDocumentToOpenSearch("{ \"title\": \"The Phantom of the Opera\" }", context);
54
+
55
+ return {
56
+ statusCode: 200,
57
+ headers: { 'Content-Type': 'text/plain' },
58
+ body: `Hello from AWS Solutions Constructs!\n`
59
+ };
60
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
5
+ * with the License. A copy of the License is located at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
10
+ * OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
11
+ * and limitations under the License.
12
+ */
13
+ import '@aws-cdk/assert/jest';