我正在使用DynamoDB本地从nodejs(Javascript SDK)运行集成测试.当我调用getRecords时,我得到"TrimmedDataAccessException".如果我在AWS(非本地)中针对DynamoDB运行相同的代码,它可以正常工作.这是步骤:
"put"命令的顺序很重要.如果我把"EventStore"放在首先一切正常,但是当我首先使用"Music"时它会失败.如果我更改顺序,我的应用程序逻辑将是错误的,因此只更改顺序对我来说是一个问题.
运行DynamoDB
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -dbPath /data
Run Code Online (Sandbox Code Playgroud)
CREATETABLE
{
TableName: "EventStore",
KeySchema: [
{ AttributeName: "EntityId", KeyType: "HASH" },
{ AttributeName: "Version", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "EntityId", AttributeType: "S" },
{ AttributeName: "Version", AttributeType: "N" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
},
StreamSpecification: {
StreamEnabled: true,
StreamViewType: "NEW_IMAGE"
}
}
Run Code Online (Sandbox Code Playgroud)
createTable(响应)
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "EntityId",
"AttributeType": "S" …Run Code Online (Sandbox Code Playgroud) 全输出:
Error: No available formula with the name "dynamodb-local"
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
Error: No formulae found in taps.
Run Code Online (Sandbox Code Playgroud)
自制版1.1.10
操作系统版本10.11.6
谢谢你的帮助
我正在使用 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
我在尝试使用当前的 Laravel 项目启动并运行 DynamoDB Local 时遇到了问题。
Laravel AWS SDK 允许在 .env 文件中设置一些密钥来更改密钥/秘密/区域,但似乎不支持更改端点,而这是使用 DynamoDB Local 所需要的(关键选项位于自述文件在这里: https: //github.com/aws/aws-sdk-php-laravel)。
常规 PHP SDK的文档似乎非常简单地介绍了如何设置 Dynamo DB Local:
$client = DynamoDbClient::factory(array(
'profile' => 'default',
'region' => 'us-west-2', #replace with your desired region
'endpoint' => 'http://localhost:8000'
));
Run Code Online (Sandbox Code Playgroud)
使用 Laravel AWS SDK,如果不修改生产 DynamoDB 连接所需的一堆内容,我就无法直接访问 DynamoDBClient。
例如,使用 Laravel AWS SDK,可以通过以下方式访问 DynamoDB:
$dynamoDB = AWS::get('DynamoDb');
Run Code Online (Sandbox Code Playgroud)
我真的在寻找诸如可以更改的环境变量之类的东西,以便我可以轻松地在生产环境和本地环境之间切换,但我找不到它。
有没有简单的方法可以使用 Laravel AWS SDK 设置 DynamoDB Local?
php amazon-web-services laravel amazon-dynamodb dynamo-local
我想将数据插入到dynamodb local中.但是,我只有一个键属性和多个非键属性.
{
'id':'99876983ydbhdu3739',
'category':'Spa',
'latitude':'33.498',
'longitude':'32.332',
'name':'Studio'
}
Run Code Online (Sandbox Code Playgroud)
我有多个这样的价值观.这是一条记录,是我想插入的一个例子.以下是我的尝试:
table = dynamodb.create_table(
TableName='Trial',
KeySchema=[
{
'AttributeName': 'facebook_id',
'KeyType': 'HASH' #Sort key
},
{
'AttributeName': 'latitude',
'KeyType': 'RANGE' #Sort key
},
],
AttributeDefinitions=[
{
'AttributeName':'id',
'AttributeType':'S'
},
{
'AttributeName': 'category',
'AttributeType': 'S'
},
{
'AttributeName': 'latitude',
'AttributeType': 'S'
},
{
'AttributeName': 'longitude',
'AttributeType': 'S'
},
{
'AttributeName': 'name',
'AttributeType':'S'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 10,
'WriteCapacityUnits': 10
}
)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
调用CreateTable操作时发生错误(ValidationException):密钥模式中的属性数必须与属性定义中定义的属性数相匹配.
我正在使用这个NPM 插件来处理在我的 Node 应用程序中创建本地 DynamoDB 本地服务器。出于某种原因,有时它会给我以下错误。不知道为什么,但在测试的特定部分运行测试时似乎总是会发生。
绝对不是每次都发生。也许 50% 左右。很奇怪。
我读到错误意味着启动 DynamoDB 本地服务器失败。但我不知道为什么,因为它没有提供更多细节。
DynamoDB Local failed to start with code 1
{ Error: connect ECONNREFUSED 127.0.0.1:8000
at Object.exports._errnoException (util.js:1012:11)
at exports._exceptionWithHostPort (util.js:1035:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
message: 'connect ECONNREFUSED 127.0.0.1:8000',
code: 'NetworkingError',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 8000,
region: 'us-west-2',
hostname: 'localhost',
retryable: true,
time: 2016-09-13T03:26:05.804Z }
Run Code Online (Sandbox Code Playgroud)
哦,这是我创建服务器的代码。
dynamodbLocal.start({port : dbport, /* Port to listen on. Default: 8000 */
cors : '*', /* Enable CORS support …Run Code Online (Sandbox Code Playgroud) 我的文档是这样的:
{
"data": {
"eventId": "20161029125458-df-d",
"name": "first",
"purpose": "test",
"location": "yokohama",
"dateArray": [],
"attendees": [
{
"attendeeId": "2016102973634-df",
"attendeeName": "lakshman",
"personalizedDateSelection": {}
},
{
"attendeeId": "2016102973634-tyyu",
"attendeeName": "diwaakar",
"personalizedDateSelection": {}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
比如说,我需要使用attendeeId: 2016102973634-df更新参与者JSON 数组。我尝试了很多使用update 和 condition expression 的方法,但没有成功。
这是我的尝试:
const params = {
TableName: "event",
Key: {
"eventId": eventId
},
UpdateExpression: "SET attendees[???] = ",
ConditionExpression: attendees.attendeeId = "2016102973634-df",
ExpressionAttributeValues: {
":attendee" : attendeeList
},
ReturnValues: "ALL_NEW"
};
dynamo.update(params, (err, data) => …Run Code Online (Sandbox Code Playgroud) arrays json amazon-web-services amazon-dynamodb dynamo-local
我认为这是可能的吗?我在 sam 模板中定义了一个 lambda 和 api 网关。我使用 sam-local 来启动它。在我的 lambda 中,我想连接到我的本地 dynamoDB,但 lambda 一直超时。代码如下:
let AWS = require('aws-sdk')
let dyn= new AWS.DynamoDB({ endpoint: new AWS.Endpoint("http://localhost:8000") })
function handler(event, context, callback) {
dyn.listTables({Limit: 10}, function(err, data) {
if (err) {
console.log("Error", err.code)
} else {
console.log("Table names are ", data.TableNames)
}
})
let response = {
statusCode: 200
}
callback(null, response)
}
Run Code Online (Sandbox Code Playgroud)
如果此代码在 lambda 之外运行,则它可以正常工作
尝试在dynamodb中使用IN操作,但出现以下错误。有人可以帮我替代解决方案吗?
var params = {
TableName : "table_name",
FilterExpression : "id IN ("+Object.keys(profileIdObject).toString()+ ")",
ExpressionAttributeValues : profileIdObject
Run Code Online (Sandbox Code Playgroud)
};
错误:: {
"message": "Invalid FilterExpression: The IN operator is provided with too many operands; number of operands: 119",
"code": "ValidationException",
"time": "2018-02-13T08:48:02.597Z",
"statusCode": 400,
"retryable": false,
"retryDelay": 25.08276239472692
Run Code Online (Sandbox Code Playgroud)
}
我是 AWS 的新手,我正在尝试从 Java 程序对本地 DynamoDB 执行 CRUD 操作。Java 程序是一个 AWS 示例。
我安装了 AWS CLI 并设置了以下配置 - 根据 AWS 文档,我不需要本地 DynamoDB 的真正 AWS 访问和密钥。
我通过在 AWS CLI 中运行 aws configure 在 ~/.aws/config 和 ~/.aws/credentials 中设置了以下值。
[default]
aws_access_key_id = ''
aws_secret_access_key = ''
[default]
region = ap-south-1
Run Code Online (Sandbox Code Playgroud)
我有运行这个的本地 DYnamoDB JAR。
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
我试图运行的代码是这样的。
然而,我收到了这个异常。
AmazonDynamoDBException:请求中包含的安全令牌无效。
完整的堆栈是这样的。
Exception in thread "main" com.amazonaws.services.dynamodbv2.model.AmazonDynamoDBException: The security token included in the request is invalid. (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Web 应用程序上的 Dynamo DB 表中获取一些位置坐标,这些位置坐标由 android 应用程序定期更新。由于我是 JavaScript 的新手,所以我正在关注本教程。
但我不想使用 Dynamo DB 的本地版本,因为我的表是由 android 应用程序更新的,并且该表不是本地的。那么端点 URL 应该是什么而不是http://localhost:8000.请帮我解决这个问题。
我正在尝试在包含 HashKey 和 SortKey 字段的表上运行 DynamoDB 查询。
在进行get-item操作时,当我为两个hashkey,sortkey字段提供密钥时,我会看到结果。但是当我尝试仅使用 hashkey 字段时,出现以下异常:
An error occurred (ValidationException) when calling the GetItem operation: One of the required keys was not given a value
难道我们不能仅根据 hashkey 获取 DynamoDB 数据吗?
dynamo-local ×12
amazon-dynamodb ×11
java ×2
javascript ×2
arrays ×1
homebrew ×1
json ×1
lambda ×1
laravel ×1
node.js ×1
php ×1