Membuat dan men-deploy fungsi Cloud Run HTTP menggunakan Python (generasi ke-1)

Panduan ini akan memandu Anda dalam proses penulisan fungsi Cloud Run menggunakan runtime Python. Ada dua jenis fungsi Cloud Run:

  • Fungsi HTTP, yang Anda panggil dari permintaan HTTP standar.
  • Fungsi berbasis peristiwa, yang Anda gunakan untuk menangani peristiwa dari infrastruktur Cloud, seperti pesan di topik Pub/Sub, atau perubahan dalam bucket Cloud Storage.

Contoh ini menunjukkan cara membuat fungsi HTTP sederhana.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  8. Instal dan lakukan inisialisasi gcloud CLI.
  9. Update dan instal komponen gcloud:
    gcloud components update
  10. Siapkan lingkungan pengembangan Anda.

    Buka panduan penyiapan Python

Membuat fungsi

  1. Buat direktori di sistem lokal Anda untuk kode fungsi:

    Linux atau Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    
  2. Buat file bernama main.py di direktori helloworld dengan konten berikut:

    
    import functions_framework
    
    
    from markupsafe import escape
    
    @functions_framework.http
    def hello_http(request):
        """HTTP Cloud Function.
        Args:
            request (flask.Request): The request object.
            <https://flask.palletsprojects.com/en/1.1.x/api/#incoming-request-data>
        Returns:
            The response text, or any set of values that can be turned into a
            Response object using `make_response`
            <https://flask.palletsprojects.com/en/1.1.x/api/#flask.make_response>.
        """
        request_json = request.get_json(silent=True)
        request_args = request.args
    
        if request_json and "name" in request_json:
            name = request_json["name"]
        elif request_args and "name" in request_args:
            name = request_args["name"]
        else:
            name = "World"
        return f"Hello {escape(name)}!"
    
    

    Fungsi contoh ini mengambil nama yang diberikan dalam permintaan HTTP dan menampilkan salam, atau "Halo Dunia!" jika tidak ada nama yang diberikan.

Menentukan dependensi

Dependensi pada Python dikelola dengan pip dan dinyatakan dalam file metadata yang disebut requirements.txt. File ini harus berada di direktori yang sama dengan file main.py yang berisi kode fungsi Anda.

Namun, misalkan Anda ingin menambahkan dependensi Anda sendiri, Anda tidak perlu membuat requirements.txt untuk menjalankan contoh khusus ini. Berikut ini cara melakukannya:

  1. Buat file requirements.txt di direktori helloworld.

  2. Tambahkan dependensi fungsi ke file requirements.txt Anda, misalnya:

    # An example requirements file, add your dependencies below
    sampleproject==2.0.0
    

Men-deploy cloud function

Untuk men-deploy fungsi dengan pemicu HTTP, jalankan perintah berikut di direktori helloworld:

gcloud functions deploy hello_http --no-gen2 --runtime python312 --trigger-http --allow-unauthenticated

Flag --allow-unauthenticated memungkinkan Anda menjangkau fungsi tanpa autentikasi. Untuk mewajibkan autentikasi, hilangkan flag.

Menguji fungsi

  1. Setelah fungsi selesai di-deploy, catat properti httpsTrigger.url atau temukan menggunakan perintah berikut:

    gcloud functions describe hello_http
    

    Kodenya akan terlihat seperti berikut:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http
  2. Kunjungi URL ini di browser Anda. Anda akan melihat pesan "Halo Dunia!".

    Coba teruskan nama dalam permintaan HTTP, misalnya dengan menggunakan URL berikut:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello_http?name=NAME

    Anda akan melihat pesan "Halo NAME!"

Lihat log

Log untuk fungsi Cloud Run dapat dilihat menggunakan Google Cloud CLI, dan di UI Cloud Logging.

Menggunakan alat command line

Untuk melihat log fungsi Anda dengan gcloud CLI, gunakan perintah logs read, diikuti dengan nama fungsi:

gcloud functions logs read hello_http

Output akan terlihat seperti berikut:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.791  Function execution started
D      hello_http  pdb5ys2t022n  2019-09-18 23:29:09.798  Function execution took 7 ms, finished with status code: 200

Menggunakan dasbor Logging

Anda juga dapat melihat log untuk fungsi Cloud Run dari Konsol Google Cloud.