[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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*