1. บทนำ

Cloud Run เป็นแพลตฟอร์มคำนวณที่มีการจัดการซึ่งทำให้คุณเรียกใช้คอนเทนเนอร์แบบไม่เก็บสถานะที่เรียกใช้ได้โดยใช้คำขอ HTTP โดยสร้างขึ้นจากโปรเจ็กต์โอเพนซอร์ส Knative ซึ่งช่วยให้ย้ายปริมาณงานของคุณไปมาระหว่างแพลตฟอร์มได้ Cloud Run เป็นแบบ Serverless ด้วยการตัดการจัดการโครงสร้างพื้นฐานทั้งหมดออก คุณจึงมุ่งเน้นไปที่การสร้างแอปพลิเคชันที่ยอดเยี่ยม ซึ่งเป็นสิ่งที่สำคัญที่สุดได้
เป้าหมายของบทแนะนำนี้คือการสร้างเว็บแอปพลิเคชัน Streamlit "Hello World" และทำให้ใช้งานได้ใน Cloud Run
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างแอปพลิเคชัน "Hello World" ของ Streamlit
- ทดสอบแอปพลิเคชันโดยการเรียกใช้แอป Streamlit ก่อนที่จะนำไปใช้งาน
- Cloud Buildpack และวิธีที่
streamlitในrequirements.txtช่วยให้ไม่จำเป็นต้องมี Dockerfile - วิธีทำให้แอปพลิเคชัน Streamlit ใช้งานได้ใน Cloud Run
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ คอนโซล Google Cloud แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่เสียค่าใช้จ่ายมากนัก หรืออาจไม่เสียเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลในแล็ปท็อปได้ แต่ในบทแนะนำนี้ คุณจะได้ใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell

หากคุณเริ่มใช้ Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอระดับกลางที่อธิบายว่า Cloud Shell คืออะไร หากเห็นหน้าจอระดับกลาง ให้คลิกต่อไป

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่จำเป็นไว้แล้ว โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานส่วนใหญ่หรือทั้งหมดใน Codelab นี้ได้ด้วยเบราว์เซอร์
เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์และระบบได้ตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์ของคุณ
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list
เอาต์พุตจากคำสั่ง
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
เอาต์พุตจากคำสั่ง
[core] project = <PROJECT_ID>
หากไม่ได้ตั้งค่าไว้ คุณสามารถตั้งค่าได้ด้วยคำสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตจากคำสั่ง
Updated property [core/project].
3. เปิดใช้ API
จาก Cloud Shell ให้เปิดใช้ Artifact Registry, Cloud Build และ Cloud Run API โดยทำดังนี้
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
run.googleapis.com
ซึ่งจะแสดงข้อความแสดงความสำเร็จที่คล้ายกับข้อความนี้
Operation "operations/..." finished successfully.
ตอนนี้คุณก็พร้อมที่จะเริ่มทำงานและเขียนแอปพลิเคชันแล้ว...
4. เขียนแอปพลิเคชัน
ในขั้นตอนนี้ คุณจะสร้างแอปพลิเคชัน Python ของ Streamlit ที่มีข้อความ "Hello World" ซึ่งตอบสนองต่อคำขอ HTTP
ไดเรกทอรีที่ใช้งานอยู่
ใช้ Cloud Shell เพื่อสร้างไดเรกทอรีการทำงานชื่อ helloworld-streamlit แล้วเปลี่ยนไปใช้ไดเรกทอรีดังกล่าวโดยทำดังนี้
mkdir ~/helloworld-streamlit && cd ~/helloworld-streamlit
main.py
สร้างไฟล์ชื่อ main.py:
touch main.py
แก้ไขไฟล์ด้วยโปรแกรมแก้ไขบรรทัดคำสั่งที่คุณต้องการ (nano, vim หรือ emacs) หรือโดยคลิกปุ่ม Cloud Shell Editor

หากต้องการแก้ไขไฟล์โดยตรงด้วย Cloud Shell Editor ให้ใช้คำสั่งนี้
cloudshell edit main.py
main.py
import streamlit as st
st.title("Hello World! 👋🌎")
st.markdown(
"""
This is a demo Streamlit app.
Enter your name in the text box below and press a button to see some fun features in Streamlit.
"""
)
name = st.text_input("Enter your name:")
# Use columns to create buttons side by side
col1, col2 = st.columns(2)
with col1:
if st.button("Send balloons! 🎈"):
st.balloons()
st.write(f"Time to celebrate {name}! 🥳")
st.write("You deployed a Streamlit app! 👏")
with col2:
if st.button("Send snow! ❄️"):
st.snow()
st.write(f"Let it snow {name}! 🌨️")
st.write("You deployed a Streamlit app! 👏")
โค้ดนี้สร้างบริการเว็บพื้นฐานที่ตอบสนองต่อคำขอ HTTP GET ด้วยข้อความที่เป็นมิตร
requirements.txt
เปิดเทอร์มินัลอีกครั้ง แล้วเพิ่มไฟล์ชื่อ requirements.txt เพื่อกำหนดการอ้างอิง
touch requirements.txt
หากต้องการแก้ไขไฟล์โดยตรงด้วย Cloud Shell Editor ให้ใช้คำสั่งนี้
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/streamlit
streamlit==1.47.0
แอปพลิเคชัน Streamlit พร้อมใช้งานแล้ว แต่เรามาทดสอบกันก่อนดีกว่า...
5. ทดสอบแอปพลิเคชัน
หากต้องการทดสอบแอปพลิเคชัน ให้ใช้ uv (ตัวจัดการแพ็กเกจและโปรเจ็กต์ที่รวดเร็วมากของ Python) ซึ่งติดตั้งไว้ล่วงหน้าใน Cloud Shell
หากต้องการทดสอบแอปพลิเคชัน ให้สร้างสภาพแวดล้อมเสมือนจริงโดยทำดังนี้
uv venv
ติดตั้งการอ้างอิง:
uv pip install -r requirements.txt
เริ่มแอปพลิเคชันโดยใช้ streamlit run (ปิดใช้ --server.enableCORS สำหรับการทดสอบเนื่องจากรบกวน Cloud Shell)
uv run streamlit run main.py --server.port=8080 --server.enableCORS=false
บันทึกจะแสดงว่าแอป Streamlit กำลังทำงานอยู่
You can now view your Streamlit app in your browser. Local URL: http://localhost:8080 Network URL: http://10.1.0.1:8080 External URL: http://34.37.7.94:8080
ในหน้าต่าง Cloud Shell ให้คลิกไอคอน Web Preview แล้วเลือก Preview on port 8080 ดังนี้

ซึ่งจะเปิดหน้าต่างเบราว์เซอร์ที่แสดงชื่อ Hello World! 👋🌎

ลองกรอกชื่อและทดสอบปุ่ม 2 ปุ่มบนหน้าจอ
เมื่อเสร็จแล้ว ให้กลับไปที่เซสชัน Cloud Shell หลักและหยุดแอป Streamlit ด้วย CTRL+C
แอปพลิเคชันทำงานได้ตามที่คาดไว้ ถึงเวลาที่จะนำไปใช้งานแล้ว...
6. ทำให้ใช้งานได้กับ Cloud Run
Cloud Run เป็นบริการระดับภูมิภาค ซึ่งหมายความว่าโครงสร้างพื้นฐานที่เรียกใช้บริการ Cloud Run จะอยู่ในภูมิภาคที่เฉพาะเจาะจงและได้รับการจัดการโดย Google เพื่อให้พร้อมใช้งานอย่างซ้ำซ้อนในทุกโซนภายในภูมิภาคนั้น กำหนดภูมิภาคที่จะใช้สำหรับการติดตั้งใช้งาน เช่น
REGION=europe-west4
ตรวจสอบว่าคุณยังอยู่ในไดเรกทอรีการทำงาน
ls
ซึ่งควรแสดงไฟล์ต่อไปนี้
main.py requirements.txt
ก่อนที่จะติดตั้งใช้งาน ให้สร้างไฟล์ .gcloudignore ที่มี .venv/ การดำเนินการนี้จะหยุดไม่ให้การติดตั้งใช้งาน Cloud Run รวมสภาพแวดล้อมเสมือนที่สร้างจาก uv ระหว่างการทดสอบในเครื่อง
สร้าง .gcloudignore ด้วยคำสั่งต่อไปนี้
echo ".venv/" > .gcloudignore
ติดตั้งใช้งานแอปพลิเคชันใน Cloud Run โดยทำดังนี้
gcloud run deploy helloworld-streamlit \
--source . \
--region $REGION \
--allow-unauthenticated
- ตัวเลือก
--allow-unauthenticatedจะทำให้บริการพร้อมให้บริการแก่สาธารณะ โปรดใช้--no-allow-unauthenticatedแทนเพื่อหลีกเลี่ยงคำขอที่ไม่ได้รับการตรวจสอบสิทธิ์
ในครั้งแรก คุณจะได้รับข้อความแจ้งให้สร้างที่เก็บ Artifact Registry แตะ Enter เพื่อตรวจสอบ
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
ซึ่งจะเริ่มการอัปโหลดซอร์สโค้ดไปยังที่เก็บ Artifact Registry และการสร้างอิมเมจคอนเทนเนอร์
Building using Buildpacks and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
จากนั้นรอสักครู่จนกว่าการติดตั้งใช้งานจะเสร็จสมบูรณ์ เมื่อสำเร็จ บรรทัดคำสั่งจะแสดง URL ของบริการดังนี้
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
คุณรับ URL ของบริการได้ด้วยคำสั่งต่อไปนี้
SERVICE_URL=$( \
gcloud run services describe helloworld-streamlit \
--region $REGION \
--format "value(status.address.url)" \
)
echo $SERVICE_URL
ซึ่งควรแสดงข้อมูลดังต่อไปนี้
https://helloworld-streamlit-PROJECTHASH-REGIONID.a.run.app
ตอนนี้คุณใช้แอปพลิเคชันได้แล้วโดยเปิด URL ของบริการในเว็บเบราว์เซอร์

ยินดีด้วย คุณเพิ่งติดตั้งใช้งานแอปพลิเคชันใน Cloud Run Cloud Run จะปรับขนาดอิมเมจคอนเทนเนอร์โดยอัตโนมัติและในแนวนอนเพื่อจัดการคำขอที่ได้รับ จากนั้นจะลดขนาดลงเมื่อความต้องการลดลง คุณจะจ่ายเฉพาะค่า CPU, หน่วยความจำ และเครือข่ายที่ใช้ในระหว่างการจัดการคำขอสำหรับบริการ Cloud Run นี้
7. ล้างข้อมูล
แม้ว่า Cloud Run จะไม่เรียกเก็บเงินเมื่อไม่ได้ใช้บริการ แต่คุณอาจยังคงถูกเรียกเก็บเงินสำหรับการจัดเก็บอิมเมจคอนเทนเนอร์ใน Artifact Registry คุณสามารถลบที่เก็บหรือลบโปรเจ็กต์ที่อยู่ในระบบคลาวด์เพื่อหลีกเลี่ยงการเรียกเก็บเงิน การลบโปรเจ็กต์ที่อยู่ในระบบคลาวด์จะหยุดการเรียกเก็บเงินสำหรับทรัพยากรทั้งหมดที่ใช้ภายในโปรเจ็กต์นั้น
วิธีลบที่เก็บรูปภาพคอนเทนเนอร์
gcloud artifacts repositories delete cloud-run-source-deploy \
--location $REGION
วิธีลบบริการ Cloud Run
gcloud run services delete helloworld-streamlit \
--region $REGION
วิธีลบโปรเจ็กต์ Google Cloud
- ดึงข้อมูลรหัสโปรเจ็กต์ปัจจุบัน
PROJECT_ID=$(gcloud config get-value core/project)
- ตรวจสอบว่าโปรเจ็กต์นี้เป็นโปรเจ็กต์ที่คุณต้องการลบ
echo $PROJECT_ID
- ลบโปรเจ็กต์
gcloud projects delete $PROJECT_ID
8. ยินดีด้วย

คุณได้สร้างเว็บแอปพลิเคชัน Streamlit "Hello World" และทำให้ใช้งานได้ใน Cloud Run แล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- วิธีสร้างแอปพลิเคชัน "Hello World" ของ Streamlit
- ทดสอบแอปพลิเคชันโดยการเรียกใช้แอป Streamlit ก่อนที่จะนำไปใช้งาน
- Cloud Buildpack และวิธีที่
streamlitในrequirements.txtช่วยให้ไม่จำเป็นต้องมี Dockerfile - การติดตั้งใช้งานแอปพลิเคชัน Streamlit ไปยัง Cloud Run
ดูข้อมูลเพิ่มเติม
- ดูเอกสารประกอบ Cloud Run
- ดูตัวเลือกเพิ่มเติมได้ที่การพัฒนาจนถึงการใช้งานจริงใน 3 ขั้นตอนง่ายๆ ด้วย Cloud Run
- ทำตามขั้นตอนใน Django ใน Cloud Run เพื่อสร้างฐานข้อมูล Cloud SQL จัดการข้อมูลเข้าสู่ระบบด้วย Secret Manager และติดตั้งใช้งาน Django
- ดูCodelab ของ Cloud Run เพิ่มเติม...