:doc:`Backup <../../backup>` / Client / create_framework

****************
create_framework
****************



.. py:method:: Backup.Client.create_framework(**kwargs)

  

  Creates a framework with one or more controls. A framework is a collection of controls that you can use to evaluate your backup practices. By using pre-built customizable controls to define your policies, you can evaluate whether your backup practices comply with your policies and which resources are not yet in compliance.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/backup-2018-11-15/CreateFramework>`_  


  **Request Syntax**
  ::

    response = client.create_framework(
        FrameworkName='string',
        FrameworkDescription='string',
        FrameworkControls=[
            {
                'ControlName': 'string',
                'ControlInputParameters': [
                    {
                        'ParameterName': 'string',
                        'ParameterValue': 'string'
                    },
                ],
                'ControlScope': {
                    'ComplianceResourceIds': [
                        'string',
                    ],
                    'ComplianceResourceTypes': [
                        'string',
                    ],
                    'Tags': {
                        'string': 'string'
                    }
                }
            },
        ],
        IdempotencyToken='string',
        FrameworkTags={
            'string': 'string'
        }
    )
    
  :type FrameworkName: string
  :param FrameworkName: **[REQUIRED]** 

    The unique name of the framework. The name must be between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).

    

  
  :type FrameworkDescription: string
  :param FrameworkDescription: 

    An optional description of the framework with a maximum of 1,024 characters.

    

  
  :type FrameworkControls: list
  :param FrameworkControls: **[REQUIRED]** 

    The controls that make up the framework. Each control in the list has a name, input parameters, and scope.

    

  
    - *(dict) --* 

      Contains detailed information about all of the controls of a framework. Each framework must contain at least one control.

      

    
      - **ControlName** *(string) --* **[REQUIRED]** 

        The name of a control. This name is between 1 and 256 characters.

        

      
      - **ControlInputParameters** *(list) --* 

        The name/value pairs.

        

      
        - *(dict) --* 

          The parameters for a control. A control can have zero, one, or more than one parameter. An example of a control with two parameters is: "backup plan frequency is at least ``daily`` and the retention period is at least ``1 year``". The first parameter is ``daily``. The second parameter is ``1 year``.

          

        
          - **ParameterName** *(string) --* 

            The name of a parameter, for example, ``BackupPlanFrequency``.

            

          
          - **ParameterValue** *(string) --* 

            The value of parameter, for example, ``hourly``.

            

          
        
    
      - **ControlScope** *(dict) --* 

        The scope of a control. The control scope defines what the control will evaluate. Three examples of control scopes are: a specific backup plan, all backup plans with a specific tag, or all backup plans.

         

        For more information, see `ControlScope. <https://docs.aws.amazon.com/aws-backup/latest/devguide/API_ControlScope.html>`__

        

      
        - **ComplianceResourceIds** *(list) --* 

          The ID of the only Amazon Web Services resource that you want your control scope to contain.

          

        
          - *(string) --* 

          
      
        - **ComplianceResourceTypes** *(list) --* 

          Describes whether the control scope includes one or more types of resources, such as ``EFS`` or ``RDS``.

          

        
          - *(string) --* 

          
      
        - **Tags** *(dict) --* 

          The tag key-value pair applied to those Amazon Web Services resources that you want to trigger an evaluation for a rule. A maximum of one key-value pair can be provided. The tag value is optional, but it cannot be an empty string if you are creating or editing a framework from the console (though the value can be an empty string when included in a CloudFormation template).

           

          The structure to assign a tag is: ``[{"Key":"string","Value":"string"}]``.

          

        
          - *(string) --* 

          
            - *(string) --* 

            
      
    
      
    

  :type IdempotencyToken: string
  :param IdempotencyToken: 

    A customer-chosen string that you can use to distinguish between otherwise identical calls to ``CreateFrameworkInput``. Retrying a successful request with the same idempotency token results in a success message with no action taken.

    This field is autopopulated if not provided.

  
  :type FrameworkTags: dict
  :param FrameworkTags: 

    The tags to assign to the framework.

    

  
    - *(string) --* 

    
      - *(string) --* 

      


  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'FrameworkName': 'string',
          'FrameworkArn': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **FrameworkName** *(string) --* 

        The unique name of the framework. The name must be between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_).

        
      

      - **FrameworkArn** *(string) --* 

        An Amazon Resource Name (ARN) that uniquely identifies a resource. The format of the ARN depends on the resource type.

        
  
  **Exceptions**
  
  *   :py:class:`Backup.Client.exceptions.AlreadyExistsException`

  
  *   :py:class:`Backup.Client.exceptions.LimitExceededException`

  
  *   :py:class:`Backup.Client.exceptions.InvalidParameterValueException`

  
  *   :py:class:`Backup.Client.exceptions.MissingParameterValueException`

  
  *   :py:class:`Backup.Client.exceptions.ServiceUnavailableException`

  