AWS CDK Python - 在其他项目堆栈文件中重用来自 config.py 文件的代码块

时间:2021-07-02 19:31:03

标签: python aws-cdk

我正在尝试使用 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

2 个答案:

答案 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)
相关问题