CDK非常好,但我正在努力解决如何使用python sdk部署一个step函数来将一个项放入dynamodb表中的问题。我最终希望通过事件桥提供项目
当我遇到错误时,我不确定它们是否是真正的错误:
我试过这个:
event_table = dynamodb.Table(self, 'events',
partition_key=dynamodb.Attribute(name='id', type=dynamodb.AttributeType.STRING),
billing_mode=dynamodb.BillingMode.PAY_PER_REQUEST, removal_policy=RemovalPolicy.DESTROY)
map = {'id': {'S.$': '$.id'}}
dynamo_put_task = CallDynamoDB.put_item(item=map, table_name=event_table.table_name)
task = Task(self, 'invoke-notification-service', task=dynamo_put_task)
state_machine = StateMachine(self, 'save-event', definition=task)
Rule(self, 'rule_name', targets=[(SfnStateMachine(state_machine))], event_bus=event_bus, event_pattern=EventPattern(account=[Stack.of(self).account]))
我真的不知道如何使用DynamoAttributeValueMap,因为这只是python中的一个shell,所以我不使用它
即使要运行此程序,我也必须从DynamopulatImprops中删除以下行:
if isinstance(item, dict): item = DynamoAttributeValueMap(**item)
否则,当我尝试运行此操作时,会得到一个“未知关键字参数id”。这有点道理,因为它试图打开一个映射并将其传递给一个不带参数(只带self)的构造函数
一个使用cdk创建step函数以写入dynamodb的简单示例将非常有用
我真的不知道如何实例化那张地图
在本例中,我得到的代码至少生成了cloudformation模板,但该项为空。只是{}
当我尝试做这样的事情,因为我认为这是我应该做的
map = DynamoAttributeValueMap()
map._values = {'id': DynamoAttributeValue().with_s('$.id')}
若要尝试将值强制输入到该映射中,我遇到错误:
TypeError: Don't know how to convert object to JSON: DynamoAttributeValueMap(id=)
那么从this开始,我假设这个代码应该工作:
dynamo_put_task = CallDynamoDB.put_item(item={'id': DynamoAttributeValue().with_s('1234')},
table_name=event_table.table_name, return_values=DynamoReturnValues.ALL_NEW)
这将生成此模板:
Type: AWS::StepFunctions::StateMachine
Properties:
DefinitionString:
Fn::Join:
- ""
- - '{"StartAt":"invoke-notification-service","States":{"invoke-notification-service":{"End":true,"Parameters":{"Item":{},"TableName":"'
- Ref: events26E65764
- '","ReturnValues":"ALL_NEW"},"Type":"Task","Resource":"arn:'
- Ref: AWS::Partition
- :states:::dynamodb:putItem"}}}
RoleArn:
Fn::GetAtt:
- saveeventRole24A1910F
- Arn
请注意,该项为空白
当然,这是和
if isinstance(item, dict): item = DynamoAttributeValueMap(**item)
从DynamoPutItemsProps移除
那么有没有bug?只要一个简单的例子就很有用了
我确实怀疑,而且我怀疑可能有一个bug,因为除非我删除那行代码,否则任何东西都不起作用
目前没有回答
相关问题 更多 >
编程相关推荐