如何在python代码中修复预期的<type'basestring'=“”>

时间:2019-04-16 16:07:54

标签: python amazon-cloudformation troposphere

我正在使用Troposphere创建CloudFormation模板。

如果我使用变量或字符串,则会出现错误-<class 'troposphere.efs.FileSystem'>, expected <type 'basestring'>

我是对流层和python的新手,所以对您的帮助表示赞赏。

使用字符串时的代码

MyEFSMountTarget1a = t.add_resource(MountTarget(
    "MyEFSMountTarget1a",
    FileSystemId=(efs_file_system),
    SecurityGroups=["sg-0c69656095ee1a5b8"],
    SubnetId="subnet-091b67136896b2be8"
))

使用变量时的代码

MyEFSMountTarget1a = t.add_resource(MountTarget(
    "MyEFSMountTarget1a",
    FileSystemId=(efs_file_system),
    SecurityGroups=[efs_security_group],
    SubnetId=PublicSubnet1a
))

错误:<class 'troposphere.efs.MountTarget'>: MyEFSMountTarget1a.FileSystemId is <class 'troposphere.efs.FileSystem'>, expected <type 'basestring'>

我正在做的是从另一个cloudformation堆栈中导入值,并在另一个堆栈中使用它们。

这是我填充变量的方式-

efs_security_group = ImportValue(Join("-", [params.ENVIRONMENT, "efsSecurityGroup"]),)
PublicSubnet1a = ImportValue(Join("-", [params.ENVIRONMENT, "PublicSubnet1a"]),)

它们正确填充,我以为它们是jutt字符串-是。所以我想我不能为SecurityGroups或SubnetId使用字符串吗?我需要将字符串转换为基本字符串吗?

Ernie

1 个答案:

答案 0 :(得分:0)

我的错误-这是文件系统ID-我忘记为它添加引用FileSystemId = Ref(efs_file_system),