CDK报错AttributeError: aws_cdk.cx_api无RuntimeInfo属性求助
AttributeError: module 'aws_cdk.cx_api' has no attribute 'RuntimeInfo'
问题原因
你遇到的这个错误确实是混用AWS CDK V1和V2版本导致的。CDK V1与V2的包结构存在本质差异:
- V1中核心功能拆分在
aws-cdk.core包,各云服务模块是独立的aws-cdk.aws-xxx包 - V2则将所有核心功能和服务模块统一整合到
aws-cdk-lib单包中
你的代码同时保留了V1风格的core导入,又可能混用了V2的服务依赖,导致内部模块依赖冲突。cx_api模块的结构在两个版本中完全不同,进而触发RuntimeInfo属性找不到的错误。
解决方案
1. 统一切换到CDK V2环境
先清理环境中的V1相关包,再安装V2的统一依赖:
# 卸载所有V1包 pip uninstall -y aws-cdk.core aws-cdk.aws-lakeformation aws-cdk.aws-iam aws-cdk.aws-sqs aws-cdk.aws-sns aws-cdk.aws-sns-subscriptions # 安装V2核心包及构造依赖 pip install aws-cdk-lib constructs
2. 修正代码的导入与语法
将代码改为V2风格的导入方式,移除多余的core模块导入,同时修复代码中的语法问题:
from constructs import Construct from aws_cdk_lib import ( Duration, Stack, aws_iam as iam, aws_sqs as sqs, aws_sns as sns, aws_sns_subscriptions as subs, aws_lakeformation as lakeformation ) class TablegrantsStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # 定义all_rows_wildcard(根据Lake Formation需求调整,示例用空对象) all_rows_wildcard = {} cfn_data_cells_filter = lakeformation.CfnDataCellsFilter(self, "MyCfnDataCellsFilter", database_name="test", name="MyCfnDataCellsFilter", table_catalog_id="189672731068", table_name="allergies", row_filter=lakeformation.CfnDataCellsFilter.RowFilterProperty( all_rows_wildcard=all_rows_wildcard, filter_expression="column='1234567890'" # 闭合缺失的引号 ) )
代码里的两个细节修正:
- 补充
all_rows_wildcard的定义(需根据实际业务逻辑调整值) - 修复
filter_expression未闭合的引号问题
社区情况
这个问题在CDK从V1迁移到V2的过程中非常普遍,大量开发者因未彻底切换包结构,残留了V1的导入或依赖,引发类似的属性找不到错误。只要完全统一使用V2版本的包和导入规范,这类冲突就能解决。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

