Men-deploy Cloud Function

Panduan ini menunjukkan cara men-deploy Cloud Function dari kode sumber.

Proses deployment mengambil kode sumber dan setelan konfigurasi Anda, serta membuat image yang dapat dijalankan yang dikelola Cloud Functions secara otomatis untuk menangani permintaan ke fungsi Anda.

Dasar-dasar deployment

Pengguna yang men-deploy Cloud Functions harus memiliki peran IAM Developer Cloud Functions atau peran yang mencakup izin yang sama. Lihat juga Konfigurasi tambahan untuk deployment.

Pilih tab untuk mendapatkan petunjuk tentang cara men-deploy fungsi menggunakan gcloud CLI atau Google Cloud Console.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Gunakan perintah gcloud functions deploy untuk men-deploy fungsi:

    gcloud functions deploy YOUR_FUNCTION_NAME \
    [--gen2] \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    Argumen pertama, YOUR_FUNCTION_NAME, adalah nama untuk fungsi yang di-deploy. Nama fungsi harus dimulai dengan huruf yang diikuti dengan maksimal 62 huruf, angka, tanda hubung, atau garis bawah, dan harus diakhiri dengan huruf atau angka.

    • Flag --gen2 menentukan bahwa Anda ingin men-deploy ke Cloud Functions (generasi ke-2). Flag ini diperlukan untuk deployment awal fungsi generasi ke-2. Lihat Perbandingan versi Cloud Functions untuk mengetahui perbandingan Cloud Functions (generasi ke-1) dan Cloud Functions (generasi ke-2).

    • Flag --region menentukan region tempat men-deploy fungsi Anda. Buka Lokasi untuk mengetahui daftar region yang didukung oleh Cloud Functions.

    • Flag --runtime menentukan runtime bahasa yang digunakan fungsi Anda. Cloud Functions mendukung beberapa runtime. Lihat Runtime untuk mengetahui informasi lebih lanjut.

    • Flag --source menentukan lokasi kode sumber fungsi Anda. Lihat bagian berikut untuk mengetahui detailnya:

    • Flag --entry-point menentukan titik masuk ke fungsi Anda dalam kode sumber. Ini adalah kode yang akan dijalankan saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda. Lihat Titik entri fungsi untuk informasi selengkapnya.

    • Untuk menentukan pemicu fungsi Anda, flag tambahan (ditunjukkan sebagai TRIGGER_FLAGS di atas) diperlukan, bergantung pada pemicu yang ingin Anda gunakan:

    Flag pemicu Deskripsi pemicu
    --trigger-http Picu fungsi dengan permintaan HTTP(S). Lihat pemicu HTTP untuk informasi selengkapnya.
    --trigger-topic=YOUR_PUBSUB_TOPIC Picu fungsi saat pesan dipublikasikan ke topik Pub/Sub yang ditentukan. Lihat pemicu Pub/Sub untuk informasi selengkapnya.
    --trigger-bucket=YOUR_STORAGE_BUCKET Memicu fungsi saat objek dibuat atau ditimpa di bucket Cloud Storage yang ditentukan. Lihat Pemicu Cloud Storage untuk mengetahui informasi selengkapnya.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS (Khusus generasi ke-2) Memicu fungsi dengan Eventarc saat ada peristiwa yang cocok dengan filter yang ditentukan. Memerlukan penetapan flag --gen2. Lihat Pemicu Eventarc untuk mengetahui informasi selengkapnya dan opsi tambahan.
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    (Khusus generasi ke-1) Memicu fungsi saat peristiwa yang ditentukan terjadi. Menentukan resource diperlukan untuk beberapa jenis peristiwa. Lihat Pemicu yang didukung di Cloud Functions (generasi ke-1) untuk mengetahui informasi selengkapnya.

    Secara opsional, Anda dapat menentukan opsi konfigurasi, jaringan, dan keamanan tambahan saat men-deploy fungsi.

    Untuk referensi lengkap tentang perintah deployment dan flag-nya, lihat dokumentasi gcloud functions deploy.

    Untuk mengetahui beberapa contoh perintah deployment, lihat Contoh command line.

Konsol

  1. Buka halaman ringkasan Cloud Functions di konsol Google Cloud:

    Buka Cloud Functions

    Pastikan Anda memilih project Google Cloud tempat Anda ingin men-deploy Cloud Functions.

  2. Klik Create function.

  3. Di kolom Environment, pilih 1st gen atau 2nd gen. Lihat perbandingan versi Cloud Functions untuk mengetahui perbandingan Cloud Functions (generasi ke-1) dan Cloud Functions (generasi ke-2).

  4. Di kolom Nama fungsi, masukkan nama untuk fungsi Anda. Nama fungsi harus dimulai dengan huruf yang diikuti dengan maksimal 62 huruf, angka, tanda hubung, atau garis bawah dan harus diakhiri dengan huruf atau angka

  5. Di kolom Region, pilih region untuk men-deploy fungsi Anda.

  6. Di bagian Pemicu, ikuti langkah-langkah berdasarkan lingkungan yang Anda pilih:

    • generasi ke-1
      1. Di bagian Autentikasi HTTPS, pilih opsi yang sesuai tergantung pada apakah Anda ingin mengizinkan pemanggilan fungsi yang tidak terautentikasi atau tidak. Secara default, autentikasi diwajibkan. Lihat Mengautentikasi untuk pemanggilan untuk informasi selengkapnya.
      2. Di kolom Jenis pemicu, pilih jenis pemicu. Lihat Pemicu yang didukung di Cloud Functions (generasi ke-1) untuk mengetahui detail selengkapnya.
      3. Lengkapi kolom tambahan untuk jenis pemicu yang Anda pilih.
      4. Klik Simpan.
    • generasi ke-2
      1. Di kolom Jenis pemicu, pilih pemicu yang ingin Anda gunakan:
        • Untuk pemicu HTTPS, pilih opsi yang sesuai tergantung pada apakah Anda ingin mengizinkan pemanggilan fungsi yang tidak diautentikasi. Setiap fungsi generasi ke-2 memiliki endpoint untuk pemicu HTTP(S). Secara default, autentikasi diwajibkan. Lihat Mengautentikasi untuk pemanggilan untuk informasi selengkapnya.
        • Untuk fungsi berbasis peristiwa, pilih salah satu Cloud Pub/Sub, Cloud Storage, Cloud Firestore, atau Pemicu lainnya. Lihat Pemicu Eventarc untuk mengetahui informasi selengkapnya.
        • Setelah melengkapi kolom wajib diisi, klik Simpan pemicu.
  7. Jika ingin, luaskan bagian Runtime, build... di akhir halaman untuk opsi konfigurasi dan keamanan tambahan.

  8. Klik Berikutnya untuk berpindah ke langkah Kode.

  9. Di kolom Runtime, pilih runtime bahasa yang digunakan fungsi Anda. Cloud Functions mendukung beberapa runtime lihat Runtime untuk informasi lebih lanjut.

  10. Di kolom Titik entri, masukkan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang akan dijalankan saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber - lihat Titik entri fungsi untuk mengetahui informasi selengkapnya.

  11. Di kolom Kode sumber, pilih untuk cara Anda akan menyediakan kode sumber fungsi yang sesuai. Lihat bagian berikut untuk mengetahui detailnya:

  12. Klik Deploy.

Setelah deployment berhasil, fungsi muncul dengan tanda centang hijau di halaman ringkasan Cloud Functions di Google Cloud Console:

Fungsi yang di-deploy di Cloud Console

Deployment awal fungsi mungkin memerlukan waktu beberapa menit, sementara infrastruktur yang mendasarinya disiapkan. Deployment ulang fungsi yang ada akan lebih cepat, dan traffic yang masuk akan otomatis dimigrasikan ke versi terbaru.

Men-deploy dari mesin lokal

Bagian ini menjelaskan cara men-deploy fungsi dari kode sumber yang terletak di mesin lokal Anda.

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Ikuti petunjuk deployment di atas menggunakan perintah gcloud functions deploy.

    Untuk tanda --source, tentukan jalur sistem file lokal ke direktori utama kode sumber fungsi - lihat Struktur direktori sumber. Direktori kerja saat ini digunakan jika flag ini dihilangkan.

    Anda juga dapat menggunakan flag --stage-bucket secara opsional untuk menentukan bucket Cloud Storage yang akan menjadi tujuan upload kode sumber sebagai bagian dari deployment.

    Selama proses upload kode sumber, Cloud Functions mengecualikan file yang tidak diperlukan melalui file .gcloudignore.

Konsol

  1. Ikuti petunjuk deployment di atas menggunakan Google Cloud Console sampai Anda mencapai kolom Kode sumber.
  2. Di kolom Kode sumber, pilih Upload ZIP.
  3. Di kolom Bucket tujuan, klik Telusuri untuk memilih bucket Cloud Storage yang akan menjadi tujuan upload kode sumber Anda sebagai bagian dari deployment.
  4. Di kolom ZIP file, klik Telusuri untuk memilih file ZIP yang akan diupload dari sistem file lokal Anda. File sumber fungsi Anda harus berada di root file ZIP - lihat Struktur direktori sumber.
  5. Klik Deploy.

Men-deploy dari Cloud Storage

Bagian ini menjelaskan cara men-deploy fungsi dari kode sumber yang terletak di bucket Cloud Storage. Kode sumber harus dikemas sebagai file ZIP.

Agar Cloud Functions dapat membaca dari bucket Cloud Storage, pastikan agen penerapan memiliki izin storage.objects.get:

  • Di Cloud Functions (generasi ke-1), Anda harus memberikan izin ini ke akun yang menjalankan deployment.
  • Di Cloud Functions (generasi ke-2), agen layanan Cloud Functions memerlukan izin ini. Jika bucket sumber berada dalam project yang sama dengan fungsi Anda, bucket tersebut akan otomatis diberikan. Jika bucket berada di project yang berbeda, Anda harus memberikannya kepada agen layanan secara manual.

Lihat artikel Menggunakan izin IAM dalam dokumentasi Cloud Storage untuk mendapatkan informasi tentang cara mengontrol akses ke bucket.

Dengan izin ini, Anda sekarang dapat men-deploy fungsi dari Cloud Storage:

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Ikuti petunjuk deployment di atas menggunakan perintah gcloud functions deploy.

    Untuk flag --source, tentukan jalur Cloud Storage, dimulai dengan gs://. Objek di jalur harus berupa file ZIP yang berisi kode sumber fungsi. File sumber fungsi Anda harus berada di root file ZIP - lihat Struktur direktori sumber.

Konsol

  1. Ikuti petunjuk deployment di atas menggunakan Google Cloud Console sampai Anda mencapai kolom Kode sumber.
  2. Di kolom Kode sumber, pilih ZIP dari Cloud Storage.
  3. Di kolom Lokasi Cloud Storage, klik Telusuri untuk memilih file ZIP dari Cloud Storage. File sumber fungsi Anda harus berada di root file ZIP - lihat Struktur direktori sumber.
  4. Klik Deploy.

Men-deploy dari repositori sumber

Bagian ini menjelaskan cara men-deploy fungsi dari kode sumber yang terletak di Cloud Source Repositories. Dengan men-deploy dari Cloud Source Repositories, Anda juga dapat men-deploy kode yang dihosting di repositori GitHub atau Bitbucket.

Sebelum dapat men-deploy kode dari Cloud Source Repositories, Anda harus menyiapkan repositori dan secara opsional menghubungkannya ke repositori GitHub atau Bitbucket.

Agar Cloud Functions dapat membaca dari repositori sumber, agen layanan Cloud Functions memerlukan peran IAM Source Repository Reader (roles/source.reader) pada repositori. Jika repositori sumber berada dalam project yang sama dengan fungsi Anda, izin ini akan otomatis disertakan. Jika repositori sumber ada di project lain, Anda harus memberikan izin secara manual.

Kemudian, Anda dapat men-deploy fungsi dari repositori:

gcloud

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Ikuti petunjuk deployment di atas menggunakan perintah gcloud functions deploy.

    Untuk flag --source, tentukan referensi repositori sumber ke lokasi kode sumber fungsi Anda - lihat Struktur direktori sumber. Referensi paling dasar untuk Cloud Source Repositories memiliki format berikut:

    https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_NAME
    

    Di jalur sebelumnya, PROJECT_ID adalah ID project Google Cloud Anda dan REPOSITORY_NAME adalah nama repositori sumber Anda. Dengan jalur ini, kode sumber dari direktori utama repositori pada revisi yang diberi tag master akan digunakan.

    Untuk men-deploy dari revisi selain master, tambahkan salah satu opsi berikut ke jalur:

    • /revisions/REVISION_NAME
    • /moveable-aliases/MOVEABLE_ALIAS
    • /fixed-aliases/FIXED_ALIAS

    Untuk men-deploy kode sumber dari direktori selain root repositori, tentukan revisi, alias yang dapat dipindahkan, atau alias tetap, lalu tambahkan /paths/PATH_TO_YOUR_SOURCE_DIRECTORY ke jalur.

Konsol

  1. Ikuti petunjuk deployment di atas menggunakan Google Cloud Console sampai Anda mencapai kolom Kode sumber.
  2. Di kolom Kode sumber, pilih Repositori Sumber Cloud.
  3. Di kolom Repositori, masukkan nama repositori sumber Anda.
  4. Di kolom Cabang / tag, pilih Cabang atau Tag, bergantung dari tempat Anda ingin men-deploy.
  5. Masukkan nama cabang atau tag di tempat yang ditunjukkan.
  6. Di kolom Direktori dengan kode sumber, masukkan jalur ke direktori dalam repositori Anda yang berisi kode sumber fungsi - lihat Struktur direktori sumber.
  7. Klik Deploy.

Men-deploy dari editor inline Google Cloud Console

Bagian ini menjelaskan cara menulis dan men-deploy fungsi langsung dari Google Cloud Console menggunakan editor inline yang disediakan.

  1. Ikuti petunjuk deployment di atas menggunakan Google Cloud Console sampai Anda mencapai kolom Kode sumber.
  2. Di kolom Kode sumber, pilih Editor Inline.
  3. Gunakan editor yang disediakan untuk membuat atau mengedit file sumber seperlunya - lihat Struktur direktori sumber.
    • Panel kiri mencantumkan file sumber dan memungkinkan Anda membuat, mengganti nama, dan menghapus file.
    • Panel kanan adalah editor teks yang memungkinkan Anda mengedit konten file.
  4. Klik Deploy.

Contoh command line

Bagian ini menampilkan perintah deployment untuk beberapa contoh skenario deployment.

Untuk mengetahui detail tentang berbagai pemicu yang didukung oleh Cloud Functions, lihat Pemicu Cloud Functions.

Fungsi HTTP dari kode sumber lokal

Misalkan Anda memiliki fungsi HTTP sebagai berikut:

  • Fungsi ini menggunakan Node.js 16.
  • Kode sumber terletak di direktori kerja saat ini (.).
  • Titik entri dalam kode diberi nama myHttpFunction.

Untuk men-deploy fungsi ini ke Cloud Functions (generasi ke-2) dengan nama my-http-function di region us-central1, gunakan perintah berikut:

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs16 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Fungsi Pub/Sub dari kode sumber di Cloud Storage

Misalkan Anda memiliki fungsi berbasis peristiwa sebagai berikut:

  • Fungsi ini menangani peristiwa publikasi pesan Pub/Sub.
  • Fungsi ini menggunakan Python 3.9.
  • Kode sumber terletak di Cloud Storage di jalur. gs://my-bucket/my_function_source.zip.
  • Titik entri dalam kode diberi nama pubsub_handler.

Untuk men-deploy fungsi ke Cloud Functions (generasi ke-2) dengan nama my-pubsub-function di region europe-west1, dan mengaktifkan fungsi tersebut oleh pesan pada topik Pub/Sub my-topic, Anda menggunakan perintah berikut:

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python39 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

Fungsi Cloud Storage dari kode sumber lokal

Misalkan Anda memiliki fungsi berbasis peristiwa sebagai berikut:

  • Fungsi ini menangani peristiwa penghapusan objek Cloud Storage.
  • Fungsi ini menggunakan Java 11.
  • Kode sumber terletak secara lokal di jalur ./functions/storage-function.
  • Titik entri dalam kode diberi nama myproject.StorageFunction.

Untuk men-deploy fungsi ini ke Cloud Functions (generasi ke-2) dengan nama my-storage-function di region asia-northeast1, dan mengaktifkan fungsi tersebut oleh peristiwa di bucket Cloud Storage my-bucket, gunakan perintah berikut:

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java11 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Langkah berikutnya