我正在尝试使用pyplates来创建AWS CloudFormation JSON模板。我对python编程很新,我遇到了一个我不确定如何解决的问题。
CF模板可以非常快速地变得非常大,因此当我使用单片文件来存储所有资源等时也会发生同样的情况。我想将资源等分解为单独的文件以使事情更加模块化。
要生成JSON,您必须通过cli运行以下命令:
cfpy_generate <pyplate> [<outfile>]
该文件是一个python文件,所以你应该(至少对我来说)能够在其中运行任何Python代码,但是当我尝试导入这些文件时,我会收到错误。
例如:
pyplates_subfile.py:
from cfn_pyplates.core import Resource, Properties
from cfn_pyplates.functions import ref
subnet = Resource (
'ExampleSubnet', 'AWS::EC2::Subnet', # name, resource type
Properties (
{
'AvailabilityZone': 'eu-west-1b',
'CidrBlock': '192.168.0.0/24',
'Tags': {},
'VpcId': ref('VPCID') ,
}
)
pyplates_main.py:
import pyplates_subfile
ctf = CloudFormationTemplate(description='Test Template')
ctf.parameters.add( Parameter(
'VPCID', 'String',
{
'Default': VPCID,
'Description': 'The default VPC to use',
})
)
ctf.resources.add( pyplates_subfile.subnet )
当我尝试生成文件时,我得到以下内容:
$ cfn_py_generate pyplates_main.py
Traceback (most recent call last):
File "/Users/marcus/dev/virtenvs/cfn/bin/cfn_py_generate", line 9, in <module>
load_entry_point('cfn-pyplates==0.3.0', 'console_scripts', 'cfn_py_generate')()
File "/Users/marcus/dev/virtenvs/cfn/lib/python2.7/site-packages/cfn_pyplates/cli.py", line 120, in generate
pyplate = _load_pyplate(args['<pyplate>'], options_mapping)
File "/Users/marcus/dev/virtenvs/cfn/lib/python2.7/site-packages/cfn_pyplates/cli.py", line 40, in _load_pyplate
exec pyplate in exec_namespace
File "pyplates_main.py", line 1, in <module>
import pyplates_subfile
ImportError: No module named pyplates_subfile
但是,我可以通过python控制台或可执行脚本导入模块。
此外,我查看了源代码,看看是否有一种方法可以使用将为我生成输出的库来创建自己的脚本,但是我似乎找不到这样做的方法。
感谢任何帮助。