functions/helloworld/hello_cloud_storage.go (55 lines of code) (raw):

// Copyright 2019 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // [START functions_helloworld_storage] // Package helloworld provides a set of Cloud Functions samples. package helloworld import ( "context" "fmt" "log" "time" "cloud.google.com/go/functions/metadata" ) // GCSEvent is the payload of a GCS event. type GCSEvent struct { Kind string `json:"kind"` ID string `json:"id"` SelfLink string `json:"selfLink"` Name string `json:"name"` Bucket string `json:"bucket"` Generation string `json:"generation"` Metageneration string `json:"metageneration"` ContentType string `json:"contentType"` TimeCreated time.Time `json:"timeCreated"` Updated time.Time `json:"updated"` TemporaryHold bool `json:"temporaryHold"` EventBasedHold bool `json:"eventBasedHold"` RetentionExpirationTime time.Time `json:"retentionExpirationTime"` StorageClass string `json:"storageClass"` TimeStorageClassUpdated time.Time `json:"timeStorageClassUpdated"` Size string `json:"size"` MD5Hash string `json:"md5Hash"` MediaLink string `json:"mediaLink"` ContentEncoding string `json:"contentEncoding"` ContentDisposition string `json:"contentDisposition"` CacheControl string `json:"cacheControl"` Metadata map[string]interface{} `json:"metadata"` CRC32C string `json:"crc32c"` ComponentCount int `json:"componentCount"` Etag string `json:"etag"` CustomerEncryption struct { EncryptionAlgorithm string `json:"encryptionAlgorithm"` KeySha256 string `json:"keySha256"` } KMSKeyName string `json:"kmsKeyName"` ResourceState string `json:"resourceState"` } // HelloGCS consumes a(ny) GCS event. func HelloGCS(ctx context.Context, e GCSEvent) error { meta, err := metadata.FromContext(ctx) if err != nil { return fmt.Errorf("metadata.FromContext: %w", err) } log.Printf("Event ID: %v\n", meta.EventID) log.Printf("Event type: %v\n", meta.EventType) log.Printf("Bucket: %v\n", e.Bucket) log.Printf("File: %v\n", e.Name) log.Printf("Metageneration: %v\n", e.Metageneration) log.Printf("Created: %v\n", e.TimeCreated) log.Printf("Updated: %v\n", e.Updated) return nil } // [END functions_helloworld_storage]