

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# aws-kinesis-强力工作
<a name="aws-kinesisstreams-gluejob"></a>

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


 所有类都处于积极开发之中，并且在任何未来版本中都会受到非向后兼容的更改或删除。这些不受[语义版本控制](https://semver.org/)模型。这意味着，虽然您可以使用它们，但在升级到此软件包的较新版本时，您可能需要更新源代码。

**注意：** 为确保正确的功能，您项目中的 AWS 解决方案构造软件包和 AWS CDK 包必须是相同的版本。


|  **语言**  |  **程序包**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_kinesis\_streams\_gluejob  | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/typescript.png) TypeScript  |  @aws-solutions-constructs/aws-kinesisstreams-gluejob  | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.kinesisstreamsgluejob  | 

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

 此 AWS 解决方案构造部署 Amazon Kinesis 数据流，并配置 AWS Glue Job，使用适当的资源/属性执行自定义 ETL 转换，以实现交互和安全。它还会创建一个 Amazon S3 存储桶，其中可以上传 AWS Glue 合 Job 的 Python 脚本。

 以下是 TypeScript 中的最小可部署模式定义：

```
import * as glue from '@aws-cdk/aws-glue';
import * as s3assets from '@aws-cdk/aws-s3-assets';
import { KinesisstreamsToGluejob } from '@aws-solutions-constructs/aws-kinesisstreams-gluejob';

const fieldSchema: glue.CfnTable.ColumnProperty[] = [
    {
        name: 'id',
        type: 'int',
        comment: 'Identifier for the record',
    },
    {
        name: 'name',
        type: 'string',
        comment: 'Name for the record',
    },
    {
        name: 'address',
        type: 'string',
        comment: 'Address for the record',
    },
    {
        name: 'value',
        type: 'int',
        comment: 'Value for the record',
    },
];

const customEtlJob = new KinesisstreamsToGluejob(this, 'CustomETL', {
    glueJobProps: {
        command: {
            name: 'gluestreaming',
            pythonVersion: '3',
            scriptLocation: new s3assets.Asset(this, 'ScriptLocation', {
                path: `${__dirname}/../etl/transform.py`,
            }).s3ObjectUrl,
        },
    },
    fieldSchema: fieldSchema,
});
```

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

```
new KinesisstreamsToGluejob(scope: Construct, id: string, props: KinesisstreamsToGluejobProps);
```

 *参数* 
+  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` 
+  props[`KinesisstreamsToGluejobProps`](#pattern-construct-props-40) 

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


|  **名称**  |  **类型**  |  **描述**  | 
| --- | --- | --- | 
|  运动流道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.StreamProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.StreamProps.html)  |  用户提供的可选道具，用于覆盖 Amazon Kinesis 数据流的默认道具。 | 
|  现有的河流 J？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.Stream.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-kinesis.Stream.html)  |  现有的 Kinesis 流实例，提供了这个和kinesisStreamProps会导致错误。 | 
|  粘合工作道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnJobProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnJobProps.html)  |  用户提供的道具，用于覆盖 AWS Glue 作业的默认道具。 | 
|  现有的粘合工作？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnJob.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnJob.html)  |  AWS Glue Job 的现有实例，同时提供此和glueJobProps会导致错误。 | 
|  是否存在数据库？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnDatabase.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnDatabase.html)  |  要与此构造一起使用的现有 AWS Glue 数据库。如果设置了此设置，则databaseProps将被忽略。 | 
|  数据库道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnDatabaseProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnDatabaseProps.html)  |  用户提供的道具，用于覆盖用于创建 AWS Glue 数据库的默认道具。 | 
|  现有表？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTable.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTable.html)  |  AWS Glue 表的现有实例。如果设置了此设置，则tableProps和fieldSchema将被忽略。 | 
|  餐具道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTableProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTableProps.html)  |  用户提供的道具，用于覆盖用于创建 AWS Glue 表的默认道具。 | 
|  字段架构？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTable.ColumnProperty.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTable.ColumnProperty.html)  |  用户提供的架构结构，用于创建 AWS Glue 表。 | 
|  输出数据存储？  |  [https://github.com/awslabs/aws-solutions-constructs/blob/3fd15e984943fe295690d8b0654d77157ffda8e3/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-gluejob/README.md#sinkdatastoreprops](https://github.com/awslabs/aws-solutions-constructs/blob/3fd15e984943fe295690d8b0654d77157ffda8e3/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-gluejob/README.md#sinkdatastoreprops)  |  用户为 Amazon S3 存储桶提供的道具，用于存储 AWS Glue 作业的输出。目前仅支持 Amazon S3 作为输出数据存储类型。 | 

## SinkDataStoreProps
<a name="sink-properties-40"></a>


|  **名称**  |  **类型**  |  **描述**  | 
| --- | --- | --- | 
|  存在 3 个输出桶？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)  |  应在其中写入数据的 S3 存储桶的现有实例。同时提供此和outputBucketProps会导致错误。 | 
|  输出桶道具  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.BucketProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.BucketProps.html)  |  用户提供的存储桶属性，用于创建用于存储 AWS Glue 任务输出的 Amazon S3 存储桶。 | 
|  数据存储类型  |  [https://github.com/awslabs/aws-solutions-constructs/blob/3fd15e984943fe295690d8b0654d77157ffda8e3/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-gluejob/README.md#sinkstoretype](https://github.com/awslabs/aws-solutions-constructs/blob/3fd15e984943fe295690d8b0654d77157ffda8e3/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-gluejob/README.md#sinkstoretype)  |  汇数据存储类型。 | 

## SinkStoreType
<a name="sink-type-40"></a>

数据存储类型的枚举，其中可能包括 S3、DynamoDB、DocumentDB、RDS 或 Redshift。当前的构造实现仅支持 S3，但将来有可能添加其他输出类型。


|  **名称**  |  **类型**  |  **描述**  | 
| --- | --- | --- | 
|  S3  |  string  |  S3 存储类型  | 

## 默认设置
<a name="default-settings-40"></a>

 没有任何覆盖的此模式的开箱即用实现将设置以下默认值：

### Amazon Kinesis Streams
<a name="w23aab9d115c29b5"></a>
+  为 Amazon Kinesis 数据流配置最低权限访问 IAM 角色。
+  使用 AWS 托管 KMS 密钥为 Amazon Kinesis 流启用服务器端加密。
+  为亚马逊 Kinesis 流部署最佳实践亚马逊 CloudWatch 警报。

### Glue Job
<a name="w23aab9d115c29b7"></a>
+  创建 AWS Glue 安全配置，用于为 CloudWatch、Job 书签和 S3 配置加密。CloudWatch 和 Job 书签使用为 AWS 胶水服务创建的 AWS 托管 KMS 密钥进行加密。S3 存储桶配置为 SSE-S3 加密模式。
+  配置允许 AWS Glue 从 Amazon Kinesis Data Streams 读取的服务角色策略。

### Glue 数据库
<a name="w23aab9d115c29b9"></a>
+  创建 AWS Glue 数据库。AWS Glue 表将添加到数据库中。此表定义了 Amazon Kinesis 数据流中缓冲的记录的架构。

### Glue 桌子
<a name="w23aab9d115c29c11"></a>
+  创建 AWS Glue 表。表架构定义基于 Amazon Kinesis 数据流中缓冲记录的 JSON 结构。

### IAM 角色
<a name="w23aab9d115c29c13"></a>
+  具有以下权限的任务执行角色：1) 从 Amazon S3 存储桶位置读取 ETL 脚本；2) 从 Amazon Kinesis 数据流读取记录；3) 执行 Amazon Glue 作业。

### 输出 S3 存储桶
<a name="w23aab9d115c29c15"></a>
+  用于存储 ETL 转换输出的 Amazon S3 存储桶。此存储桶将作为参数传递给已创建的 AWS Glue 任务，以便在 ETL 脚本中使用该存储桶将数据写入其中。

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

![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/aws-kinesisstreams-gluejob.png)


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


<table>
<thead>
  <tr><th colspan="2"> 要查看此模式的代码、创建/查看问题和拉取请求等，请执行以下操作： </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws-解决方案-结构/awS-运动流-葡萄工作](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-kinesisstreams-gluejob) </td></tr>
</tbody>
</table>
