Cloud Functions Storage Triggersの仕様が、object.changeから変更になりました。
▪ **(MODIFIED)** The default trigger event behavior for
–trigger-bucket flag on the gcloud functions deploy command will soon
change. google.storage.object.finalize will replace
providers/cloud.storage/eventTypes/object.change as default trigger
event. To opt-in to the new behavior early, run gcloud config set
functions/use_new_object_trigger True.
Functions新仕様でのデプロイコマンドになります。trigger-resourceとtriiger-eventを指定するようになります。
gcloud beta functions deploy bqbilling --trigger-resource prd-billing --trigger-event google.storage.object.finalize
Cloud FunctionsとAWS Lambdaのイベントトリガーの比較は以下となります。
Cloud Functions | AWS Lambda | |
オブジェクト作成 | google.storage.object.finalize | s3:ObjectCreated:* |
オブジェクト削除 | google.storage.object.delete | s3:ObjectRemoved:* |
オブジェクトアーカイブ時 | google.storage.object.archive
※versioning有効化バケットのみ |
s3:ReducedRedundancyLostObject |
オブジェクトメタデータ更新 | google.storage.object.metadataUpdate |
AWS Lambdaの場合、Metadataを編集(追加)すると、ObjectCreatedでLambda Functionsが呼び出される。(Putだとトリガーは発動しない)
GCS オブジェクトのメタデータ更新された場合も検知することができる。
$ curl -X PATCH --data-binary @meta.json -H "Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -H "Content-Type: application/json" "https://www.googleapis.com/storage/v1/b/[gcs bucket]/o/[object]"
GCS オブジェクトのメタデータ更新時もFunctionsが動作します。
–stage-bucket も指定不要になり、管理外のバケット(?)にzipをアップロードしているようにみられる。gcf-upload-us-central1-<ランダム文字列>。cliでデプロイすると、sourceUploadUrlに表示されます。