class_docstr: Interface for Drivers capable of being used as a caching layer to accelerate the speed
  of credential loading.
class_docstr_tok: ["Interface","for","Drivers","capable","of","being","used","as","a","caching","layer","to","accelerate","the","speed","of","credential","loading","."]
docstr: Saves the given credentials.
  
  On a subsequent call of load_credentials(), the same credentials will be loaded.
  
  Args:
      descriptor (str): OutputDispatcher descriptor
      credentials (Credentials): The credentials object to save. Notably, certain drivers are
          incapable of (or disallowed from) saving credentials that are unencrypted.
  
  Return:
      bool: True if saving succeeds. False otherwise.
docstr_tok: ["Saves","the","given","credentials",".","On","a","subsequent","call","of","load_credentials","(",")",",","the","same","credentials","will","be","loaded",".","Args",":","descriptor","(","str",")",":","OutputDispatcher","descriptor","credentials","(","Credentials",")",":","The","credentials","object","to","save",".","Notably",",","certain","drivers","are","incapable","of","(","or","disallowed","from",")","saving","credentials","that","are","unencrypted",".","Return",":","bool",":","True","if","saving","succeeds",".","False","otherwise","."]
code: def save_credentials(self, descriptor, credentials):
      """Saves the given credentials.
  
      On a subsequent call of load_credentials(), the same credentials will be loaded.
  
      Args:
          descriptor (str): OutputDispatcher descriptor
          credentials (Credentials): The credentials object to save. Notably, certain drivers are
              incapable of (or disallowed from) saving credentials that are unencrypted.
  
      Return:
          bool: True if saving succeeds. False otherwise.
      """
  
imports: import json
  import os
  import shutil
  import tempfile
  from abc import abstractmethod
  from botocore.exceptions import ClientError
  from streamalert.shared.helpers.aws_api_client import AwsKms, AwsSsm
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 1 for calling the CredentialsCachingDriver obj's underlying member method code with example usage: obj.save_credentials(descriptor, credentials) without return types