in cdk-iot-analytics/cdk_sap_blog/analytics/dynamo.py [0:0]
def get_ddb(scope):
m_table = dyndb.CfnTable(
scope=scope,
id=f"CDKSAPBlogTable_{scope.table_name}",
table_name=f"{scope.table_name}",
key_schema=[
dyndb.CfnTable.KeySchemaProperty(attribute_name="Type",key_type="HASH"),
],
attribute_definitions=[
dyndb.CfnTable.AttributeDefinitionProperty(attribute_name='Type', attribute_type="S"),
],
provisioned_throughput=dyndb.CfnTable.ProvisionedThroughputProperty(
read_capacity_units=5,
write_capacity_units=5
)
)
initialize_ddb = cr.AwsCustomResource(
scope=scope,
id="CDKSAPBlog_InitializeDynamoDB",
policy=AwsCustomResourcePolicy.from_statements(
[
iam.PolicyStatement(
actions=[
'dynamodb:PutItem',
],
resources=[m_table.get_att("Arn").to_string()]
)
]
),
on_create=AwsSdkCall(
action="putItem",
service="DynamoDB",
parameters={
'TableName': m_table.table_name,
'Item': {
'range': {
'M': {
'temperature': {
'M': {
'max': {'N': scope.temperature_max},
'min': {'N': scope.temperature_min}
}
}
}
},
"Type": {
"S": scope.Type
},
"Equipment": {
"S": scope.Equipment
},
"FunctLoc": {
"S": scope.FunctLoc
}
}
},
physical_resource_id=PhysicalResourceId.of(m_table.logical_id),
),
on_update=AwsSdkCall(
action="putItem",
service="DynamoDB",
parameters={
'TableName': m_table.table_name,
'Item': {
'range': {
'M': {
'temperature': {
'M': {
'max': {'N': scope.temperature_max},
'min': {'N': scope.temperature_min}
}
}
}
},
"Type": {
"S": scope.Type
},
"Equipment": {
"S": scope.Equipment
},
"FunctLoc": {
"S": scope.FunctLoc
}
}
},
physical_resource_id=PhysicalResourceId.of(m_table.logical_id),
),
)
initialize_ddb.node.add_dependency(m_table)
return m_table