[A-00161]gcloudコマンドからCloud Functions×Cloud Storage×Eventarcを作成してみる
gcloudコマンドを使用して、Cloud Storageのバケットオブジェクトが作成されたイベントをトリガーに実行されるCloud Functionsを作成します。
・Cloud Storageを作成する
gsutil mb -l asia-northeast1 gs://bkt-jp-20230922
権限を変更します。
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:$PROJECT_ID" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
・ソースをダウンロード
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
cd python-docs-samples/functions/v2/storage/
・アカウントにロールを付与する
Cloud Functions作成時にサービスアカウントにEventarcの権限が無くてエラーが発生する可能性があるため、下記の通り、[Eventarc管理者]権限を付与します。

・Cloud Functionsを作成する
gcloud functions deploy python-finalize-function \
--gen2 \
--runtime=python311 \
--region=asia-northeast1 \
--source=. \
--entry-point=hello_gcs \
--trigger-event-filters="type=google.cloud.storage.object.v1.finalized" \
--trigger-event-filters="bucket=bkt-jp-20230922"
・Cloud Functionsを実行してみる
Cloud Storageにオブジェクトを作成してCloud Functionsを起動します。
echo "Hello World" > test-finalize.txt
gsutil cp test-finalize.txt gs://bkt-jp-20230922/test-finalize.txt
クラウドコンソールから作成したファンクションを確認します。

呼び出し回数は下記の通り1回呼び出されています。

・Appendix
参考ドキュメントはこちら
https://cloud.google.com/functions/docs/create-deploy-gcloud?hl=ja
https://cloud.google.com/functions/docs/tutorials/storage?hl=ja
コメントを残す