我已将来自aws-dynamodb-examples的DynamoDB流适配器演示的代码合并到我的Maven项目中,并且我遇到了运行时错误:
Exception in thread "Thread-2" java.lang.NoClassDefFoundError: com/amazonaws/util/json/JSONObject
at com.amazonaws.services.kinesis.leases.impl.Lease.toString(Lease.java:229)
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样,以及我可以做些什么来修复它?
我的pom文件是这样的:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aligntech</groupId>
<artifactId>dynamodbstream</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dynamodbstream</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>LATEST</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>dynamodb-streams-kinesis-adapter</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>
</project>
Run Code Online (Sandbox Code Playgroud) java amazon-web-services amazon-dynamodb amazon-kinesis amazon-dynamodb-streams
我有一个Lambda函数,该函数将多个DynamoDB流配置为事件源,这是更大的管道的一部分。在进行检查时,我发现下游组件之一缺少一些数据。我想编写一个更简单的Lambda函数,该函数被配置为前面提到的DynamoDB流之一的事件源。这将导致我的DynamoDB流之一具有从中读取的两个Lambda函数。我想知道是否可以?是否保证两个Lamdba函数都能接收流中放置的所有记录,并且我需要了解任何资源(读/写吞吐量)限制。在AWS网站上找不到与此相关的任何文档,但是我确实找到了有关分片处理的文档
要访问流并处理其中的流记录,必须执行以下操作:
- 确定您要访问的流的唯一Amazon资源名称(ARN)。
- 确定流中的哪个分片包含您感兴趣的流记录。
- 访问分片并检索所需的流记录。
注意:同一时间从同一Streams分片读取的数据最多不超过2个。每个分片有两个以上的读取器可能会导致节流。
不确定上述情况与将Streams配置为Lambdas的事件源的情况有什么关系,而不是使用API从Streams手动读取的情况。
我有一个包含数千个数据的DynamoDb表.我正在使用扫描功能扫描表格,我已经应用了"Between"FilterExpression.但是,查询响应仅提供3条记录,而它应返回约100条记录.
我使用Node js创建了Lambda函数.
实际上,我想对AWS DynamoDB表项目实施验证,如果规则违反项目字段,这将阻止记录插入/更新。
可能吗?
还是我们可以为dynamoDB表创建触发器lambda,该触发器在插入/更新之前触发。这样我们就可以检查验证规则并进行处理。
我们希望将数据从 DynamoDB NoSQL 以流的形式连续移动到 Redshift 数据库中。我很难理解 AWS 中的所有新术语/技术。有
1) DynamoDB 流
有人可以提供每个的简短摘要。什么是 DynamoDB 流?这与 AmazonKinesis 有何不同?看完所有资源,这是我的假设理解,请在下面验证。
(a) 我假设使用 DynamoDB Streams,创建 NoSQL 的流数据,并开始将其发送出去。它是发件人。
(b) Lambda 只允许人们消耗时间,这是租用处理 DynamoDB Stream 的服务器的时间。
(c) Kinesis FireHose 转换 DynamoDB 流,并放入 Redshift。
(d) AmazonQuickSight 是他们的商业智能工具,
这是对词汇表术语的正确理解吗?查看Stack 链接,想要更全面的信息。
amazon-web-services amazon-dynamodb amazon-redshift amazon-dynamodb-streams amazon-kinesis-firehose
我不知道如何订阅 DynamoDB 数据库中的更改。让我举一个例子:用户 A 向用户 B 发送一条消息(保存在数据库中),并且在用户 B 的应用程序中,该消息自动出现。
我知道最近发布的 AWS AppSync 可以做到这一点,但我无法将它与 Ionic(我正在使用)集成。但是,必须有替代方案,因为 AWS AppSync 仅在 2017 年底/2018 年初发布。
我还在 DynamoDB 中看到了一个叫做 Streams 的东西,但不确定这是否是我需要的。
stream amazon-web-services amazon-dynamodb ionic-framework amazon-dynamodb-streams
我有一个 DynamoDB 表,我在其中使用事务写入(https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transactions.html)。交易由 2 个看跌期权组成。假设第一个 put 成功,第二个 put 失败。在这种情况下,第一个 put 将被事务库回滚。
我还在表上启用了DynamoDB 流 ( https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html ),另一个应用程序从该流中使用。
问题:在回滚场景中,第一次成功放置会导致 DynamoDB 流事件,而回滚会导致另一个吗?如果是,是否有办法防止这种情况,即确保仅针对完全完成的事务触发流事件?
我正在尝试用 python 创建 dynamo db 表。下面是我的脚本。我正在尝试创建一个分区键和排序键和一堆列。
我试过的:
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.create_table(
TableName='g_view_data',
KeySchema=[
{
'AttributeName': 'customer_id',
'KeyType': 'HASH' #Partition key
},
{
'AttributeName': 'key_id',
'KeyType': 'RANGE' #Sort key
}
],
AttributeDefinitions=[
{
'AttributeName': 'cusotmer_id',
'AttributeType': 'N'
},
{
'AttributeName': 'key_id',
'AttributeType': 'N'
},
{
'AttributeName': 'dashboard_name',
'AttributeType': 'S'
},
{
'AttributeName': 'tsm',
'AttributeType': 'S'
},
{
'AttributeName': 'security_block',
'AttributeType': 'S'
},
{
'AttributeName': 'core_block',
'AttributeType': 'S'
},
{
'AttributeName': 'type',
'AttributeType': 'S'
},
{
'AttributeName': 'subscription', …Run Code Online (Sandbox Code Playgroud) 这里的amplify 坞站表示,我们可以通过运行**amplify add function**并选择“ Lambda Trigger ”选项将 lambda 函数配置为 dynamodb 触发器,但是当我运行"amplify add api"(选择 Python 作为运行时语言)时,我没有获得 lambda 触发器选项,我'我只获得“无服务器函数”和“lambda 层”选项。
请帮助我解决此问题以访问该功能。
我知道它适用于 Nodejs 运行时 lambda,但我也希望 Python Lambda 具有此选项。
我有一个启用流的 dynamodb 表。lambda 函数使用此流。dynamodb 流中的每条记录都分配有一个 SequenceNumber。其意义何在?
假设 record1 在 record2 之前进入流。这是否意味着 SequenceNumber(record1) < SequenceNumber(record2) ?
amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams