awswrangler/timestream/_create.py (46 lines of code) (raw):

"""Amazon Timestream Create Module.""" from __future__ import annotations import logging from typing import Any import boto3 from awswrangler import _utils _logger: logging.Logger = logging.getLogger(__name__) def create_database( database: str, kms_key_id: str | None = None, tags: dict[str, str] | None = None, boto3_session: boto3.Session | None = None, ) -> str: """Create a new Timestream database. Note ---- If the KMS key is not specified, the database will be encrypted with a Timestream managed KMS key located in your account. Parameters ---------- database Database name. kms_key_id The KMS key for the database. If the KMS key is not specified, the database will be encrypted with a Timestream managed KMS key located in your account. tags Key/Value dict to put on the database. Tags enable you to categorize databases and/or tables, for example, by purpose, owner, or environment. e.g. {"foo": "boo", "bar": "xoo"}) boto3_session The default boto3 session will be used if **boto3_session** is ``None``. Returns ------- The Amazon Resource Name that uniquely identifies this database. (ARN) Examples -------- Creating a database. >>> import awswrangler as wr >>> arn = wr.timestream.create_database("MyDatabase") """ _logger.info("Creating Timestream database %s", database) client = _utils.client(service_name="timestream-write", session=boto3_session) args: dict[str, Any] = {"DatabaseName": database} if kms_key_id is not None: args["KmsKeyId"] = kms_key_id if tags is not None: args["Tags"] = [{"Key": k, "Value": v} for k, v in tags.items()] response = client.create_database(**args) return response["Database"]["Arn"] def create_table( database: str, table: str, memory_retention_hours: int, magnetic_retention_days: int, tags: dict[str, str] | None = None, timestream_additional_kwargs: dict[str, Any] | None = None, boto3_session: boto3.Session | None = None, ) -> str: """Create a new Timestream database. Note ---- If the KMS key is not specified, the database will be encrypted with a Timestream managed KMS key located in your account. Parameters ---------- database Database name. table Table name. memory_retention_hours The duration for which data must be stored in the memory store. magnetic_retention_days The duration for which data must be stored in the magnetic store. tags Key/Value dict to put on the table. Tags enable you to categorize databases and/or tables, for example, by purpose, owner, or environment. e.g. {"foo": "boo", "bar": "xoo"}) timestream_additional_kwargs Forwarded to botocore requests. e.g. timestream_additional_kwargs={'MagneticStoreWriteProperties': {'EnableMagneticStoreWrites': True}} boto3_session The default boto3 session will be used if **boto3_session** is ``None``. Returns ------- The Amazon Resource Name that uniquely identifies this database. (ARN) Examples -------- Creating a table. >>> import awswrangler as wr >>> arn = wr.timestream.create_table( ... database="MyDatabase", ... table="MyTable", ... memory_retention_hours=3, ... magnetic_retention_days=7 ... ) """ _logger.info("Creating Timestream table %s in database %s", table, database) client = _utils.client(service_name="timestream-write", session=boto3_session) timestream_additional_kwargs = {} if timestream_additional_kwargs is None else timestream_additional_kwargs args: dict[str, Any] = { "DatabaseName": database, "TableName": table, "RetentionProperties": { "MemoryStoreRetentionPeriodInHours": memory_retention_hours, "MagneticStoreRetentionPeriodInDays": magnetic_retention_days, }, **timestream_additional_kwargs, } if tags is not None: args["Tags"] = [{"Key": k, "Value": v} for k, v in tags.items()] response = client.create_table(**args) return response["Table"]["Arn"]