尝试从(https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_rds/ClusterInstance.html)运行文档,它说
ClusterInstance
是aws_rds
的一部分
。当 cdk synth
到达该行时,它表示无法找到该模块。令人困惑的部分是 aws_rds
的其他部分可以正常导入。另外 dir(aws_rds)
显示了大部分模块,但不是这个。
我正在尝试跑步:
from aws_cdk import (
Stack,
aws_rds as rds,
aws_ec2 as ec2,
)
from constructs import Construct
from cdk_utils.get_param import get_param
class AuroraDbStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
vpc = ec2.Vpc(
self,
"Aurora TEMP VPC",
max_azs=2,
subnet_configuration=[
ec2.SubnetConfiguration(
subnet_type=ec2.SubnetType.PRIVATE_ISOLATED,
name="Aurora TEMP Private Subnet",
),
],
)
cluster = rds.DatabaseCluster(self, "Database",
engine=rds.DatabaseClusterEngine.aurora_mysql(
version=rds.AuroraMysqlEngineVersion.VER_3_01_0
),
## HERE: When trying to access `rds.ClusterInstance`
writer=rds.ClusterInstance.provisioned("writer",
publicly_accessible=False
),
readers=[
rds.ClusterInstance.serverless_v2("reader2")
],
vpc_subnets=ec2.SubnetSelection(
subnet_type=ec2.SubnetType.PRIVATE_ISOLATED
),
vpc=vpc
)
准确的回溯:
Synthesizing test-aurora-db
Traceback (most recent call last):
File "/cdk/AuroraDB/app.py", line 23, in <module>
AuroraDbStack(
File "/usr/local/lib/python3.9/site-packages/jsii/_runtime.py", line 118, in __call__
inst = super(JSIIMeta, cast(JSIIMeta, cls)).__call__(*args, **kwargs)
File "/cdk/AuroraDB/aurora_db/aurora_db_stack.py", line 34, in __init__
writer=rds.ClusterInstance.provisioned("writer",
AttributeError: module 'aws_cdk.aws_rds' has no attribute 'ClusterInstance'
版本:
cdk --version
:2.106.0(版本 0d1a333)(昨天是 2.105.0,这是文档所在的位置)。
python3 --version
:Python 3.9.16
npm --version
:10.1.0
node --version
:v20.7.0
我期望 ClusterInstance 是 aws_rds 的一个模块。也许它已重命名,并且文档需要更新?令人困惑的部分是很多其他模块都工作正常,所以我不认为它与 python 路径相关......
我想我终于找到了答案,python包
aws-cdk-lib
已经过时了。碰撞它 2.81.0
-> 2.99.1
让我可以再次合成。