亚马逊连接数据湖 CDK 构造
一个 AWS 云发展工具包(CDK) 能够进入 亚马逊连接分析数据湖。这个解决方案使完整的连接数据湖设置过程自动化,从而不再需要 手动配置或自定义 云阵 模板.
该建筑使用Lambda支持的自定义资源来管理部署过程. 它处理连接 连接 数据集,接收 内存 资源份额,给予 湖泊形成 权限,并在 a 中创建资源链接表 中央集权 粘贴 数据库——支持同账户和交叉账户配置.
使用量
先决条件
- 亚马逊连接实例
- AWS CDK v2 (英语)
- 用于交叉账户设置:目标账户中的IAM角色. 见 交叉账户设置 文档
安装
在您的 CDK 项目目录中安装构建库 :
类型脚本/ Java 脚本
npm install @cdklabs/cdk-construct-connect-datalake
蟒
pip install cdklabs.cdk-construct-connect-datalake
爪哇语
在您的 pom.xml数字 :
<dependency>
<groupId>io.github.cdklabs</groupId>
<artifactId>cdk-construct-connect-datalake</artifactId>
<version>VERSION</version>
</dependency>
. NET 网络
dotnet add package Cdklabs.CdkConstructConnectDatalake
走开
go get github.com/cdklabs/cdk-construct-connect-datalake-go/cdkconstructconnectdatalake
基本用途
将 DataLakeAccess 架构添加到部署在同一 AWS 账户和区域的 CDK 堆栈中, 作为您的 Amazon Connect 实例 .
import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';
new DataLakeAccess(this, 'DataLakeAccess', {
instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // Your Connect instance ID
datasetIds: [
DataType.CONTACT_RECORD,
'contact_statistic_record',
],
});
重要: 当在同一堆栈中与连接实例一起部署时, 在构造中添加依赖性 :
示例
import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';
import { CfnInstance } from 'aws-cdk-lib/aws-connect';
const connectInstance = new CfnInstance(this, 'ConnectInstance', {
identityManagementType: 'CONNECT_MANAGED',
instanceAlias: 'my-instance',
attributes: {
inboundCalls: true,
outboundCalls: true,
},
});
const dataLake = new DataLakeAccess(this, 'DataLakeAccess', {
instanceId: connectInstance.attrId,
datasetIds: [DataType.CONTACT_RECORD],
});
// Ensure data lake resources are deleted before the Connect instance
dataLake.node.addDependency(connectInstance);
交叉账户配置
通过指定来配置在不同的 AWS 账户中创建数据湖资源的构造 targetAccountId 财务报告和审定财务报表 targetAccountRoleArn该构建承担了接受RAM资源份额并在该账户中创建Glue资源的目标角色.
import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';
new DataLakeAccess(this, 'DataLakeAccess', {
instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
datasetIds: [
DataType.CONTACT_RECORD,
'contact_statistic_record',
],
// Target account where the resources are created
targetAccountId: '123456789012',
// IAM role in the target account for cross-account role assumption
targetAccountRoleArn: "arn:aws:iam::123456789012:role/RoleName",
});
多个实例
为多个连接实例启用数据湖访问, 为每个实例创建一个单独的构建 。 应增加两者之间的依赖性,以确保连续部署,防止冲突同时开展行动.
import { DataLakeAccess, DataType } from '@cdklabs/cdk-construct-connect-datalake';
// First Connect instance data lake setup
const dataLake1 = new DataLakeAccess(this, 'DataLakeAccess1', {
instanceId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
datasetIds: [
DataType.CONTACT_RECORD,
DataType.AGENT_STATISTIC_RECORD,
],
});
// Second Connect instance data lake setup
const dataLake2 = new DataLakeAccess(this, 'DataLakeAccess2', {
instanceId: 'yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy',
datasetIds: [
DataType.CONTACT_RECORD,
DataType.CONTACT_FLOW_EVENTS,
],
});
// Create dependency to ensure sequential deployment
dataLake2.node.addDependency(dataLake1);
API 参考
数据湖访问
亚马逊连接数据湖集成的主要构建类.
属性 :
instanceId(单位:千美元)字符串: 亚马逊连接实例 IDdatasetIds(单位:千美元)矩阵 < string > 数据类型: 数据集ID组为关联组. 使用DataType尚未在 enum 中的数据集的 enum 值或字符串字元.targetAccountId?(单位:千美元)字符串: 目标AWS账户ID接收资源(可选)targetAccountRoleArn?(单位:千美元)字符串:IAM角色ARN在跨账户角色假设目标账户中的角色ARN(可选)
数据类型 Enum
关于所支持的数据集类型,请参见 API 文档。 。 。 .
创建资源
此构造创建了以下 AWS 资源 :
基础设施构成部分
-
云格式自定义资源提供者: 管理自定义资源生命周期的框架
-
Lambda 函数: 自定义管理数据湖设置的资源处理器
-
IAM 作用: 具有连接、RAM、Glue和Lake Formation操作权限的执行角色
显示 IAM 权限
connect:BatchAssociateAnalyticsDataSetconnect:AssociateAnalyticsDataSetconnect:BatchDisassociateAnalyticsDataSetconnect:DisassociateAnalyticsDataSetconnect:ListAnalyticsDataAssociationsconnect:ListAnalyticsDataLakeDataSetsconnect:ListInstancesds:DescribeDirectoriesram:AcceptResourceShareInvitationram:GetResourceShareInvitationsram:GetResourceSharesglue:CreateDatabaseglue:CreateTableglue:DeleteDatabaseglue:DeleteTableglue:GetDatabaseglue:GetTableslakeformation:GetDataLakeSettingslakeformation:PutDataLakeSettingscloudformation:DescribeStackssts:AssumeRole(仅用于交叉账户设置)
部署
该建筑在部署期间采取下列步骤:

- 数据集协会: 与目标账户连接到 Amazon 实例的指定数据集
- 数据库创建: 创建
connect_datalake_database粘贴数据库 - 湖形成设置: 配置 Lambda 执行角色(或承担交叉账户角色) 作为数据湖管理员
- 资源共享接受: 接受RAM资源共享邀请. 多个数据集协会经常合并为单一的RAM资源共享
- 表格创建: 为每个数据集创建资源链接表, 允许通过 Amazon Athena 查询
当部署到与 Connect 实例相同的账户时, 该账户中的所有步骤都会执行 。 对于交叉账户配置,步骤2-5在目标账户中执行.
限制
- 表格命名: 此构造创建的资源链接表格使用格式命名
{datasetId}_{dataCatalogId} - 地区支助:该构造必须部署在与亚马逊连接实例相同的AWS区域并进行核算. 就交叉账户配置而言,在同一区域内的目标账户中创造资源
- 共享数据库编号:
connect_datalake_database在账户中这一结构的所有部署中共享胶片数据库
解决问题
部署期间部分失败
- 如果在创建或更新操作过程中一些工作流程步骤失败,堆栈部署仍将显示为成功. CloudFormation 堆栈输出中可以找到这些部分失败的错误细节 .
内存资源共享已过期
- 新数据集协会的资源共享可以被整合到现有的AWS RAM共享中,即使到期. 删除 引用目标账户、确认相关资源被删除、然后使用 原始构造定义.
由于本金无效, 无法更新 Lake Forming 权限
- 已删除但未从 " 成立湖 " 校长中去掉的IAM角色将被视为无效。 删除 主要导致形成湖出现错误并重新部署构造.
连接实例被删除后无法删除资源
- 此类构造在删除实例前必须被删除, 因为当前正在删除此实例后的清理 不支持 。 如果需要清除这些资源的援助,可以提出GitHub问题.
支助
关于议题和问题清单:
- 参考关于分析数据湖的文件 亚马逊连接管理员指南
- 检查 API 文档
- 报告错误通过 GitHub 问题
捐款
我们欢迎捐款! 请看我们的 贡献指南 详细情况.
许可证
本项目根据以下规定获得许可证: Apache-2.0 许可证。 。 。 .