我在VSCODE中使用AWS CDK。我的项目布局是这样的,一个目录包含多个顶级堆栈。
我希望能够在堆栈之间共享代码。具体地说,它是代码,而不是跨堆栈引用或资源。
例如,我有一个标记函数,希望能够在所有堆栈之间共享和使用。
def default_tag_stacks(*args: cdk.Stack):
for stack in args:
cdk.Tags.of(stack).add("OU", "PlatformInfrastructure")
cdk.Tags.of(stack).add("GovernanceLevel", "Production")
cdk.Tags.of(stack).add("Owner", "Platform")我的编辑器看到库并获取导入,但在运行时
cdk synth我收到了一个输入错误。是否存在路径变量或其他我可以遵循的项目结构,以便共享不属于特定堆栈的代码?
项目结构如下
/
lib/tagging.py
stack-1/app.py
stack-2/app.py进口是这样的
from lib.tagging import tag_all_app_stacks_defaultcd stack-1
cdk synth给出
Traceback (most recent call last):
File "app.py", line 7, in <module>
from lib.tagging import tag_all_app_stacks_default
ModuleNotFoundError: No module named 'lib'发布于 2022-09-25 08:17:10
您应该决定导入的顶级项目目录是什么。如果是/,那么app.py和cdk.json应该在/中,而cdk synth应该可以工作。否则(即项目的工作目录是stack-1),导入应该是from tagging import tag_all_app_stacks_default。您可以更多地了解Python模块导入如何在https://docs.python.org/3/tutorial/modules.html中工作。
https://stackoverflow.com/questions/73815584
复制相似问题