:doc:`Rekognition <../../rekognition>` / Client / put_project_policy

******************
put_project_policy
******************



.. py:method:: Rekognition.Client.put_project_policy(**kwargs)

  

  .. note::

    

    This operation applies only to Amazon Rekognition Custom Labels.

    

   

  Attaches a project policy to a Amazon Rekognition Custom Labels project in a trusting AWS account. A project policy specifies that a trusted AWS account can copy a model version from a trusting AWS account to a project in the trusted AWS account. To copy a model version you use the  CopyProjectVersion operation. Only applies to Custom Labels projects.

   

  For more information about the format of a project policy document, see Attaching a project policy (SDK) in the *Amazon Rekognition Custom Labels Developer Guide*.

   

  The response from ``PutProjectPolicy`` is a revision ID for the project policy. You can attach multiple project policies to a project. You can also update an existing project policy by specifying the policy revision ID of the existing policy.

   

  To remove a project policy from a project, call  DeleteProjectPolicy. To get a list of project policies attached to a project, call  ListProjectPolicies.

   

  You copy a model version by calling  CopyProjectVersion.

   

  This operation requires permissions to perform the ``rekognition:PutProjectPolicy`` action.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/rekognition-2016-06-27/PutProjectPolicy>`_  


  **Request Syntax**
  ::

    response = client.put_project_policy(
        ProjectArn='string',
        PolicyName='string',
        PolicyRevisionId='string',
        PolicyDocument='string'
    )
    
  :type ProjectArn: string
  :param ProjectArn: **[REQUIRED]** 

    The Amazon Resource Name (ARN) of the project that the project policy is attached to.

    

  
  :type PolicyName: string
  :param PolicyName: **[REQUIRED]** 

    A name for the policy.

    

  
  :type PolicyRevisionId: string
  :param PolicyRevisionId: 

    The revision ID for the Project Policy. Each time you modify a policy, Amazon Rekognition Custom Labels generates and assigns a new ``PolicyRevisionId`` and then deletes the previous version of the policy.

    

  
  :type PolicyDocument: string
  :param PolicyDocument: **[REQUIRED]** 

    A resource policy to add to the model. The policy is a JSON structure that contains one or more statements that define the policy. The policy must follow the IAM syntax. For more information about the contents of a JSON policy document, see `IAM JSON policy reference <https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html>`__.

    

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

    
    ::

      {
          'PolicyRevisionId': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **PolicyRevisionId** *(string) --* 

        The ID of the project policy.

        
  
  **Exceptions**
  
  *   :py:class:`Rekognition.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`Rekognition.Client.exceptions.InternalServerError`

  
  *   :py:class:`Rekognition.Client.exceptions.InvalidParameterException`

  
  *   :py:class:`Rekognition.Client.exceptions.InvalidPolicyRevisionIdException`

  
  *   :py:class:`Rekognition.Client.exceptions.MalformedPolicyDocumentException`

  
  *   :py:class:`Rekognition.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`Rekognition.Client.exceptions.ResourceAlreadyExistsException`

  
  *   :py:class:`Rekognition.Client.exceptions.ThrottlingException`

  
  *   :py:class:`Rekognition.Client.exceptions.ServiceQuotaExceededException`

  
  *   :py:class:`Rekognition.Client.exceptions.ProvisionedThroughputExceededException`

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

  