我正在尝试使用 config.py 文件来包含我想在其他项目堆栈文件中执行的资源标签的代码。这样,config.py 文件将是标记信息需要更改时需要更新的唯一位置。我仍在学习 Python,因此我们将不胜感激。
在 config.py
from aws_cdk import core
class ResourceTags():
def __init__(self):
core.Tags.of(self).add("createdPurpose", "value")
core.Tags.of(self).add("createdBy", "value")
core.Tags.of(self).add("project", "value")
core.Tags.of(self).add("stackName", self.stack_name)
在 stack.py 文件中
from config import ResourceTags
答案 0 :(得分:1)
您可以拥有一个带有方法的辅助类,该方法接受实现 Stack 类的类的实例。在您的示例中,您试图将标签应用于未实现“堆栈”类的类。你需要传递一些可以做的事情。
这是一个快速的 C# 示例
class ResourceTags
{
private void ApplyTags(Construct scope)
{
Tags.Of(scope).Add("Tag1", "Val1");
Tags.Of(scope).Add("Tag1", "Val1");
Tags.Of(scope).Add("Tag1", "Val1");
}
public void ApplyTags(Construct scope)
{
this.ApplyTags(scope);
}
}
class MyStack : Stack
{
internal MyStack()
{
new ResourceTags().ApplyTags(this);
}
}
答案 1 :(得分:0)
这是我最后的结果。我绝对愿意接受任何更好的想法。 我对面向对象的方面仍然很陌生。感谢所有参与的人。
在 config.py
from aws_cdk import core
class Config(object):
'''Configuration options for the different stacks
'''
def ResourceTags(self):
core.Tags.of(self).add("createdPurpose", "value")
core.Tags.of(self).add("createdBy", "value")
core.Tags.of(self).add("project", "value")
core.Tags.of(self).add("stackName", self.stack_name)
在 stack.py
from config import Config
...Other stack code
# To add tags from config.py
Config.ResourceTags(self)