docs: def get_account_id(region=None, key=None, keyid=None, profile=None):
      '''
      Get a the AWS account id associated with the used credentials.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt myminion boto_iam.get_account_id
      '''
      cache_key = 'boto_iam.account_id'
      if cache_key not in __context__:
          conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
          try:
              ret = conn.get_user()
              # The get_user call returns an user ARN:
              #    arn:aws:iam::027050522557:user/salt-test
              arn = ret['get_user_response']['get_user_result']['user']['arn']
              account_id = arn.split(':')[4]
          except boto.exception.BotoServerError:
              # If call failed, then let's try to get the ARN from the metadata
              timeout = boto.config.getfloat(
                  'Boto', 'metadata_service_timeout', 1.0
              )
              attempts = boto.config.getint(
                  'Boto', 'metadata_service_num_attempts', 1
              )
              identity = boto.utils.get_instance_identity(
                  timeout=timeout, num_retries=attempts
              )
              try:
                  account_id = identity['document']['accountId']
              except KeyError:
                  log.error('Failed to get account id from instance_identity in'
                            ' boto_iam.get_account_id.')
          __context__[cache_key] = account_id
      return __context__[cache_key]