Source code for ecs_composex.kms.kms_template
# SPDX-License-Identifier: MPL-2.0
# Copyright 2020-2022 John Mille <john@compose-x.io>
from troposphere import MAX_OUTPUTS
import ecs_composex.common.troposphere_tools
from ecs_composex.common.stacks import ComposeXStack
from ecs_composex.common.troposphere_tools import add_outputs, build_template
CFN_MAX_OUTPUTS = MAX_OUTPUTS - 10
[docs]def create_kms_template(template, new_keys, xstack):
"""
Function to create all the KMS Keys based on their definition
:param ecs_composex.common.settings.ComposeXSettings settings:
"""
mono_template = False
if len(new_keys) <= CFN_MAX_OUTPUTS:
mono_template = True
for key in new_keys:
key.stack = xstack
key.define_kms_key()
if key and key.cfn_resource:
key.init_outputs()
key.generate_outputs()
if mono_template:
template.add_resource(key.cfn_resource)
key.handle_key_settings(template)
add_outputs(template, key.outputs)
elif not mono_template:
key_template = build_template(
f"Template for KMS key {key.logical_name}"
)
key_template.add_resource(key.cfn_resource)
key.handle_key_settings(key_template)
add_outputs(template, key.outputs)
key_stack = ComposeXStack(key.logical_name, stack_template=key_template)
template.add_resource(key_stack)