AWS CDK部署时CloudFormation输出EFS ARN属性不存在报错
问题根因
- 核心原因是本地安装的
aws-cdk.aws-efs包版本与参考文档对应的CDK版本不匹配:file_system_arn是CDK v1后续小版本迭代才为FileSystem L2构造新增的属性,早期v1版本的FileSystem类未暴露该属性,直接调用就会抛出属性不存在的错误。 - 次要排查点:确认导入路径无错误,未误引入第三方封装的非官方EFS类。
解决方案
方案1(推荐):对齐CDK包版本
将环境中所有CDK相关依赖升级到同一较新的v1版本,保证EFS包版本支持file_system_arn属性,执行以下升级命令:
pip install --upgrade aws-cdk.core aws-cdk.aws-efs
升级完成后原有业务代码无需任何修改,即可正常完成synth、部署流程。
方案2:低版本兼容写法
如果暂时无法升级CDK版本,可以通过FileSystem已有的file_system_id属性手动拼接ARN,兼容所有v1版本CDK,修改后的输出部分代码如下:
from aws_cdk.core import Arn, ArnComponents # 手动拼接EFS ARN fs_arn = Arn.format( ArnComponents( service="elasticfilesystem", resource="file-system", resource_name=fs.file_system_id ), stack=self ) CfnOutput( scope=self, id="cfnid", value=fs_arn, export_name="export name", description="ARN of the file system" )
注意:使用该写法需要提前从aws_cdk.core导入Arn、ArnComponents两个工具类。
内容的提问来源于stack exchange,提问作者pal
相关产品推荐
相关产品推荐

