如何用Python版AWS CDK创建带时间戳后缀的DynamoDB表
解决方案
核心修改点
- 修正原代码中
datetime的拼写错误(Python中datetime模块名是全小写,原代码写的dateTime会触发命名报错) - 对时间戳做格式处理,避免出现DynamoDB表名不允许的特殊字符(比如默认浮点型时间戳的小数点)
- 用Python字符串拼接方法把固定表名前缀和时间戳组合
修改后完整代码
from aws_cdk import ( core as cdk, aws_dynamodb as dynamodb ) from aws_cdk import core from datetime import datetime class CdkStack(cdk.Stack): def __init__(self, scope: cdk.Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # 二选一即可: # 方式1:使用10位整数秒级时间戳,无特殊字符 current_date = datetime.now() timestamp = int(datetime.timestamp(current_date)) # 方式2:使用易读的日期时间格式,示例输出为20240520153012,可读性更强 # timestamp = datetime.now().strftime("%Y%m%d%H%M%S") # 用f-string拼接表名,写法最简洁直观 table_full_name = f"DynamoDbTableWithTimeStamp_{timestamp}" dynamodb_table = dynamodb.Table( self, id='dynamodbTable', table_name=table_full_name, partition_key=dynamodb.Attribute(name='id', type=dynamodb.AttributeType.STRING) )
补充说明
- 你也可以用+号实现拼接,写法为
table_full_name = "DynamoDbTableWithTimeStamp_" + str(timestamp),注意必须把数字类型的timestamp转成字符串才能和文本拼接 - 每次执行cdk deploy时如果重新生成时间戳,每次都会创建新的DynamoDB表,如果你需要固定表名仅首次生成的话,可以把时间戳存入CDK上下文变量或者项目配置文件中
- DynamoDB表名允许的字符为a-z、A-Z、0-9、下划线(_)、点(.)、短横线(-),处理时间戳时不要保留小数点等非法字符
内容的提问来源于stack exchange,提问作者Dave Michaels
相关产品推荐
相关产品推荐

