小编Ale*_*kis的帖子

DynamoDB:查询所有数据并按日期降序排序

我是 AWS DynamoDB 的新手,需要这里专家的指导。

我正在创建一个应用程序,该应用程序将显示一个事件列表,条件是事件日期必须大于今天日期,并按事件日期降序排列。我的表架构如下:

分区键 = eventid

排序键 = 事件日期

如果我使用关系数据库,我可以使用“SELECT * FROM events where eventdate > todaydate ORDERBY eventdate DESC”,但是我想如何使用 AWS DynamoDB 实现这一点?我希望使用 QUERY 而不是 SCAN。

amazon-web-services amazon-dynamodb aws-lambda

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

如何使用DynamoDBMapper批量保存实体跳过空属性

我使用UPDATE_SKIP_NULL_ATTRIBUTESas 配置创建映射器,以便我可以保存实体并跳过空属性。它确实有效。但是,当我调用batchSave时,它不起作用。

有谁知道问题所在吗?

```
DynamoDBMapperConfig update_config = DynamoDBMapperConfig.builder()
        .withSaveBehavior(DynamoDBMapperConfig.SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES)
            .build();
mapper = new DynamoDBMapper(client, update_config);

List<DynamoDBMapper.FailedBatch> failedBatches = mapper.batchSave(one, two);
```
Run Code Online (Sandbox Code Playgroud)

最后,我发现空属性已更新到我不想更新的数据库。我只想保存不为空值的属性。

java amazon-dynamodb

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

dynamo db的过滤器表达式中的OR条件

我有一个用例,需要使用dynamo db查询表达式以编程方式查询dynamo db。假设A和B有两个属性,我想要一个类似的过滤器表达式(A='Test' OR A ='Test1') and B='test2'

我搜索与此相关,但找不到有用的资源。我是dynamo db的新手。

query-expressions amazon-web-services amazon-dynamodb

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

使用Objective C从AWS上的IOS SDK访问DynamoDB

我使用了Lamdba并设置了IAM和Cognito并获得了identityId和token.我对下一步感到困惑.登录后,用户在Cognito中进行身份验证.但是,如何通过在应用加载时刷新令牌来保持登录状态?如何仅使用经过身份验证的用户查询DynamoDB?文件含糊不清.还使用了用lambda编写的联合身份和我自己的OpenID开发人员身份验证过程.

objective-c amazon-web-services ios amazon-dynamodb aws-cognito

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

如何在具有 IAM 角色的 ec2 实例上使用 java 访问 dynamodb 而无需访问凭据

我想使用 Java 访问 Ec2 实例上的 Dynamodb。此 Ec2 实例已被授予 IAM 角色,我可以通过该角色使用 aws CLI:aws dynamodb list-table 直接访问 Dynamodb。现在我尝试通过 Java 访问 Dynamodb。Java 代码应该能够承担角色,但它不起作用。

public static void main(String[] args) throws Exception {

    String ROLE_ARN = "arn:aws:iam::....";

    AWSSecurityTokenServiceClient stsClient = new AWSSecurityTokenServiceClient();

    AssumeRoleRequest assumeRequest = new AssumeRoleRequest()
        .withRoleArn(ROLE_ARN)
        .withDurationSeconds(3600)
        .withRoleSessionName("demo");

    AssumeRoleResult assumeResult = stsClient.assumeRole(assumeRequest);

    BasicSessionCredentials temporaryCredentials = new BasicSessionCredentials(
                assumeResult.getCredentials().getAccessKeyId(),
                assumeResult.getCredentials().getSecretAccessKey(),
                assumeResult.getCredentials().getSessionToken());

    AmazonDynamoDBClient client = new AmazonDynamoDBClient(temporaryCredentials)

    DynamoDB dynamoDB = new DynamoDB(client);

    TableCollection<ListTablesResult> tables = dynamoDB.listTables();
    Iterator<Table> iterator_t = tables.iterator();
    System.out.println("Listing table names");
    while (iterator_t.hasNext()) …
Run Code Online (Sandbox Code Playgroud)

java role amazon-dynamodb amazon-iam

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

与DynamoDB库Boto3的事务

有没有办法使用Boto3(Python库)进行ACID事务?

我想将一个项目写入多个表,并确保写入已应用于所有表,否则回滚.我阅读了Boto3文档,没有看到任何关于事务或ACID操作的提及.

我查看了这个库:http: //dynamodb-mapper.readthedocs.io/en/latest/

我已经检查了代码,它似乎使用旧的boto库,它似乎不再受支持.

我知道有一个针对交易的AWS解决方案:https: //aws.amazon.com/blogs/aws/dynamodb-transaction-library/

这是使用Java代码完成的.我想知道你是否有人能够使用Boto3在DynamoDB上执行交易?

谢谢

python amazon-web-services amazon-dynamodb boto3

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

带有 NOT IN 的 DynamoDB FilterExpression

我正在尝试对 DynamoDB 查询(在 Node.JS 环境中)运行过滤器表达式,以使其中一个属性不在这些属性列表中。我这样做:

documentClient.query( {
    TableName: 'event',
    IndexName: 'OrganisationTimestamp',
    KeyConditionExpression: '#ts BETWEEN :from AND :to',
    ExpressionAttributeNames: {
      '#ts': 'Timestamp'
    },
    ExpressionAttributeValues: {
        ':to': to,
        ':from': from,
        ':ignoredUserIds': "1, 2, 3"
    },
    FilterExpression: 'not (userId in (:ignoredUserIds))'
  })
Run Code Online (Sandbox Code Playgroud)

但是,我在这里没有任何运气,并且在该范围内使用 userId 属性取回项目。

非常感谢任何帮助,谢谢!

node.js amazon-dynamodb

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

“实时”DynamoDB 流如何?

我们正在试验一种新的无服务器解决方案,其中外部提供程序写入 DynamoDB,DynamoDB Stream 对新的写入事件做出反应,并触发 AWS Lambda 函数来传播更改?

到目前为止,它运行良好,但是,有时我们会注意到数据被延迟,例如 Lambda 几分钟内没有更新。

在查阅了大量 DynamoDB Stream 文档后,他们使用的唯一术语是“近实时流记录”,但通常什么是“近实时”?我们在这里看到的可能的延迟是什么?

real-time amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams

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

aws cli dynamo db (ValidationException) 错误

我正在寻找使用 python 的 boto3 模块向 dynamodb 批量写入项目,我得到了这个。这是我第一次使用 aws cli 或 boto3。文档说当存在空值和可能不正确的数据类型时会发生验证异常错误,但我已经玩过所有这些并且它似乎不起作用。

dynamodb 是否只喜欢一次写入 25 个项目?如果是这样,我如何控制这些批次?

我的请求:

client = boto3.client('dynamodb')
response = client.batch_write_item(RequestItems=batch_dict)
Run Code Online (Sandbox Code Playgroud)

batch_dict 的顶部:

{'scraper_exact_urls': [{'PutRequest': {'Item': {'Sku': {'S': 'T104P3'},
 'pps_id': {'N': '427285976'},
 'scraper_class_name': {'S': 'scraper_class_name'},
 'store_id': {'N': '1197386754'},
 'updated_by': {'S': 'user'},
 'updated_on': {'N': '1480714223'},
 'updated_url': {'S': 'http://www.blah.com'}}}},
 {'PutRequest': {'Item': {'Sku': {'S': 'T104P3'},
 'pps_id': {'N': '427285976'},
 'scraper_class_name': {'S': 'scraper_class_name'},
 'store_id': {'N': '1197386754'},
 'updated_by': {'S': 'user'},
 'updated_on': {'N': '1480714223'},
 'updated_url': {'S': 'http://www.blah.com'}}}},....
Run Code Online (Sandbox Code Playgroud)

架构:

属性:“pps_id”=>\Aws\DynamoDb\Enum\Type::NUMBER、“sku”=>\Aws\DynamoDb\Enum\Type::STRING、“scraper_class_name”=>\Aws\DynamoDb\Enum\Type: :STRING, "store_id"=>\Aws\DynamoDb\Enum\Type::NUMBER, "updated_url"=>\Aws\DynamoDb\Enum\Type::STRING, "updated_by"=>\Aws\DynamoDb\Enum\Type ::STRING, "updated_on"=>\Aws\DynamoDb\Enum\Type::NUMBER, 字段: …

python amazon-web-services amazon-dynamodb aws-cli

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

DynamoDB 插入(放置)项目 - 返回创建的项目?

在我的 Python 脚本中,我将一条记录(项目)插入 DynamoDB 表中,但我意识到来自 AWS 的响应不包括插入的实际项目:

{'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive',
   'content-length': '2',
   'content-type': 'application/x-amz-json-1.0',
   'date': 'Fri, 27 Jan 2017 23:31:22 GMT',
   'server': 'Server',
   'x-amz-crc32': '234324243',
   'x-amzn-requestid': 'xxxxxxxxxx'},
  'HTTPStatusCode': 200,
  'RequestId': 'xxxxxxxxxx',
  'RetryAttempts': 0}}
Run Code Online (Sandbox Code Playgroud)

这很不幸,因为我的逻辑如下:

if not user.exists():
    user = create_user()
else:
    user = get_user()

user.do_something()
Run Code Online (Sandbox Code Playgroud)

我不想再做一次往返只是为了获取我刚刚插入的用户对象。

当然,我可以模拟该对象,因为boto3在 Python 中使用该user对象只是一个类似字典的东西,但能够仅使用单个表示形式是很好的。似乎也有put_item电话

r = user_table.put_item(Item={'user_id': uid, 'info' : { ... }})
Run Code Online (Sandbox Code Playgroud)

应该能够返回放置的项目?或者其他一些端点可以吗?

感谢您的任何见解!

python amazon-web-services amazon-dynamodb

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