Menu Close
Settings Close

Language and Page Formatting Options

11.5.3.2. CloudEvent でトリガーされた関数

受信クラウドイベントが受信されると、そのイベントは CloudEvents Go SDK によって呼び出されます。この呼び出しでは、Event タイプをパラメーターとして使用します。

サポート対象の関数署名のリストが示すように、Go Context を関数契約のオプションのパラメーターとして使用できます。

サポート対象の関数署名

Handle()
Handle() error
Handle(context.Context)
Handle(context.Context) error
Handle(cloudevents.Event)
Handle(cloudevents.Event) error
Handle(context.Context, cloudevents.Event)
Handle(context.Context, cloudevents.Event) error
Handle(cloudevents.Event) *cloudevents.Event
Handle(cloudevents.Event) (*cloudevents.Event, error)
Handle(context.Context, cloudevents.Event) *cloudevents.Event
Handle(context.Context, cloudevents.Event) (*cloudevents.Event, error)

11.5.3.2.1. CloudEvent トリガーの例

CloudEvent が受信され、これには data プロパティーに JSON 文字列が含まれます。

{
  "customerId": "0123456",
  "productId": "6543210"
}

このデータにアクセスするには、CloudEvent データのプロパティーをマッピングし、受信イベントからデータを取得する構造を定義する必要があります。以下の例では、Purchase 構造を使用します。

type Purchase struct {
  CustomerId string `json:"customerId"`
  ProductId  string `json:"productId"`
}
func Handle(ctx context.Context, event cloudevents.Event) (err error) {

  purchase := &Purchase{}
  if err = event.DataAs(purchase); err != nil {
	fmt.Fprintf(os.Stderr, "failed to parse incoming CloudEvent %s\n", err)
	return
  }
  // ...
}

または、Go encoding/json パッケージを使用して、バイトアレイ形式で直接 JSON として CloudEvent にアクセスできます。

func Handle(ctx context.Context, event cloudevents.Event) {
  bytes, err := json.Marshal(event)
  // ...
}