

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# aws-lambda-彈性搜索-基班納
<a name="aws-lambda-elasticsearch-kibana"></a>

![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/experimental.png)


 所有類都在積極開發中，並且在任何未來版本中都會受到非向後兼容的更改或刪除。這些不受[語義版本控制](https://semver.org/)模型。這意味著，雖然您可以使用它們，但在升級到此軟件包的較新版本時，您可能需要更新源代碼。

**請注意：** 為了確保功能正確，專案中的 AWS 解決方案建構套件和 AWS CDK 套件必須是相同的版本。


|  **語言**  |  **套件**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_lambda\_elasticsearch\_kibana  | 
|  ![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/typescript.png) 打字稿  |  @aws-solutions-constructs/aws-lambda-elasticsearch-kibana  | 
|  ![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.lambdaelasticsearchkibana  | 

## Overview
<a name="overview-18"></a>

 此 AWS 解決方案建構實作 AWS Lambda 函數和具有最低權限的 Amazon Elasticsearch Service 網域。

 下面是 TypeScript 中的最小可部署模式定義：

```
import { LambdaToElasticSearchAndKibana } from '@aws-solutions-constructs/aws-lambda-elasticsearch-kibana';
import { Aws } from "@aws-cdk/core";

const lambdaProps: lambda.FunctionProps = {
    runtime: lambda.Runtime.NODEJS_14_X,
    // This assumes a handler function in lib/lambda/index.js
    code: lambda.Code.fromAsset(`${__dirname}/lambda`),
    handler: 'index.handler'
};

new LambdaToElasticSearchAndKibana(this, 'test-lambda-elasticsearch-kibana', {
    lambdaFunctionProps: lambdaProps,
    domainName: 'test-domain',
    // TODO: Ensure the Cognito domain name is globally unique
    cognitoDomainName: 'globallyuniquedomain' + Aws.ACCOUNT_ID;
});
```

## Initializer
<a name="initializer-18"></a>

```
new LambdaToElasticSearchAndKibana(scope: Construct, id: string, props: LambdaToElasticSearchAndKibanaProps);
```

 *參數* 
+  scope[https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) 
+  id`string` 
+  提案[`LambdaToElasticSearchAndKibanaProps`](#pattern-construct-props-18) 

## 模式建立道具
<a name="pattern-construct-props-18"></a>


|  **名稱**  |  **類型**  |  **描述**  | 
| --- | --- | --- | 
|  現在還有蘭姆達伯？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  Lambda 函數對象的現有實例，同時提供這個和lambdaFunctionProps會導致錯誤。 | 
|  拉姆針灸道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html)  |  選用的使用者提供的屬性來覆寫 Lambda 函數的預設屬性。忽略existingLambdaObj提供。 | 
|  電子域名道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomainProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomainProps.html)  |  可選用的使用者提供的道具，以覆寫 Amazon Elasticsearch Service 的預設道具  | 
|  domainName  |  string  |  Cognito 和 Amazon Elasticsearch Service 的域名  | 
|  科尼托網域名稱？  |  string  |  選擇性 Cognito 網域名稱。如果有提供，它將用於 Cognito 網域，而domainName將用於彈性搜索域。 | 
|  創建雲端觀察器  |  boolean  |  是否要建立建議的警報。 | 
|  網域端點虛擬名稱變數名稱？  |  string  |  為 Lambda 函數設定的 ElasticSearch 網域端點環境變數選擇性名稱。 | 

## 模式性質
<a name="pattern-properties-18"></a>


|  **名稱**  |  **類型**  |  **描述**  | 
| --- | --- | --- | 
|  CloudwatchAlims？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudwatch.Alarm.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudwatch.Alarm.html)  |  傳回模式建立的一或多個 CloudWatch 警示的清單。 | 
|  彈性搜尋網域  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomain.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticsearch.CfnDomain.html)  |  返回由圖案創建的 Elasticsearch 域的實例。 | 
|  彈性搜尋網域角色  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  傳回 Elasticsearch 網域模式所建立的 IAM 角色執行個體。 | 
|  IdentityPool  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.CfnIdentityPool.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.CfnIdentityPool.html)  |  傳回由模式建立的 Cognito 身分識別集區的執行個體。 | 
|  Lambda FAULT  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  返回由模式創建的 Lambda 函數的實例。 | 
|  userPool  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPool.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPool.html)  |  傳回由模式建立的 Cognito 使用者集區的執行個體。 | 
|  UserPoolClient  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClient.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cognito.UserPoolClient.html)  |  傳回由模式建立的 Cognito 使用者集區用戶端的執行個體。 | 

## Lambda 功能
<a name="lambda-function-18"></a>

此模式需要 Lambda 函數，該函數可以從 DynamoDB 串流將資料張貼至 Elasticsearch 服務。提供範例函數[這裡](https://github.com/awslabs/aws-solutions-constructs/blob/master/source/patterns/%40aws-solutions-constructs/aws-lambda-elasticsearch-kibana/test/lambda/index.js)。

## 預設設定
<a name="default-settings-18"></a>

 此模式的開箱即用實現沒有任何覆蓋將設置以下默認值：

### AWS Lambda 功能
<a name="aws-lambda-function-10"></a>
+  設定 Lambda 函數的有限權限存取 IAM 角色。
+  針對 NodeJS Lambda 函數啟用重複使用連線的功能。
+  啟用 X-Ray 追蹤。
+  設定環境變數：
  +  `DOMAIN_ENDPOINT` (default)
  +  `AWS_NODEJS_CONNECTION_REUSE_ENABLED`（對於節點 10.x 和更高版本的函數）

### Amazon Cognito
<a name="amazon-cognito-2"></a>
+  設定「使用者集區」的密碼策略。
+  強制執行「使用者集區」的進階安全模式。

### Amazon Elasticsearch Service
<a name="amazon-elasticsearch-service-1"></a>
+  針對彈性搜尋網域部署最佳實務 CloudWatch 警示。
+  使用 Cognito 使用者集區保護 Kibana 儀表板存取權。
+  使用 AWS 受管的 KMS 金鑰為彈性搜尋網域啟用伺服器端加密。
+  啟用 Elastisearch 網域的節點對節點加密。
+  為 Amazon ES 網域設定叢集。

## Architecture
<a name="architecture-18"></a>

![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/aws-lambda-elasticsearch-kibana.png)


## GitHub
<a name="github-18"></a>


<table>
<thead>
  <tr><th colspan="2"> 要查看此模式的代碼，創建/查看問題和提取請求，以及更多： </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/zh_tw/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws-解決方案-構造/aw-lambda-彈性搜索-kibana](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-lambda-elasticsearch-kibana) </td></tr>
</tbody>
</table>
