Firebase 원격 구성 변경 트리거

이 샘플은 Firebase 원격 구성 값이 변경될 때 Cloud 함수를 트리거하는 방법을 보여줍니다.

코드 샘플

Go

Cloud Run Functions에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.


// Package remote_config provides cloud event sample for firebase remote config updates.
package remoteconfig

import (
	"context"
	"fmt"
	"log"

	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
	"github.com/cloudevents/sdk-go/v2/event"
	"github.com/googleapis/google-cloudevents-go/firebase/remoteconfigdata"
	"google.golang.org/protobuf/encoding/protojson"
)

func init() {
	functions.CloudEvent("HelloRemoteConfig", HelloRemoteConfig)
}

// HelloRemoteConfig handles Firebase Remote Config events.
func HelloRemoteConfig(ctx context.Context, e event.Event) error {
	unmarshalOptions := protojson.UnmarshalOptions{DiscardUnknown: true}

	var data remoteconfigdata.RemoteConfigEventData
	if err := unmarshalOptions.Unmarshal(e.Data(), &data); err != nil {
		return fmt.Errorf("UnmarshalTo: %w", err)
	}

	log.Printf("Update type: %+v", data.GetUpdateType())
	log.Printf("Origin: %+v", data.GetUpdateOrigin())
	log.Printf("Version: %+v", data.GetVersionNumber())
	return nil
}

Java

Cloud Run Functions에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

import com.google.cloud.functions.CloudEventsFunction;
import com.google.events.firebase.remoteconfig.v1.RemoteConfigEventData;
import com.google.protobuf.util.JsonFormat;
import io.cloudevents.CloudEvent;
import java.nio.charset.StandardCharsets;
import java.util.logging.Logger;

public class FirebaseRemoteConfig implements CloudEventsFunction {
  private static final Logger logger = Logger.getLogger(FirebaseRemoteConfig.class.getName());

  @Override
  public void accept(CloudEvent event) throws Exception {
    if (event.getData() == null) {
      logger.info("No data found in event");
      return;
    }

    RemoteConfigEventData.Builder builder = RemoteConfigEventData.newBuilder();
    JsonFormat.Parser jsonParser = JsonFormat.parser().ignoringUnknownFields();
    jsonParser.merge(new String(event.getData().toBytes(), StandardCharsets.UTF_8), builder);
    RemoteConfigEventData data = builder.build();

    logger.info("Update type: " + data.getUpdateType().name());
    logger.info("Origin: " + data.getUpdateOrigin().name());
    logger.info("Version: " + data.getVersionNumber());
  }
}

Node.js

Cloud Run Functions에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

const functions = require('@google-cloud/functions-framework');

/**
 * Cloud Event Function triggered by a change to a Firebase Remote Config value.
 *
 * @param {object} event The Cloud Functions event.
 */
functions.cloudEvent('helloRemoteConfig', event => {
  console.log(`Update type: ${event.data.updateType}`);
  console.log(`Origin: ${event.data.updateOrigin}`);
  console.log(`Version: ${event.data.versionNumber}`);
});

Python

Cloud Run Functions에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

from cloudevents.http import CloudEvent
import functions_framework


@functions_framework.cloud_event
def hello_remote_config(event: CloudEvent) -> None:
    """Triggered by a change to a Firebase Remote Config value.
    Args:
        event: Cloud Event triggered by change to Firebase Remote Config
    """
    print(f'Update type: {event.data["updateType"]}')
    print(f'Origin: {event.data["updateOrigin"]}')
    print(f'Version: {event.data["versionNumber"]}')

다음 단계

다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.