:doc:`Athena <../../athena>` / Client / update_work_group

*****************
update_work_group
*****************



.. py:method:: Athena.Client.update_work_group(**kwargs)

  

  Updates the workgroup with the specified name. The workgroup's name cannot be changed. Only ``ConfigurationUpdates`` can be specified.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/athena-2017-05-18/UpdateWorkGroup>`_  


  **Request Syntax**
  ::

    response = client.update_work_group(
        WorkGroup='string',
        Description='string',
        ConfigurationUpdates={
            'EnforceWorkGroupConfiguration': True|False,
            'ResultConfigurationUpdates': {
                'OutputLocation': 'string',
                'RemoveOutputLocation': True|False,
                'EncryptionConfiguration': {
                    'EncryptionOption': 'SSE_S3'|'SSE_KMS'|'CSE_KMS',
                    'KmsKey': 'string'
                },
                'RemoveEncryptionConfiguration': True|False,
                'ExpectedBucketOwner': 'string',
                'RemoveExpectedBucketOwner': True|False,
                'AclConfiguration': {
                    'S3AclOption': 'BUCKET_OWNER_FULL_CONTROL'
                },
                'RemoveAclConfiguration': True|False
            },
            'ManagedQueryResultsConfigurationUpdates': {
                'Enabled': True|False,
                'EncryptionConfiguration': {
                    'KmsKey': 'string'
                },
                'RemoveEncryptionConfiguration': True|False
            },
            'PublishCloudWatchMetricsEnabled': True|False,
            'BytesScannedCutoffPerQuery': 123,
            'RemoveBytesScannedCutoffPerQuery': True|False,
            'RequesterPaysEnabled': True|False,
            'EngineVersion': {
                'SelectedEngineVersion': 'string',
                'EffectiveEngineVersion': 'string'
            },
            'RemoveCustomerContentEncryptionConfiguration': True|False,
            'AdditionalConfiguration': 'string',
            'ExecutionRole': 'string',
            'CustomerContentEncryptionConfiguration': {
                'KmsKey': 'string'
            },
            'EnableMinimumEncryptionConfiguration': True|False,
            'QueryResultsS3AccessGrantsConfiguration': {
                'EnableS3AccessGrants': True|False,
                'CreateUserLevelPrefix': True|False,
                'AuthenticationType': 'DIRECTORY_IDENTITY'
            },
            'MonitoringConfiguration': {
                'CloudWatchLoggingConfiguration': {
                    'Enabled': True|False,
                    'LogGroup': 'string',
                    'LogStreamNamePrefix': 'string',
                    'LogTypes': {
                        'string': [
                            'string',
                        ]
                    }
                },
                'ManagedLoggingConfiguration': {
                    'Enabled': True|False,
                    'KmsKey': 'string'
                },
                'S3LoggingConfiguration': {
                    'Enabled': True|False,
                    'KmsKey': 'string',
                    'LogLocation': 'string'
                }
            },
            'EngineConfiguration': {
                'CoordinatorDpuSize': 123,
                'MaxConcurrentDpus': 123,
                'DefaultExecutorDpuSize': 123,
                'AdditionalConfigs': {
                    'string': 'string'
                },
                'SparkProperties': {
                    'string': 'string'
                },
                'Classifications': [
                    {
                        'Name': 'string',
                        'Properties': {
                            'string': 'string'
                        }
                    },
                ]
            }
        },
        State='ENABLED'|'DISABLED'
    )
    
  :type WorkGroup: string
  :param WorkGroup: **[REQUIRED]** 

    The specified workgroup that will be updated.

    

  
  :type Description: string
  :param Description: 

    The workgroup description.

    

  
  :type ConfigurationUpdates: dict
  :param ConfigurationUpdates: 

    Contains configuration updates for an Athena SQL workgroup.

    

  
    - **EnforceWorkGroupConfiguration** *(boolean) --* 

      If set to "true", the settings for the workgroup override client-side settings. If set to "false" client-side settings are used. For more information, see `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

      

    
    - **ResultConfigurationUpdates** *(dict) --* 

      The result configuration information about the queries in this workgroup that will be updated. Includes the updated results location and an updated option for encrypting query results.

      

    
      - **OutputLocation** *(string) --* 

        The location in Amazon S3 where your query and calculation results are stored, such as ``s3://path/to/query/bucket/``. If workgroup settings override client-side settings, then the query uses the location for the query results and the encryption configuration that are specified for the workgroup. The "workgroup settings override" is specified in ``EnforceWorkGroupConfiguration`` (true/false) in the ``WorkGroupConfiguration``. See  WorkGroupConfiguration$EnforceWorkGroupConfiguration.

        

      
      - **RemoveOutputLocation** *(boolean) --* 

        If set to "true", indicates that the previously-specified query results location (also known as a client-side setting) for queries in this workgroup should be ignored and set to null. If set to "false" or not set, and a value is present in the ``OutputLocation`` in ``ResultConfigurationUpdates`` (the client-side setting), the ``OutputLocation`` in the workgroup's ``ResultConfiguration`` will be updated with the new value. For more information, see `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

        

      
      - **EncryptionConfiguration** *(dict) --* 

        The encryption configuration for query and calculation results.

        

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

          Indicates whether Amazon S3 server-side encryption with Amazon S3-managed keys ( ``SSE_S3``), server-side encryption with KMS-managed keys ( ``SSE_KMS``), or client-side encryption with KMS-managed keys ( ``CSE_KMS``) is used.

           

          If a query runs in a workgroup and the workgroup overrides client-side settings, then the workgroup's setting for encryption is used. It specifies whether query results must be encrypted, for all queries that run in this workgroup.

          

        
        - **KmsKey** *(string) --* 

          For ``SSE_KMS`` and ``CSE_KMS``, this is the KMS key ARN or ID.

          

        
      
      - **RemoveEncryptionConfiguration** *(boolean) --* 

        If set to "true", indicates that the previously-specified encryption configuration (also known as the client-side setting) for queries in this workgroup should be ignored and set to null. If set to "false" or not set, and a value is present in the ``EncryptionConfiguration`` in ``ResultConfigurationUpdates`` (the client-side setting), the ``EncryptionConfiguration`` in the workgroup's ``ResultConfiguration`` will be updated with the new value. For more information, see `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

        

      
      - **ExpectedBucketOwner** *(string) --* 

        The Amazon Web Services account ID that you expect to be the owner of the Amazon S3 bucket specified by  ResultConfiguration$OutputLocation. If set, Athena uses the value for ``ExpectedBucketOwner`` when it makes Amazon S3 calls to your specified output location. If the ``ExpectedBucketOwner`` Amazon Web Services account ID does not match the actual owner of the Amazon S3 bucket, the call fails with a permissions error.

         

        If workgroup settings override client-side settings, then the query uses the ``ExpectedBucketOwner`` setting that is specified for the workgroup, and also uses the location for storing query results specified in the workgroup. See  WorkGroupConfiguration$EnforceWorkGroupConfiguration and `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

        

      
      - **RemoveExpectedBucketOwner** *(boolean) --* 

        If set to "true", removes the Amazon Web Services account ID previously specified for  ResultConfiguration$ExpectedBucketOwner. If set to "false" or not set, and a value is present in the ``ExpectedBucketOwner`` in ``ResultConfigurationUpdates`` (the client-side setting), the ``ExpectedBucketOwner`` in the workgroup's ``ResultConfiguration`` is updated with the new value. For more information, see `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

        

      
      - **AclConfiguration** *(dict) --* 

        The ACL configuration for the query results.

        

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

          The Amazon S3 canned ACL that Athena should specify when storing query results, including data files inserted by Athena as the result of statements like CTAS or INSERT INTO. Currently the only supported canned ACL is ``BUCKET_OWNER_FULL_CONTROL``. If a query runs in a workgroup and the workgroup overrides client-side settings, then the Amazon S3 canned ACL specified in the workgroup's settings is used for all queries that run in the workgroup. For more information about Amazon S3 canned ACLs, see `Canned ACL <https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl>`__ in the *Amazon S3 User Guide*.

          

        
      
      - **RemoveAclConfiguration** *(boolean) --* 

        If set to ``true``, indicates that the previously-specified ACL configuration for queries in this workgroup should be ignored and set to null. If set to ``false`` or not set, and a value is present in the ``AclConfiguration`` of ``ResultConfigurationUpdates``, the ``AclConfiguration`` in the workgroup's ``ResultConfiguration`` is updated with the new value. For more information, see `Workgroup Settings Override Client-Side Settings <https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html>`__.

        

      
    
    - **ManagedQueryResultsConfigurationUpdates** *(dict) --* 

      Updates configuration information for managed query results in the workgroup.

      

    
      - **Enabled** *(boolean) --* 

        If set to true, specifies that Athena manages query results in Athena owned storage.

        

      
      - **EncryptionConfiguration** *(dict) --* 

        If you encrypt query and calculation results in Athena owned storage, this field indicates the encryption option (for example, SSE_KMS or CSE_KMS) and key information.

        

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

          The ARN of an KMS key for encrypting managed query results.

          

        
      
      - **RemoveEncryptionConfiguration** *(boolean) --* 

        If set to true, it removes workgroup from Athena owned storage. The existing query results are cleaned up after 24hrs. You must provide query results in location specified under ``ResultConfiguration$OutputLocation``.

        

      
    
    - **PublishCloudWatchMetricsEnabled** *(boolean) --* 

      Indicates whether this workgroup enables publishing metrics to Amazon CloudWatch.

      

    
    - **BytesScannedCutoffPerQuery** *(integer) --* 

      The upper limit (cutoff) for the amount of bytes a single query in a workgroup is allowed to scan.

      

    
    - **RemoveBytesScannedCutoffPerQuery** *(boolean) --* 

      Indicates that the data usage control limit per query is removed.  WorkGroupConfiguration$BytesScannedCutoffPerQuery

      

    
    - **RequesterPaysEnabled** *(boolean) --* 

      If set to ``true``, allows members assigned to a workgroup to specify Amazon S3 Requester Pays buckets in queries. If set to ``false``, workgroup members cannot query data from Requester Pays buckets, and queries that retrieve data from Requester Pays buckets cause an error. The default is ``false``. For more information about Requester Pays buckets, see `Requester Pays Buckets <https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html>`__ in the *Amazon Simple Storage Service Developer Guide*.

      

    
    - **EngineVersion** *(dict) --* 

      The engine version requested when a workgroup is updated. After the update, all queries on the workgroup run on the requested engine version. If no value was previously set, the default is Auto. Queries on the ``AmazonAthenaPreviewFunctionality`` workgroup run on the preview engine regardless of this setting.

      

    
      - **SelectedEngineVersion** *(string) --* 

        The engine version requested by the user. Possible values are determined by the output of ``ListEngineVersions``, including AUTO. The default is AUTO.

        

      
      - **EffectiveEngineVersion** *(string) --* 

        Read only. The engine version on which the query runs. If the user requests a valid engine version other than Auto, the effective engine version is the same as the engine version that the user requested. If the user requests Auto, the effective engine version is chosen by Athena. When a request to update the engine version is made by a ``CreateWorkGroup`` or ``UpdateWorkGroup`` operation, the ``EffectiveEngineVersion`` field is ignored.

        

      
    
    - **RemoveCustomerContentEncryptionConfiguration** *(boolean) --* 

      Removes content encryption configuration from an Apache Spark-enabled Athena workgroup.

      

    
    - **AdditionalConfiguration** *(string) --* 

      Contains a user defined string in JSON format for a Spark-enabled workgroup.

      

    
    - **ExecutionRole** *(string) --* 

      The ARN of the execution role used to access user resources for Spark sessions and Identity Center enabled workgroups. This property applies only to Spark enabled workgroups and Identity Center enabled workgroups.

      

    
    - **CustomerContentEncryptionConfiguration** *(dict) --* 

      Specifies the customer managed KMS key that is used to encrypt the user's data stores in Athena. When an Amazon Web Services managed key is used, this value is null. This setting does not apply to Athena SQL workgroups.

      

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

        The customer managed KMS key that is used to encrypt the user's data stores in Athena.

        

      
    
    - **EnableMinimumEncryptionConfiguration** *(boolean) --* 

      Enforces a minimal level of encryption for the workgroup for query and calculation results that are written to Amazon S3. When enabled, workgroup users can set encryption only to the minimum level set by the administrator or higher when they submit queries. This setting does not apply to Spark-enabled workgroups.

       

      The ``EnforceWorkGroupConfiguration`` setting takes precedence over the ``EnableMinimumEncryptionConfiguration`` flag. This means that if ``EnforceWorkGroupConfiguration`` is true, the ``EnableMinimumEncryptionConfiguration`` flag is ignored, and the workgroup configuration for encryption is used.

      

    
    - **QueryResultsS3AccessGrantsConfiguration** *(dict) --* 

      Specifies whether Amazon S3 access grants are enabled for query results.

      

    
      - **EnableS3AccessGrants** *(boolean) --* **[REQUIRED]** 

        Specifies whether Amazon S3 access grants are enabled for query results.

        

      
      - **CreateUserLevelPrefix** *(boolean) --* 

        When enabled, appends the user ID as an Amazon S3 path prefix to the query result output location.

        

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

        The authentication type used for Amazon S3 access grants. Currently, only ``DIRECTORY_IDENTITY`` is supported.

        

      
    
    - **MonitoringConfiguration** *(dict) --* 

      Contains the configuration settings for managed log persistence, delivering logs to Amazon S3 buckets, Amazon CloudWatch log groups etc.

      

    
      - **CloudWatchLoggingConfiguration** *(dict) --* 

        Configuration settings for delivering logs to Amazon CloudWatch log groups.

        

      
        - **Enabled** *(boolean) --* **[REQUIRED]** 

          Enables CloudWatch logging.

          

        
        - **LogGroup** *(string) --* 

          The name of the log group in Amazon CloudWatch Logs where you want to publish your logs.

          

        
        - **LogStreamNamePrefix** *(string) --* 

          Prefix for the CloudWatch log stream name.

          

        
        - **LogTypes** *(dict) --* 

          The types of logs that you want to publish to CloudWatch.

          

        
          - *(string) --* 

          
            - *(list) --* 

            
              - *(string) --* 

              
          
      
    
      
      - **ManagedLoggingConfiguration** *(dict) --* 

        Configuration settings for managed log persistence.

        

      
        - **Enabled** *(boolean) --* **[REQUIRED]** 

          Enables mamanged log persistence.

          

        
        - **KmsKey** *(string) --* 

          The KMS key ARN to encrypt the logs stored in managed log persistence.

          

        
      
      - **S3LoggingConfiguration** *(dict) --* 

        Configuration settings for delivering logs to Amazon S3 buckets.

        

      
        - **Enabled** *(boolean) --* **[REQUIRED]** 

          Enables S3 log delivery.

          

        
        - **KmsKey** *(string) --* 

          The KMS key ARN to encrypt the logs published to the given Amazon S3 destination.

          

        
        - **LogLocation** *(string) --* 

          The Amazon S3 destination URI for log publishing.

          

        
      
    
    - **EngineConfiguration** *(dict) --* 

      The engine configuration for the workgroup, which includes the minimum/maximum number of Data Processing Units (DPU) that queries should use when running in provisioned capacity. If not specified, Athena uses default values (Default value for min is 4 and for max is Minimum of 124 and allocated DPUs).

       

      To specify DPU values for PC queries the WG containing EngineConfiguration should have the following values: The name of the Classifications should be ``athena-query-engine-properties``, with the only allowed properties as ``max-dpu-count`` and ``min-dpu-count``.

      

    
      - **CoordinatorDpuSize** *(integer) --* 

        The number of DPUs to use for the coordinator. A coordinator is a special executor that orchestrates processing work and manages other executors in a notebook session. The default is 1.

        

      
      - **MaxConcurrentDpus** *(integer) --* 

        The maximum number of DPUs that can run concurrently.

        

      
      - **DefaultExecutorDpuSize** *(integer) --* 

        The default number of DPUs to use for executors. An executor is the smallest unit of compute that a notebook session can request from Athena. The default is 1.

        

      
      - **AdditionalConfigs** *(dict) --* 

        Contains additional notebook engine ``MAP<string, string>`` parameter mappings in the form of key-value pairs. To specify an Athena notebook that the Jupyter server will download and serve, specify a value for the  StartSessionRequest$NotebookVersion field, and then add a key named ``NotebookId`` to ``AdditionalConfigs`` that has the value of the Athena notebook ID.

        

      
        - *(string) --* 

        
          - *(string) --* 

          
    
  
      - **SparkProperties** *(dict) --* 

        Specifies custom jar files and Spark properties for use cases like cluster encryption, table formats, and general Spark tuning.

        

      
        - *(string) --* 

        
          - *(string) --* 

          
    
  
      - **Classifications** *(list) --* 

        The configuration classifications that can be specified for the engine.

        

      
        - *(dict) --* 

          A classification refers to a set of specific configurations.

          

        
          - **Name** *(string) --* 

            The name of the configuration classification.

            

          
          - **Properties** *(dict) --* 

            A set of properties specified within a configuration classification.

            

          
            - *(string) --* 

            
              - *(string) --* 

              
        
      
        
    
    
  
  :type State: string
  :param State: 

    The workgroup state that will be updated for the given workgroup.

    

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

    
    ::

      {}
      
    **Response Structure**

    

    - *(dict) --* 
  
  **Exceptions**
  
  *   :py:class:`Athena.Client.exceptions.InternalServerException`

  
  *   :py:class:`Athena.Client.exceptions.InvalidRequestException`

  