Gems/AWSMetrics/cdv1/aws_metrics/aws_metrics_construct.py (33 lines of code) (raw):

""" Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution. SPDX-License-Identifier: Apache-2.0 OR MIT """ from aws_cdk import core from .aws_metrics_stack import AWSMetricsStack from .auth import AuthPolicy from .aws_utils import resource_name_sanitizer class AWSMetrics(core.Construct): """ Orchestrates setting up the AWS Metrics Stack(s) """ def __init__(self, scope: core.Construct, id_: str, project_name: str, feature_name: str, env: core.Environment) -> None: super().__init__(scope, id_) # Set-up any stack name(s) to be unique in account stack_name = resource_name_sanitizer.sanitize_resource_name( f'{project_name}-{feature_name}-{env.region}', 'cloudformation_stack') application_name = f'{project_name}-{feature_name}' # Check context variables to get enabled optional features optional_features = { 'batch_processing': self.node.try_get_context("batch_processing") == 'true', 'server_access_logs_bucket': self.node.try_get_context("server_access_logs_bucket") } # Deploy AWS Metrics Stack self._feature_stack = AWSMetricsStack( scope, stack_name, application_name=application_name, description=f'Contains resources for the AWS Metrics Gem Feature stack as part of the {project_name} project', optional_features=optional_features, tags={'LyAWSProject': project_name, 'LyAWSFeature': feature_name}, env=env) # Create the User and Admin polices for the AWSMetrics Gem policy_generator = AuthPolicy( self._feature_stack, application_name=application_name ) policy_generator.generate_policy(role_name='User') policy_generator.generate_policy(role_name='Admin')