:doc:`AppSync <../../appsync>` / Client / update_api_cache

****************
update_api_cache
****************



.. py:method:: AppSync.Client.update_api_cache(**kwargs)

  

  Updates the cache for the GraphQL API.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/appsync-2017-07-25/UpdateApiCache>`_  


  **Request Syntax**
  ::

    response = client.update_api_cache(
        apiId='string',
        ttl=123,
        apiCachingBehavior='FULL_REQUEST_CACHING'|'PER_RESOLVER_CACHING'|'OPERATION_LEVEL_CACHING',
        type='T2_SMALL'|'T2_MEDIUM'|'R4_LARGE'|'R4_XLARGE'|'R4_2XLARGE'|'R4_4XLARGE'|'R4_8XLARGE'|'SMALL'|'MEDIUM'|'LARGE'|'XLARGE'|'LARGE_2X'|'LARGE_4X'|'LARGE_8X'|'LARGE_12X',
        healthMetricsConfig='ENABLED'|'DISABLED'
    )
    
  :type apiId: string
  :param apiId: **[REQUIRED]** 

    The GraphQL API ID.

    

  
  :type ttl: integer
  :param ttl: **[REQUIRED]** 

    TTL in seconds for cache entries.

     

    Valid values are 1–3,600 seconds.

    

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

    Caching behavior.

     

    
    * **FULL_REQUEST_CACHING**: All requests from the same user are cached. Individual resolvers are automatically cached. All API calls will try to return responses from the cache.
     
    * **PER_RESOLVER_CACHING**: Individual resolvers that you specify are cached.
     
    * **OPERATION_LEVEL_CACHING**: Full requests are cached together and returned without executing resolvers.
    

    

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

    The cache instance type. Valid values are

     

    
    * ``SMALL``
     
    * ``MEDIUM``
     
    * ``LARGE``
     
    * ``XLARGE``
     
    * ``LARGE_2X``
     
    * ``LARGE_4X``
     
    * ``LARGE_8X`` (not available in all regions)
     
    * ``LARGE_12X``
    

     

    Historically, instance types were identified by an EC2-style value. As of July 2020, this is deprecated, and the generic identifiers above should be used.

     

    The following legacy instance types are available, but their use is discouraged:

     

    
    * **T2_SMALL**: A t2.small instance type.
     
    * **T2_MEDIUM**: A t2.medium instance type.
     
    * **R4_LARGE**: A r4.large instance type.
     
    * **R4_XLARGE**: A r4.xlarge instance type.
     
    * **R4_2XLARGE**: A r4.2xlarge instance type.
     
    * **R4_4XLARGE**: A r4.4xlarge instance type.
     
    * **R4_8XLARGE**: A r4.8xlarge instance type.
    

    

  
  :type healthMetricsConfig: string
  :param healthMetricsConfig: 

    Controls how cache health metrics will be emitted to CloudWatch. Cache health metrics include:

     

    
    * NetworkBandwidthOutAllowanceExceeded: The network packets dropped because the throughput exceeded the aggregated bandwidth limit. This is useful for diagnosing bottlenecks in a cache configuration.
     
    * EngineCPUUtilization: The CPU utilization (percentage) allocated to the Redis process. This is useful for diagnosing bottlenecks in a cache configuration.
    

     

    Metrics will be recorded by API ID. You can set the value to ``ENABLED`` or ``DISABLED``.

    

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

    
    ::

      {
          'apiCache': {
              'ttl': 123,
              'apiCachingBehavior': 'FULL_REQUEST_CACHING'|'PER_RESOLVER_CACHING'|'OPERATION_LEVEL_CACHING',
              'transitEncryptionEnabled': True|False,
              'atRestEncryptionEnabled': True|False,
              'type': 'T2_SMALL'|'T2_MEDIUM'|'R4_LARGE'|'R4_XLARGE'|'R4_2XLARGE'|'R4_4XLARGE'|'R4_8XLARGE'|'SMALL'|'MEDIUM'|'LARGE'|'XLARGE'|'LARGE_2X'|'LARGE_4X'|'LARGE_8X'|'LARGE_12X',
              'status': 'AVAILABLE'|'CREATING'|'DELETING'|'MODIFYING'|'FAILED',
              'healthMetricsConfig': 'ENABLED'|'DISABLED'
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 

      Represents the output of a ``UpdateApiCache`` operation.

      
      

      - **apiCache** *(dict) --* 

        The ``ApiCache`` object.

        
        

        - **ttl** *(integer) --* 

          TTL in seconds for cache entries.

           

          Valid values are 1–3,600 seconds.

          
        

        - **apiCachingBehavior** *(string) --* 

          Caching behavior.

           

          
          * **FULL_REQUEST_CACHING**: All requests from the same user are cached. Individual resolvers are automatically cached. All API calls will try to return responses from the cache.
           
          * **PER_RESOLVER_CACHING**: Individual resolvers that you specify are cached.
           
          * **OPERATION_LEVEL_CACHING**: Full requests are cached together and returned without executing resolvers.
          

          
        

        - **transitEncryptionEnabled** *(boolean) --* 

          Transit encryption flag when connecting to cache. You cannot update this setting after creation.

          
        

        - **atRestEncryptionEnabled** *(boolean) --* 

          At-rest encryption flag for cache. You cannot update this setting after creation.

          
        

        - **type** *(string) --* 

          The cache instance type. Valid values are

           

          
          * ``SMALL``
           
          * ``MEDIUM``
           
          * ``LARGE``
           
          * ``XLARGE``
           
          * ``LARGE_2X``
           
          * ``LARGE_4X``
           
          * ``LARGE_8X`` (not available in all regions)
           
          * ``LARGE_12X``
          

           

          Historically, instance types were identified by an EC2-style value. As of July 2020, this is deprecated, and the generic identifiers above should be used.

           

          The following legacy instance types are available, but their use is discouraged:

           

          
          * **T2_SMALL**: A t2.small instance type.
           
          * **T2_MEDIUM**: A t2.medium instance type.
           
          * **R4_LARGE**: A r4.large instance type.
           
          * **R4_XLARGE**: A r4.xlarge instance type.
           
          * **R4_2XLARGE**: A r4.2xlarge instance type.
           
          * **R4_4XLARGE**: A r4.4xlarge instance type.
           
          * **R4_8XLARGE**: A r4.8xlarge instance type.
          

          
        

        - **status** *(string) --* 

          The cache instance status.

           

          
          * **AVAILABLE**: The instance is available for use.
           
          * **CREATING**: The instance is currently creating.
           
          * **DELETING**: The instance is currently deleting.
           
          * **MODIFYING**: The instance is currently modifying.
           
          * **FAILED**: The instance has failed creation.
          

          
        

        - **healthMetricsConfig** *(string) --* 

          Controls how cache health metrics will be emitted to CloudWatch. Cache health metrics include:

           

          
          * NetworkBandwidthOutAllowanceExceeded: The network packets dropped because the throughput exceeded the aggregated bandwidth limit. This is useful for diagnosing bottlenecks in a cache configuration.
           
          * EngineCPUUtilization: The CPU utilization (percentage) allocated to the Redis process. This is useful for diagnosing bottlenecks in a cache configuration.
          

           

          Metrics will be recorded by API ID. You can set the value to ``ENABLED`` or ``DISABLED``.

          
    
  
  **Exceptions**
  
  *   :py:class:`AppSync.Client.exceptions.BadRequestException`

  
  *   :py:class:`AppSync.Client.exceptions.ConcurrentModificationException`

  
  *   :py:class:`AppSync.Client.exceptions.NotFoundException`

  
  *   :py:class:`AppSync.Client.exceptions.UnauthorizedException`

  
  *   :py:class:`AppSync.Client.exceptions.InternalFailureException`

  