_buildIdString(region, accountId, serviceName, functionName) {
    // We need a uuid here in fact. But in order to keep the function id fixed,
    // we use a sha256 id instead.
    const sha256 = crypto.createHash('sha256');
    sha256
      .update(region || '')
      .update(accountId || '')
      .update(serviceName || '')
      .update(functionName || '');
    return sha256.digest('hex').substring(0, 32);
  }
Build the function id. It's immutable for same config.

@param region the region, for example cn-hangzhou.
@param accountId the id of the account.
@param serviceName the service name to which the function belongs.
@param functionName the name of the function.
@returns {string} the id for the function.
@private