首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用aws在类型记录中扫描dynamoDB?

如何使用aws在类型记录中扫描dynamoDB?
EN

Stack Overflow用户
提问于 2022-08-26 14:04:24
回答 1查看 198关注 0票数 0

我试图在类型记录中编写一个cdk包,该包扫描dynamodb表,并将内容用作数组。数据库很小,只有一列。我没有使用javascript库aws,所以我似乎不能使用.documentClient。我已经导入了,似乎我应该能够用它进行扫描。我知道我是个菜鸟,谢谢你的耐心和帮助。

以下是我所拥有的:

代码语言:javascript
复制
import * as iam from "aws-cdk-lib/aws-iam";
import * as ddb from "aws-cdk-lib/aws-dynamodb";

const table = ddb.Table.fromTableArn(this, 'ImportedTable', 'arn:aws:dynamodb:us-east-1:111111111111:table/Things');
    table.grantReadData(new iam.AccountRootPrincipal());
    let thing_list = ddb.Operation.SCAN
   
return(thing_list)
EN

回答 1

Stack Overflow用户

发布于 2022-08-27 02:25:26

CDK不允许直接对您创建的资源进行API调用。如果您想要一个表的内容,那么您需要使用API来做到这一点。既然您已经在使用类型记录,那么请查看Node V3 SDK:

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-dynamodb/index.html

您不能在CDK代码中进行这些调用,因为它需要对API进行异步调用,这在构造中是不允许的。

有一条路可以绕过它。类似于:

代码语言:javascript
复制
(async ()=>{
   const ddbClient = new DynamoDBClient({});
   const { Items: items } = await ddbClient.send(new ScanCommand({ ... }));
   
   const app = new App();
   const stack = new MyStack(app, 'MyStack', { someItems: items });  
})();

但是,我强烈建议您不要这样做。主要是因为您的IaC (CDK代码)的输入现在被混淆了,在您合成堆栈之前,您不会知道数据是什么以及CDK代码会产生什么。

在大多数情况下,最好将这个API调用放在另一个脚本中,并将其输出保存为您的repo中的JSON。然后读取该文件并将其传递给您的CDK代码。这样,驱动基础结构的所有数据都在回购和代码中得到了明确的定义。

类似于:

getSomething.ts

代码语言:javascript
复制
(async ()=>{
   const ddbClient = new DynamoDBClient({});
   const {Items} = await ddbClient.send(new ScanCommand({ ... }));
   
   fs.writeFileSync('data.json', JSON.stringify(Items, null, 2));
})();

然后是你的CDK代码:

代码语言:javascript
复制
const items = JSON.parse(fs.readFileSync('data.json').toString());

const app = new App();
const stack = new MyStack(app, 'MyStack', { ddbItems: items });

这是首选的,因为它使您的代码在运行'synth‘时保持确定性,因为您的所有输入都在代码中得到了明确的定义。

尽管如此,如果你真的坚持并理解与之相关的风险,你可以采取我提到的第一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73502258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档