标签: dynamo-local

DynamoDB Local:Streams.getRecords返回TrimmedDataAccessException

我正在使用DynamoDB本地从nodejs(Javascript SDK)运行集成测试.当我调用getRecords时,我得到"TrimmedDataAccessException".如果我在AWS(非本地)中针对DynamoDB运行相同的代码,它可以正常工作.这是步骤:

  • 运行DynamoDB
  • createTable"EventStore"
  • createTable"音乐"
  • describeTable"EventStore"(获取LatestStreamArn")
  • describeStream作为"LatestStreamArn"返回(获取ShardId)
  • 带有ShardIteratorType"LATEST"的getShardIterator
  • 将记录放到"音乐"表中
  • 将记录放到"EventStore"表中
  • 来自"EventStore"流的getRecords

"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)

dynamo-local amazon-dynamodb-streams

7
推荐指数
1
解决办法
848
查看次数

"brew install dynamodb-local"导致"在水龙头中找不到公式"

全输出:

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

谢谢你的帮助

homebrew amazon-dynamodb dynamo-local

7
推荐指数
2
解决办法
2852
查看次数

DynamoDB Java v2 sdk 的 QueryEnhancedRequest 中的 Limit 方法未按预期进行限制

我正在使用 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

6
推荐指数
1
解决办法
6749
查看次数

有没有办法使用 Laravel AWS SDK 设置 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

5
推荐指数
1
解决办法
5981
查看次数

Dynamodb-添加非关键属性

我想将数据插入到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):密钥模式中的属性数必须与属性定义中定义的属性数相匹配.

amazon-web-services amazon-dynamodb dynamo-local

5
推荐指数
1
解决办法
3324
查看次数

Node.js 连接 ECONNREFUSED 127.0.0.1:8000 DynamoDB 本地错误

我正在使用这个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)

javascript node.js amazon-dynamodb dynamo-local

5
推荐指数
0
解决办法
4266
查看次数

在 AWS dynamoDB 中更新 JSON 数组

我的文档是这样的:

{
  "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

5
推荐指数
1
解决办法
7836
查看次数

如何通过 lambda 在本地使用 dynamoDb

我认为这是可能的吗?我在 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 之外运行,则它可以正常工作

lambda amazon-dynamodb dynamo-local aws-api-gateway

5
推荐指数
2
解决办法
3481
查看次数

IN运算符提供的操作数过多;操作数:119 dynamodb

尝试在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)

}

amazon-dynamodb dynamo-local

4
推荐指数
2
解决办法
586
查看次数

AWS Local DynamoDB 请求中包含的安全令牌无效

我是 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

我试图运行的代码是这样的。

https://github.com/aws-samples/aws-dynamodb-examples/blob/master/src/main/java/com/amazonaws/codesamples/datamodeling/ObjectPersistenceCRUDExample.java

然而,我收到了这个异常。

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)

java amazon-dynamodb dynamo-local dynamodb-queries

3
推荐指数
1
解决办法
2969
查看次数

不使用 Dynamo DB 本地时,端点 URL 应该是什么?

我正在尝试从 Web 应用程序上的 Dynamo DB 表中获取一些位置坐标,这些位置坐标由 android 应用程序定期更新。由于我是 JavaScript 的新手,所以我正在关注教程。

但我不想使用 Dynamo DB 的本地版本,因为我的表是由 android 应用程序更新的,并且该表不是本地的。那么端点 URL 应该是什么而不是http://localhost:8000.请帮我解决这个问题。

javascript amazon-dynamodb dynamo-local

2
推荐指数
2
解决办法
3953
查看次数

从 DynamoDB 检索数据时,排序键字段是否必须作为搜索条件的一部分?

我正在尝试在包含 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 数据吗?

amazon-dynamodb dynamo-local

1
推荐指数
1
解决办法
3825
查看次数