[{"data":1,"prerenderedAt":39},["ShallowReactive",2],{"snippet-lambda-function-connect-opensearch-iam":3},{"id":4,"title":5,"contributors":6,"description":8,"extension":9,"gitHub":10,"introBox":13,"languages":17,"meta":19,"resources":20,"services":21,"snippets":24,"stem":35,"tags":36,"type":37,"__hash__":38},"snippets\u002Fsnippets\u002Flambda-function-connect-opensearch-iam.json","Connect to AWS Opensearch from AWS Lambda",[7],"content\u002Fcontributors\u002Fabhishek-agawane.json","This snippet demonstrates how to connect and ingest data to AWS Opensearch Serverless collection from an AWS Lambda function with IAM authentication.","json",{"template":11},{"repoURL":12},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fserverless-snippets\u002Ftree\u002Fmain\u002Flambda-function-connect-opensearch-iam",{"headline":14,"text":15},"How it works",[16],"Amazon OpenSearch Serverless is an on-demand auto scaling configuration for Amazon OpenSearch Service. An OpenSearch Serverless collection is an OpenSearch cluster that scales compute capacity based on your application's needs. OpenSearch Serverless provides a simple, cost-effective option for infrequent, intermittent, or unpredictable workloads. Connect to the Opensearch Serverless collection using lambda function.",[18],"Go",{},null,[22,23],"lambda","opensearch",[25],{"title":26,"codeTabs":27},"Runtimes",[28],{"id":18,"title":29,"description":30,"snippets":31},"Copy the code into your Lambda function","Follow the AWS Lambda instructions for packaging with dependencies and uploading in .zip format. Install the required go packages to be imported",[32],{"language":33,"code":34},"go","package main\n\nimport (\n\t\"context\"\n\t\"crypto\u002Ftls\"\n\t\"log\"\n\t\"net\u002Fhttp\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com\u002Faws\u002Faws-lambda-go\u002Flambda\"\n\t\"github.com\u002Faws\u002Faws-sdk-go-v2\u002Fconfig\"\n\topensearchapi \"github.com\u002Fopensearch-project\u002Fopensearch-go\u002Fopensearchapi\"\n\topensearch \"github.com\u002Fopensearch-project\u002Fopensearch-go\u002Fv2\"\n\trequestsigner \"github.com\u002Fopensearch-project\u002Fopensearch-go\u002Fv2\u002Fsigner\u002Fawsv2\"\n)\n\nconst endpoint = os.Getenv(\"OpensearchDomain\") \u002F\u002F e.g. https:\u002F\u002Fopensearch-domain.region.com or Amazon OpenSearch Serverless endpoint\n\nfunc HandleRequest(ctx context.Context) error {\n\t\u002F\u002F Load the default AWS configuration\n\tawsCfg, err := config.LoadDefaultConfig(ctx)\n\tif err != nil {\n\t\tlog.Println(\"Error loading AWS configuration:\", err)\n\t\treturn err\n\t}\n\t\u002F\u002F Create an AWS request signer\n\tsigner, err := requestsigner.NewSignerWithService(awsCfg, \"aoss\")\n\tif err != nil {\n\t\tlog.Println(\"Error creating request signer:\", err)\n\t\treturn err\n\t}\n\t\u002F\u002F Create an OpenSearch client\n\tclient, err := opensearch.NewClient(opensearch.Config{\n\t\tTransport: &http.Transport{\n\t\t\tTLSClientConfig: &tls.Config{InsecureSkipVerify: true},\n\t\t},\n\t\tAddresses: []string{endpoint},\n\t\tSigner:    signer,\n\t})\n\tif err != nil {\n\t\tlog.Println(\"Error creating OpenSearch client:\", err)\n\t\treturn err\n\t}\n\tindexName := \"go-test-index\"\n\t\u002F\u002F Define index mapping\n\tmapping := strings.NewReader(`{\n        \"settings\": {\n            \"index\": {\n                \"number_of_shards\": 4\n            }\n        }\n    }`)\n\t\u002F\u002F Create an index\n\tcreateIndex := opensearchapi.IndicesCreateRequest{\n\t\tIndex: indexName,\n\t\tBody:  mapping,\n\t}\n\tcreateIndexResponse, err := createIndex.Do(ctx, client)\n\tif err != nil {\n\t\tlog.Println(\"Error creating index:\", err)\n\t\treturn err\n\t}\n\tlog.Println(\"Create index response:\", createIndexResponse)\n\n\t\u002F\u002F Delete the index\n\tdeleteIndex := opensearchapi.IndicesDeleteRequest{\n\t\tIndex: []string{indexName},\n\t}\n\tdeleteIndexResponse, err := deleteIndex.Do(ctx, client)\n\tif err != nil {\n\t\tlog.Println(\"Error deleting index:\", err)\n\t\treturn err\n\t}\n\tlog.Println(\"Delete index response:\", deleteIndexResponse)\n\treturn nil\n}\nfunc main() {\n\t\u002F\u002F Start the Lambda function\n\tlambda.Start(HandleRequest)\n}\n","snippets\u002Flambda-function-connect-opensearch-iam",[],"Integration","a9cWu-F5cYktDlW7A94DEPsyyppodJ06yqY9LEzwlQM",1790678110125]