首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将项目(使用boto3)插入到dynamodb表(使用CDK创建的db表)

将项目(使用boto3)插入到dynamodb表(使用CDK创建的db表)
EN

Stack Overflow用户
提问于 2022-07-21 06:24:11
回答 1查看 389关注 0票数 0

我在一个脚本中配置了一个使用CDK (我使用python)配置的dynamodb表,这个脚本是使用cdk堆栈创建的。现在,我有了另一个.py脚本,它帮助我将数据插入到使用cdk创建的db表中。我的boto3脚本是一个最小的脚本,看起来是这样的-

代码语言:javascript
运行
复制
import boto3
ddb = boto3.resource('dynamodb')
table = ddb.Table(db_stream_table.table_arn)
table.put_item(Item={'timestamp': "123456", 'current_status': "response received", "responded_with": "Yes",'ticket_id': 100})

在这个boto3脚本中,我无法理解如何引用使用cdk创建的dynamodb表,因为行db_stream_table.table_arn返回一个令牌,而实际上它并不引用表的名称。表的名称也有点像这样:InfratestcdkStack-TableCD557FA0-1S1M37VCP51C9。(这个表名不像这里所描述的那样准确,我对数字和字母做了一些更改,但格式相同)

我是不是遗漏了什么?还是我的做法错了?有什么简单的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-07-21 08:00:28

我认为有更容易的方法来解决这个问题,但是我想出了一个解决方案,就是在cdk脚本中设置ssm参数,如下所示:

代码语言:javascript
运行
复制
aws_ssm.StringParameter(self, "SsmParameterforDynamoDB",
        allowed_pattern=".*",
        description="The name of the DynamoDB table",
        parameter_name="dbname",
        string_value=db_stream_table.table_name, # this is the name of your db table as referenced in your cdk code
        tier=aws_ssm.ParameterTier.ADVANCED
        )

然后,如果您有一个独立的脚本运行boto将一个项放到这个表中,那么您可以使用

代码语言:javascript
运行
复制
import boto3

client = boto3.client('ssm')

response = client.get_parameter(
    Name='dbname',
    WithDecryption=False
)
tbl_Transaction_table_name = response['Parameter']['Value']
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table(tbl_Transaction_table_name)
table.put_item(Item={'timestamp': "123456", 'current_status': "response received", "responded_with": "Yes",
                     'ticket_id': 100})

也许我会尝试一个iam角色来限制对此的访问,作为一个额外的步骤。

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

https://stackoverflow.com/questions/73061572

复制
相关文章

相似问题

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