text: # ######################################################################################################################
  #  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.                                                  #
  #                                                                                                                      #
  #  Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance      #
  #  with the License. You may obtain a copy of the License at                                                           #
  #                                                                                                                      #
  #   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
  #                                                                                                                      #
  #  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed    #
  #  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for   #
  #  the specific language governing permissions and limitations under the License.                                      #
  # ######################################################################################################################
  
  from pathlib import Path
  
  import aws_cdk.aws_iam as iam
  from aws_cdk import Duration, Aws
  from aws_cdk.aws_lambda import Tracing, Runtime, RuntimeFamily
  from constructs import Construct
  
  from aws_solutions.cdk.aws_lambda.environment import Environment
  from aws_solutions.cdk.aws_lambda.python.function import SolutionsPythonFunction
  from aws_solutions.cdk.cfn_nag import add_cfn_nag_suppressions, CfnNagSuppression
  
  
  class CreateConfig(SolutionsPythonFunction):
      def __init__(self, scope: Construct, construct_id: str, **kwargs):
          entrypoint = (
              Path(__file__).absolute().parents[4]
              / "aws_lambda"
              / "create_config"
              / "handler.py"
          )
          function = "lambda_handler"
          kwargs["libraries"] = [
              Path(__file__).absolute().parents[4] / "aws_lambda" / "shared"
          ]
          kwargs["tracing"] = Tracing.ACTIVE
          kwargs["timeout"] = Duration.seconds(90)
          kwargs["runtime"] = Runtime("python3.9", RuntimeFamily.PYTHON)
  
          super().__init__(scope, construct_id, entrypoint, function, **kwargs)
  
          self.environment = Environment(self)
  
          add_cfn_nag_suppressions(
              self.role.node.try_find_child("DefaultPolicy").node.find_child("Resource"),
              [
                  CfnNagSuppression(
                      "W12", "IAM policy for AWS X-Ray requires an allow on *"
                  )
              ],
          )
  
          self._set_permissions()
  
      def _set_permissions(self):
          self.add_to_role_policy(
              statement=iam.PolicyStatement(
                  actions=[
                      "personalize:Describe*",
                      "personalize:List*",
                  ],
                  effect=iam.Effect.ALLOW,
                  resources=[
                      f"arn:{Aws.PARTITION}:personalize:{Aws.REGION}:{Aws.ACCOUNT_ID}:*",
                  ],
              )
          )
  