Amazon web services 使用AWS Cli访问DynamoDB中的AWS Kinesis表
我是个新手。尝试学习如何使用AWS DynamoDB构建分布式应用程序。有人能告诉我如何使用AWS Cli访问AWS Kinesis中我的流所使用的DynamoDB中的表吗?我可以查询表格吗 当然。Kinesis stream使用Amazon Dynamodb表进行消费者补偿管理Amazon web services 使用AWS Cli访问DynamoDB中的AWS Kinesis表,amazon-web-services,amazon-dynamodb,amazon-kinesis,Amazon Web Services,Amazon Dynamodb,Amazon Kinesis,我是个新手。尝试学习如何使用AWS DynamoDB构建分布式应用程序。有人能告诉我如何使用AWS Cli访问AWS Kinesis中我的流所使用的DynamoDB中的表吗?我可以查询表格吗 当然。Kinesis stream使用Amazon Dynamodb表进行消费者补偿管理 您的表将具有与您的消费者名称相同的名称(通过KCL定义)。您可以通过控制台()查看所有消费者补偿表 使用者可以在多个实例中运行,但只有一个实例(leaseOwner)可以从一个分区(或Kinesis所称的碎片)中使用
- 您的表将具有与您的消费者名称相同的名称(通过KCL定义)。您可以通过控制台()查看所有消费者补偿表
- 使用者可以在多个实例中运行,但只有一个实例(leaseOwner)可以从一个分区(或Kinesis所称的碎片)中使用。如果此使用者失败,则同一使用者的另一个实例将接管并从检查点继续处理
- 检查点是最后处理的事件
- 使用者实例正在处理的碎片称为
,这对于表来说是唯一的leaseKey
- Dynamodb中基于键值的文档的数据结构如下:
“S”-字符数组
“N”-编号
{
"leaseOwner": {
"S": "SmartConsumerStream_Consumer-192.168.1.83"
},
"checkpoint": {
"S": "49570630332110756564477900867375857710984404992079691778"
},
"checkpointSubSequenceNumber": {
"N": "0"
},
"leaseCounter": {
"N": "16"
},
"leaseKey": {
"S": "shardId-000000000000"
},
"ownerSwitchesSinceCheckpoint": {
"N": "0"
}
}
- 您可以使用dynamodbapi获取给定
或partitionKey
的当前偏移量。您只能通过leaseKey
进行查询,因为这是表中的索引键。它是由运动流本身创造的leaseKey
- 您可以使用我正在写的,接口,非常轻松地获得消费者补偿。
- 以下是一些可能也有帮助的建议
~/.aws/credentials
public Map<String, String> getConsumerPosition() {
DynamoDB dynamoDB = new DynamoDB(getOffsetConnection()); //
Table consumerOffsetTable = dynamoDB.getTable("your_consumer_id");
Map<String, Object> leaseOwner = consumerOffsetTable.getItem("leaseKey", "shardId-000000000000").asMap();
return new HashMap<String, String>(){{
put(leaseOwner.get("leaseKey").toString(), leaseOwner.get("checkpoint").toString());
}};
}
public AmazonDynamoDB getOffsetConnection() {
AmazonDynamoDBClient dynamoDB = new AmazonDynamoDBClient(getAuthProfileCredentials(), getHttpConfiguration());
return dynamoDB;
}
private ProfileCredentialsProvider getAuthProfileCredentials() {
return new ProfileCredentialsProvider("your-aws-auth-profile_in_~/.aws/credentials");
}
private ClientConfiguration getHttpConfiguration() {
ClientConfiguration clientConfiguration = new ClientConfiguration();
return clientConfiguration;
}
公共映射getConsumerPosition(){
DynamoDB DynamoDB=新的DynamoDB(getOffsetConnection())//
表consumerofsettable=dynamoDB.getTable(“您的消费者id”);
Map leaseOwner=consumerofsettable.getItem(“leaseKey”,“shardId-000000000000”).asMap();
返回新的HashMap(){{
put(leaseOwner.get(“leaseKey”).toString(),leaseOwner.get(“checkpoint”).toString();
}};
}
公共AmazonDynamoDB getOffsetConnection(){
AmazonDynamoDBClient dynamoDB=新的AmazonDynamoDBClient(getAuthProfileCredentials(),getHttpConfiguration());
返回发电机B;
}
私有ProfileCredentialsProvider getAuthProfileCredentials(){
返回新的ProfileCredentialsProvider(“your-aws-auth-profile_in.~/.aws/credentials”);
}
私有客户端配置getHttpConfiguration(){
ClientConfiguration ClientConfiguration=新的ClientConfiguration();
返回客户端配置;
}
希望有帮助,如果我能在其他方面提供帮助,请告诉我。您能澄清您的要求吗?它们是什么表以及如何填充?您是说您有一个DynamoDB表,配置为在添加/更改/删除数据时生成DynamoDB流?请解释您的系统,它是如何配置的,以及您试图实现的目标。我使用AWS Kinesis作为一个持久队列,带有一个发布子架构,我的所有服务都使用它进行通信。根据AWS中的文档,Kinesis使用DynamoDB存储应用程序状态。我想知道如何使用AWS Cli查看这些内容?这将帮助我理解检查点和grace shutdown是如何工作的,并实现它。谢谢。请您澄清“Kinesis根据文档使用DynamoDB存储应用程序状态”是什么意思?您能提供参考文档的链接吗?Amazon Kinesis不会将数据存储在DynamoDB中,除非您专门对此进行编码。请确保这里有必要的文档,[链接(]),希望这会有所帮助。该文档页面中引用的DynamoDB表用于管理正在使用的应用程序的状态。您正在编写使用KCL的代码吗?或者你在寻找关于如何使用动觉的一般建议?太棒了,这正是我需要的。你能不能也看看这个,酷,我把答案贴在那里了。如果有帮助,请告诉我。