in infrastructure/app_stack.py [0:0]
def __init__(self, scope: _core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
ks_resource, cassandra_keyspace_arn = self.create_cassandra_keyspace('cassandra_demo')
table_resource, cassandra_table_arn = self.create_cassandra_table( table_name='country_cities',
keyspace_name='cassandra_demo',
keyspace_ref = ks_resource.ref,
partitionkey_columns=[
{'ColumnName':'country',
'ColumnType':'TEXT',}
],
clustering_key_columns=[
{'Column': {'ColumnName': 'city_name',
'ColumnType': 'TEXT',},
'OrderBy': 'ASC'}
],
regular_columns=[
{'ColumnName':'population',
'ColumnType':'INT'},
],
)
user = _iam.User(self, 'CassandraDemoUser',user_name='CassandraDemoUser')
policy = _iam.Policy(self, 'CassandraFullDataAccess')
policy.add_statements(_iam.PolicyStatement(
resources=[cassandra_table_arn],
actions=['cassandra:Select', 'cassandra:Modify']
))
policy.attach_to_user(user)
secrets = _secretsmanager.Secret(self,
'cassandra_demo_creds',
secret_name='cassandra_demo_creds')
code = _lambda.Code.asset('lambda/.dist/lambda.zip')
cassandra_function = _lambda.Function(self,
'cassandra-demo',
function_name='cassandra-demo',
runtime=_lambda.Runtime.PYTHON_3_6,
memory_size=1024,
code=code,
handler='demo_handler.handler',
tracing=_lambda.Tracing.ACTIVE,
environment={'CASSANDRA_CREDS': secrets.secret_arn},
)
secrets.grant_read(cassandra_function)
api = _apigateway.LambdaRestApi(self,'cassandra-demo-api', handler=cassandra_function)