1. Giriş

Cloud Run, tümüyle yönetilen bir ortamda durum bilgisiz container'lar çalıştırmanıza olanak tanır. Açık kaynaklı Knative'den derlenen bu platform sayesinde, container'larınızı Cloud Run ile tümüyle yönetilecek şekilde veya Anthos için Cloud Run ile Google Kubernetes Engine kümenizde çalıştırmayı tercih edebilirsiniz.

Eventarc, çeşitli hizmetleri (Cloud Run, Cloud Functions, Workflows) farklı kaynaklardaki etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler oluşturmanıza olanak tanır. Ayrıca, etkinlik alımı, teslimatı, güvenliği, yetkilendirme ve hata işleme gibi işlemleri sizin için gerçekleştirerek geliştiricilerin çevikliğini ve uygulamaların esnekliğini artırır.
Bu codelab'de Eventarc hakkında bilgi edineceksiniz. Daha net açıklamak gerekirse Eventarc ile Pub/Sub, Cloud Storage ve Cloud Denetleme Günlükleri'nden gelen etkinlikleri dinleyip bir Cloud Run hizmetine ileteceksiniz.
Neler öğreneceksiniz?
- Eventarc'ın vizyonu
- Eventarc'taki etkinlikleri keşfetme
- Cloud Run havuzu oluşturma
- Pub/Sub için tetikleyici oluşturma
- Cloud Storage için tetikleyici oluşturma
- Cloud Denetleme Günlükleri için tetikleyici oluşturma
- Eventarc kullanıcı arayüzünü keşfetme
2. Eventarc'ın vizyonu
Eventarc, çeşitli Google, Google Cloud ve üçüncü taraf etkinlik kaynaklarından gelen etkinlikleri Google Cloud etkinlik hedeflerine iletmeyi amaçlar.

Google Cloud kaynakları | Google Cloud'a ait ürünler olan etkinlik kaynakları |
Google kaynakları | Gmail, Hangouts ve Android Yönetimi gibi Google'a ait ürünler olan etkinlik kaynakları |
Özel kaynaklar | Google'a ait olmayan ve son kullanıcılar tarafından oluşturulan etkinlik kaynakları |
Üçüncü taraf kaynakları | Ne Google'a ait olan ne de müşteri tarafından üretilen etkinlik kaynakları. Buna, üçüncü taraf sağlayıcılar ve iş ortakları tarafından sahip olunan ve bakımı yapılan Check Point CloudGuard, Datadog, ForgeRock, Lacework gibi popüler etkinlik kaynakları dahildir. |
Etkinlikler, hizmetler arası birlikte çalışabilirlik için CloudEvents v1.0 biçiminde normalleştirilir. CloudEvents, etkinlik verilerini ortak biçimlerde açıklayan, satıcıdan bağımsız açık bir spesifikasyondur. Hizmetler, platformlar ve sistemler arasında birlikte çalışabilirliği sağlar.
3. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.



- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizisidir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu değer "dondurulur". - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere codelab'in sonunda bulunan "temizleme" talimatlarını uygulayın. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
Başlamadan önce
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Cloud Run hizmeti dağıtma
Etkinlik almak için bir Cloud Run hizmeti dağıtın. CloudEvents'in içeriklerini günlük kaydı yapan Cloud Run'ın Hello container'ını dağıtacaksınız.
Öncelikle Cloud Run için gerekli hizmetleri etkinleştirin:
gcloud services enable run.googleapis.com
Hello container'ını Cloud Run'a dağıtın:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
İşlem başarılı olursa komut satırında hizmet URL'si gösterilir. Hizmetin dağıtıldığını doğrulamak için hizmet URL'sini herhangi bir tarayıcı penceresinde açabilirsiniz.
5. Etkinlik Keşfi
Eventarc'ta tetikleyici oluşturmadan önce etkinlik kaynaklarının ne olduğunu, hangi etkinlik türlerini yayınlayabileceklerini ve bunları kullanmak için tetikleyicilerin nasıl yapılandırılacağını öğrenebilirsiniz.
Farklı etkinlik türlerinin listesini görmek için:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
Her etkinlik türü hakkında daha fazla bilgi edinmek için:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
Belirli bir etkinlik türü yayan hizmetlerin listesini görmek için:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
Her hizmetin yayınlayabileceği yöntem adlarının (alt etkinlikler) listesini görmek için:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Pub/Sub tetikleyicisi oluşturma
Etkinlikleri almanın bir yolu Cloud Pub/Sub'ı kullanmaktır. Herhangi bir uygulama, Pub/Sub'a mesaj yayınlayabilir ve bu mesajlar Eventarc aracılığıyla Cloud Run'a teslim edilebilir.
Kurulum
Tetikleyici oluşturmadan önce Eventarc için gerekli hizmetleri etkinleştirin:
gcloud services enable eventarc.googleapis.com
Tetikleyiciler tarafından kullanılacak bir hizmet hesabınız da olmalıdır. Hizmet hesabı oluşturun:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Oluştur
Pub/Sub konusuna yayınlanan etkinlikleri dağıtılan Cloud Run hizmetimize göre filtrelemek için bir tetikleyici oluşturun:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Pub/Sub tetikleyicisi, arka planda bir konu oluşturur. Bu değeri bulup bir değişkene atayalım:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Konuda mesaj yayınlamak için gcloud simgesini kullanın:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Cloud Run hizmeti, gelen iletinin gövdesini günlüğe kaydeder. Bunu Cloud Run örneğinizin Günlükler bölümünde görüntüleyebilirsiniz:

Mevcut bir Pub/Sub konusuyla oluşturma
Varsayılan olarak, bir Pub/Sub tetikleyici oluşturduğunuzda Eventarc, uygulamanız ile Cloud Run hizmeti arasında aktarım konusu olarak kullanabileceğiniz bir konu oluşturur. Bu, Pub/Sub destekli bir tetikleyiciyi kolayca ve hızlı bir şekilde oluşturmak için kullanışlıdır ancak bazen mevcut bir konuyu kullanmak isteyebilirsiniz. Eventarc, --transport-topic gcloud işaretiyle aynı projede mevcut bir Pub/Sub konusu belirtmenize olanak tanır.
Bunun nasıl çalıştığını görmek için taşıma konusu olarak kullanılacak bir Pub/Sub konusu oluşturun:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Tetikleyici oluşturma:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Konuya mesaj göndererek tetikleyiciyi test edebilirsiniz:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Cloud Storage tetikleyicisi oluşturma
Bu adımda, Cloud Storage'daki etkinlikleri dinlemek için bir tetikleyici oluşturacaksınız.
Kurulum
Öncelikle, etkinliklerin alınacağı bir paket oluşturun:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Hizmet hesabının Cloud Storage tetikleyicisinde kullanılabilmesi için eventarc.eventReceiver rolünü verin:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Ayrıca, Cloud Storage tetikleyicileri için Cloud Storage hizmet hesabına pubsub.publisher rolünü de eklemeniz gerekir:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Oluştur
Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud eventarc triggers list
Cloud Storage paketine dosya yükleme:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz:

8. Cloud Audit Logs tetikleyicisi oluşturma
Cloud Storage tetikleyicisi, Cloud Storage etkinliklerini dinlemenin daha iyi bir yolu olsa da bu adımda aynı işlemi yapmak için bir Cloud Audit Log tetikleyicisi oluşturursunuz.
Kurulum
Bir hizmetten etkinlik almak için Cloud Audit Logs'u etkinleştirmeniz gerekir. Cloud Console'da sol üstteki menüden IAM & Admin ve Audit Logs simgelerini seçin. Hizmetler listesinde Google Cloud Storage işaretini kaldırın:

Sağ tarafta Admin, Read ve Write seçeneklerinin işaretli olduğundan emin olun ve Save simgesini tıklayın:

Oluştur
Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Denetim günlükleri tetikleyicilerinin başlatılması biraz zaman alır. Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:
gcloud eventarc triggers list
ACTIVE alanının Yes olduğunu görürsünüz:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Aynı dosyayı daha önce yaptığınız gibi Cloud Storage paketine yükleyin:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz:

9. Eventarc kullanıcı arayüzünü keşfetme
Bu adımda, Google Cloud Console'daki Eventarc kullanıcı arayüzünü keşfedeceksiniz. Eventarc kullanıcı arayüzünde tüm tetikleyicilere genel bir bakış atabilir, bunları düzenleyip silebilir ve Google Cloud Console'dan yeni tetikleyiciler oluşturabilirsiniz.
Google Cloud'un Eventarc bölümüne gidin:

Daha önce oluşturduğunuz tetikleyicilerin listesini görürsünüz:

Bir tetikleyiciyi tıkladığınızda tetikleyicinin ayrıntılarını görebilir, tetikleyiciyi düzenleyebilir veya silebilirsiniz:

Ayrıca, Create trigger simgesini seçip tetikleyiciyle ilgili ayrıntıları girerek de yeni bir tetikleyici oluşturabilirsiniz:

10. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Eventarc'ın vizyonu
- Eventarc'taki etkinlikleri keşfetme
- Cloud Run havuzu oluşturma
- Pub/Sub için tetikleyici oluşturma
- Cloud Storage için tetikleyici oluşturma
- Cloud Denetleme Günlükleri için tetikleyici oluşturma
- Eventarc kullanıcı arayüzünü keşfetme