:doc:`CodeGuruProfiler <../../codeguruprofiler>` / Client / put_permission

**************
put_permission
**************



.. py:method:: CodeGuruProfiler.Client.put_permission(**kwargs)

  

  Adds permissions to a profiling group's resource-based policy that are provided using an action group. If a profiling group doesn't have a resource-based policy, one is created for it using the permissions in the action group and the roles and users in the ``principals`` parameter.

   `` <p> The one supported action group that can be added is <code>agentPermission</code> which grants <code>ConfigureAgent</code> and <code>PostAgent</code> permissions. For more information, see <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-ug/resource-based-policies.html">Resource-based policies in CodeGuru Profiler</a> in the <i>Amazon CodeGuru Profiler User Guide</i>, <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_ConfigureAgent.html"> <code>ConfigureAgent</code> </a>, and <a href="https://docs.aws.amazon.com/codeguru/latest/profiler-api/API_PostAgentProfile.html"> <code>PostAgentProfile</code> </a>. </p> <p> The first time you call <code>PutPermission</code> on a profiling group, do not specify a <code>revisionId</code> because it doesn't have a resource-based policy. Subsequent calls must provide a <code>revisionId</code> to specify which revision of the resource-based policy to add the permissions to. </p> <p> The response contains the profiling group's JSON-formatted resource policy. </p>``

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/codeguruprofiler-2019-07-18/PutPermission>`_  


  **Request Syntax**
  ::

    response = client.put_permission(
        actionGroup='agentPermissions',
        principals=[
            'string',
        ],
        profilingGroupName='string',
        revisionId='string'
    )
    
  :type actionGroup: string
  :param actionGroup: **[REQUIRED]** 

    Specifies an action group that contains permissions to add to a profiling group resource. One action group is supported, ``agentPermissions``, which grants permission to perform actions required by the profiling agent, ``ConfigureAgent`` and ``PostAgentProfile`` permissions.

    

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

    A list ARNs for the roles and users you want to grant access to the profiling group. Wildcards are not are supported in the ARNs.

    

  
    - *(string) --* 

    

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

    The name of the profiling group to grant access to.

    

  
  :type revisionId: string
  :param revisionId: 

    A universally unique identifier (UUID) for the revision of the policy you are adding to the profiling group. Do not specify this when you add permissions to a profiling group for the first time. If a policy already exists on the profiling group, you must specify the ``revisionId``.

    

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

    
    ::

      {
          'policy': 'string',
          'revisionId': 'string'
      }
      
    **Response Structure**

    

    - *(dict) --* 

      The structure representing the ``putPermissionResponse``.

      
      

      - **policy** *(string) --* 

        The JSON-formatted resource-based policy on the profiling group that includes the added permissions.

        
      

      - **revisionId** *(string) --* 

        A universally unique identifier (UUID) for the revision of the resource-based policy that includes the added permissions. The JSON-formatted policy is in the ``policy`` element of the response.

        
  
  **Exceptions**
  
  *   :py:class:`CodeGuruProfiler.Client.exceptions.InternalServerException`

  
  *   :py:class:`CodeGuruProfiler.Client.exceptions.ConflictException`

  
  *   :py:class:`CodeGuruProfiler.Client.exceptions.ValidationException`

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

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

  