亚马逊 Kinesis 构造库
AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .
亚马逊 Kinesis 提供大型 溪流 实时数据记录。 Kinesis 数据流可用于快速和连续的数据 录取和汇总.
目录
流线
Amazon Kinesis Data Streams实时地摄入了大量数据,长期存储数据,并使数据可供消费.
使用 CCDK ,可以使用构造器创建新的 Kinesis 流作为堆栈的一部分. 您可以指定 streamName 给予
您自己的标识符到流。 如果没有, Cloud Formation 将生成一个名称 .
new kinesis.Stream(this, 'MyFirstStream', {
streamName: 'my-awesome-stream',
});
您也可以指定属性, 如 shardCount 以表示溪流应选择多少块和 retentionPeriod
以具体说明在硬盘中的数据应可持续多久.
更多信息 创建和管理溪流
new kinesis.Stream(this, 'MyFirstStream', {
streamName: 'my-awesome-stream',
shardCount: 3,
retentionPeriod: Duration.hours(48),
});
加密
串流加密 启用 对指定的流使用 AWS KMS 密钥进行服务器侧加密.
默认情况下, 可以在您的流上使用 Kinesis Data Streams 所拥有的主密钥进行加密, 在支持该密钥的区域进行加密 .
new kinesis.Stream(this, 'MyEncryptedStream');
您可以通过指定 : encryption 属性.
将为您创建 KMS 密钥, 并与该流相关 .
new kinesis.Stream(this, 'MyEncryptedStream', {
encryption: kinesis.StreamEncryption.KMS,
});
您也可以通过指定 : encryptionKey 属性.
const key = new kms.Key(this, 'MyKey');
new kinesis.Stream(this, 'MyEncryptedStream', {
encryption: kinesis.StreamEncryption.KMS,
encryptionKey: key,
});
导入
堆栈外已创建的任何 Kinesis 流可以导入到您的 CDK 应用程序 .
流能由它们的 ARN 通过 Stream.fromStreamArn() API 密码
const importedStream = kinesis.Stream.fromStreamArn(this, 'ImportedStream',
'arn:aws:kinesis:us-east-2:123456789012:stream/f3j09j2230j',
);
加密流也可以通过其属性通过 Stream.fromStreamAttributes() API 密码
const importedStream = kinesis.Stream.fromStreamAttributes(this, 'ImportedEncryptedStream', {
streamArn: 'arn:aws:kinesis:us-east-2:123456789012:stream/f3j09j2230j',
encryptionKey: kms.Key.fromKeyArn(this, 'key',
'arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012',
),
});
许可赠款
IAM角色,用户或团体在运行时需要能够与Amazon Kinesis流合作的,应当获得IAM许可.
执行 IGrantable 接口(有相关主机)可以通过调用:
grantRead(principal)- 允许本金阅读访问grantWrite(principal)- 给予主要写作权限grantReadWrite(principal)- 授予主读写权限
读取权限
赠款 read 通过调用 grantRead() API (英语).
如果流有加密密钥,读取权限也会被授予密钥.
const lambdaRole = new iam.Role(this, 'Role', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
description: 'Example role...',
});
const stream = new kinesis.Stream(this, 'MyEncryptedStream', {
encryption: kinesis.StreamEncryption.KMS,
});
// give lambda permissions to read stream
stream.grantRead(lambdaRole);
下列阅读权限由服务负责人提供: grantRead() API : (英语)
kinesis:DescribeStreamSummarykinesis:GetRecordskinesis:GetShardIteratorkinesis:ListShardskinesis:SubscribeToShard
写入权限
赠款 write 通过调用 grantWrite() API (英语).
如果流有加密密钥,写入权限也会被授予密钥.
const lambdaRole = new iam.Role(this, 'Role', {
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
description: 'Example role...',
});
const stream = new kinesis.Stream(this, 'MyEncryptedStream', {
encryption: kinesis.StreamEncryption.KMS,
});
// give lambda permissions to write to stream
stream.grantWrite(lambdaRole);
下列写作权限由服务主管提供: grantWrite() API : (英语)
kinesis:ListShardskinesis:PutRecordkinesis:PutRecords
自定义权限
您可以调用 : grant() API (英语).
const user = new iam.User(this, 'MyUser');
const stream = new kinesis.Stream(this, 'MyStream');
// give my user permissions to list shards
stream.grant(user, 'kinesis:ListShards');
计量
您可以使用您溪流中常见的度量衡来创建提醒和/或仪表板. 这个 stream.metric('MetricName') 方法创建带有流命名空间和维度的度量. 您也可以使用预定义方法,如 stream.metricGetRecordsSuccess()。了解更多关于 Kinesis 度量衡的检查 使用 Amazon Cloud Watch 监测 Amazon Kinesis 数据流服务。 。 。 .
const stream = new kinesis.Stream(this, 'MyStream');
// Using base metric method passing the metric name
stream.metric('GetRecords.Success');
// using pre-defined metric method
stream.metricGetRecordsSuccess();
// using pre-defined and overriding the statistic
stream.metricGetRecordsSuccess({ statistic: 'Maximum' });