11.6.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.6.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) // ... }