是否可以以某种格式从DynamoDB表导出数据?
具体的用例是我想从我的生产dynamodb数据库导出数据并将该数据导入我的本地dynamodb实例,这样我的应用程序就可以使用本地数据副本而不是生产数据.
我使用link作为DynamoDB的本地实例.
我使用https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html进行了 dynamodb 的本地设置
我可以使用以下命令启动实例java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb,但是当我尝试执行其他操作时,它会出现以下错误。
2021 年 3 月 15 日下午 2:10:28 com.almworks.sqlite4java.Internal 日志警告:[sqlite] 无法打开 DB[15]:com.almworks.sqlite4java.SQLiteException:[-91] 无法加载库:java.lang。 UnsatisfiedLinkError:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:dlopen(/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib,1):找不到合适的图像。确实找到:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构2021 年 15 月 2:10:28 PM com.almworks.sqlite4java.Internal 日志严重:[sqlite] SQLiteQueue[shared-local-instance.db]:运行作业队列时出错 com.almworks.sqlite4java.SQLiteException:[-91] 不能加载库:java.lang.UnsatisfiedLinkError:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:dlopen(/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib,1):没有合适的找到图像。确实找到:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构 /Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构com.almworks.sqlite4java.SQLite.loadLibrary(SQLite.java:97) 在 com.almworks.sqlite4java.SQLiteConnection.open0(SQLiteConnection.java:1441) 在 com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:282)在 com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:293) 在 com.almworks.sqlite4java.SQLiteQueue.openConnection(SQLiteQueue.java:464) 在 com.almworks.sqlite4java.SQLiteQueue.queueFunction(SQLiteQueue.java:641) )在 com.almworks.sqlite4java.SQLiteQueue.runQueue(SQLiteQueue.java:623) 在 com.almworks.sqlite4java.SQLiteQueue.access$000(SQLiteQueue.java:77) 在 com.almworks.sqlite4java.SQLiteQueue$1.run(SQLiteQueue. java:205) 在 java.base/java.lang.Thread.run(未知来源) 引起: java.lang.UnsatisfiedLinkError: /Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib: dlopen(/Users /ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib, 1):找不到合适的图像。确实找到:/Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构 /Users/ahsanejaz/Downloads/dynamodb_local_latest/DynamoDBLocal_lib/libsqlite4java-osx.dylib:通用包装器中没有匹配的架构java.base/java.lang.ClassLoader$NativeLibrary.load0(本机方法) 在 java.base/java.lang.ClassLoader$NativeLibrary.load(未知来源) 在 java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(来源未知)位于 java.base/java.lang.ClassLoader。
此问题与新的 M1 Apple Silicon 架构有关吗?有什么解决方法吗?
这是我第一次遇到这个问题,我在 Linux 和 Mac 上使用本地 DynamoDB 并且大部分时间它都运行良好,现在我在另一台 Mac 机器上,它只是抛出一个错误。
我得到的错误信息是:
ERROR StatusLogger Log4j2 could not find a logging implementation.
Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Run Code Online (Sandbox Code Playgroud)
我尝试通过自制软件安装它,但它抛出了同样的错误。我可能在我的机器上搞砸了一些东西,或者可能错过了一些配置。
下面是我尝试运行它时的屏幕截图:
参考:
Dynamo DB 本地:https : //docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
我无法连接到使用 cli 本地运行的 DynamoDB。
aws dynamodb list-tables --endpoint-url http://localhost:8000
无法连接到端点 URL:“http://localhost:8000/”
这也不起作用:
aws dynamodb list-tables --region local
无法连接到端点 URL:“http://localhost:8000/”
我尝试使用不同的端口,但没有帮助。我也禁用了所有代理。我可以使用这样的应用程序连接到 DynamoDB,所以我知道这不是 dynamodb 问题:
aws dynamodb list-tables --endpoint-url http://dynamodb.us-west-2.amazonaws.com --region us-west-2
{“表名”:[“音乐”]}
java endpoint amazon-web-services amazon-dynamodb amazon-dynamodb-local
我正在使用 v2 aws DynamoDV Java sdk,并且我想限制通过分区键查询时返回的结果数量(下面的代码片段),但下面的代码返回完整的项目集。
java 文档说“注意:限制不是指要返回的项目数,而是指数据库在执行查询时应评估的项目数。在后续查询调用中将 limit 与 Page.lastEvaluatedKey() 和 ExclusiveStartKey 一起使用来评估限制每次调用的项目。” 这似乎支持我所看到的行为。
但是,如何使用 Java 设置 DynamoDB 返回的匹配项的限制?在早期版本的 sdk 中有使用 .withMaxResultSize 方法的解决方案。
java dynamodb v2 skd 是否有类似的东西,或者我必须手动限制结果集?代码如下:
QueryConditional conditional = QueryConditional.keyEqualTo(
Key.builder()
.partitionValue(jobId)
.build()
);
QueryEnhancedRequest request = QueryEnhancedRequest.builder()
.queryConditional(conditional)
.limit(1)
.scanIndexForward(false)
.build();
Run Code Online (Sandbox Code Playgroud) java amazon-dynamodb dynamo-local dynamodb-queries amazon-dynamodb-local
我是 DynamoDB 的新手,正在使用 NoSQL Workbench 进行学习。“数据建模器”部分中有一个新的“示例”表。我在“操作生成器”部分下创建了一个新的本地连接,以处理/测试“示例”表。连接创建成功,没有错误。但我在连接部分下看不到任何表格。它说“找不到桌子”。我不明白这个问题。我想,我应该看到“数据建模器”部分下可见的“示例”表。如何查看连接部分中的表?
使用 aws-cdk 时如何将 DynamoDB Local 集成到开发流程中?例如,以下应用程序(使用“示例应用程序”模板)可以运行,但如何运行sam local invoke <id of the backendHandler lambda>并指向在您的计算机上运行的 DynamoDB Local 实例(而不是必须运行cdk deploy)才能查看实际情况?
// lib/minimal-app-stack.ts
import * as apiGateway from "@aws-cdk/aws-apigateway";
import * as cdk from "@aws-cdk/core";
import {MinimalBackend} from "./minimal-backend";
export class MinimalAppStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const minimalBackend = new MinimalBackend(this, "MinimalBackend");
new apiGateway.LambdaRestApi(this, "Endpoint", {
handler: minimalBackend.handler
});
}
}
// lib/minimal-backend.ts
import * as cdk from "@aws-cdk/core";
import * …Run Code Online (Sandbox Code Playgroud) 我正在创建一个 shell 脚本,它将在本地创建几个 dynamodb 表等。这是我正在使用的创建表 AWS CLI 命令:
aws dynamodb create-table --cli-input-json file://table-user.json --endpoint-url http://localhost:8000
Run Code Online (Sandbox Code Playgroud)
table-user.json 包含用于创建的所有表相关信息。
此命令的问题是我需要单击“q”键才能继续执行下一行,因为它提供表详细信息作为输出。前任:
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "id",
"AttributeType": "S"
},
{
"AttributeName": "externalId",
"AttributeType": "S"
},
.
.
.
Run Code Online (Sandbox Code Playgroud)
如何静默运行创建表命令?
我只想使用 DynamoDBMapper 更新项目的特定属性。例如,我有一个带有属性的用户表,即 id、名称、地址。
@Data
@DynamoDBTable(tableName = "Users")
public class User {
@DynamoDBHashKey
@DynamoDBGeneratedUuid(DynamoDBAutoGenerateStrategy.CREATE)
private String id;
@DynamoDBAttribute
private String name;
@DynamoDBAttribute
private Address address;
}
Run Code Online (Sandbox Code Playgroud)
我只想更新地址属性而不是其他字段(选择性更新)。
我可以通过使用 UpdateItemSpec 找到一个示例示例,但无法为 DynamoDBMapper 找到它。使用 UpdateItemSpec,我可以使用 withUpdateExpression() 来定义更新表达式。可以在此处找到更多详细信息。
有什么办法可以用DynamoDBMapper实现相同的目标吗?