ปรับใช้ Google แปลภาษาพื้นฐาน" แอปใน Python 3 Cloud Run (Docker)

1. ภาพรวม

ชุดโค้ดแล็บนี้ (บทแนะนำแบบลงมือปฏิบัติด้วยตนเอง) มีจุดมุ่งหมายเพื่อช่วยให้นักพัฒนาแอปเข้าใจตัวเลือกต่างๆ ที่มีเมื่อติดตั้งใช้งานแอปพลิเคชัน ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีใช้ Google Cloud Translation API กับ Python และเรียกใช้ในเครื่องหรือติดตั้งใช้งานแพลตฟอร์มการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Cloud (App Engine, Cloud Functions หรือ Cloud Run) แอปตัวอย่างที่อยู่ในที่เก็บของบทแนะนำนี้สามารถติดตั้งใช้งานได้ (อย่างน้อย) 8 วิธีที่แตกต่างกันโดยมีการเปลี่ยนแปลงการกำหนดค่าเพียงเล็กน้อย

  1. เซิร์ฟเวอร์ Flask ในเครื่อง (Python 2)
  2. เซิร์ฟเวอร์ Flask ในเครื่อง (Python 3)
  3. App Engine (Python 2)
  4. App Engine (Python 3)
  5. Cloud Functions (Python 3)
  6. Cloud Run (Python 2 ผ่าน Docker)
  7. Cloud Run (Python 3 ผ่าน Docker)
  8. Cloud Run (Python 3 ผ่าน Cloud Buildpack)

Codelab นี้มุ่งเน้นที่การติดตั้งใช้งานแอปนี้ในแพลตฟอร์มตัวหนาด้านบน

คุณจะได้เรียนรู้วิธีต่อไปนี้

สิ่งที่คุณต้องมี

แบบสำรวจ

คุณจะใช้บทแนะนำนี้อย่างไร

อ่านและทำแบบฝึกหัด อ่านอย่างเดียว

คุณจะให้คะแนนประสบการณ์การใช้งาน Python เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

คุณจะให้คะแนนประสบการณ์การใช้บริการ Google Cloud เท่าใด

ผู้ฝึกหัด ขั้นกลาง ผู้ชำนาญ

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

3. เปิดใช้ Translation API

การเปิดใช้ Cloud API

ในส่วนนี้ คุณจะได้เรียนรู้วิธีเปิดใช้ Google API โดยทั่วไป สำหรับแอปตัวอย่าง คุณจะต้องเปิดใช้ Cloud Translation API, Cloud Run และ Cloud Artifact Registry

บทนำ

ไม่ว่าคุณจะต้องการใช้ Google API ใดในแอปพลิเคชัน คุณจะต้องเปิดใช้ API นั้น ตัวอย่างต่อไปนี้แสดง 2 วิธีในการเปิดใช้ Cloud Vision API หลังจากที่ทราบวิธีเปิดใช้ Cloud API แล้ว คุณจะเปิดใช้ API อื่นๆ ได้เนื่องจากกระบวนการคล้ายกัน

ตัวเลือกที่ 1: จาก Cloud Shell หรืออินเทอร์เฟซบรรทัดคำสั่ง

แม้ว่าการเปิดใช้ API จาก Cloud Console จะเป็นเรื่องปกติมากกว่า แต่ก็มีนักพัฒนาแอปบางรายที่ต้องการทำทุกอย่างจากบรรทัดคำสั่ง โดยคุณต้องค้นหา "ชื่อบริการ" ของ API ดูเหมือนว่าจะเป็น URL: SERVICE_NAME.googleapis.com คุณดูข้อมูลเหล่านี้ได้ในแผนภูมิผลิตภัณฑ์ที่รองรับ หรือจะค้นหาโดยใช้โปรแกรมด้วย Google Discovery API ก็ได้

เมื่อมีข้อมูลนี้แล้ว คุณจะเปิดใช้ API ได้โดยใช้ Cloud Shell (หรือสภาพแวดล้อมการพัฒนาในเครื่องที่ติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud) ดังนี้

gcloud services enable SERVICE_NAME.googleapis.com

เช่น คำสั่งนี้จะเปิดใช้ Cloud Vision API

gcloud services enable vision.googleapis.com

คำสั่งนี้จะเปิดใช้ App Engine ดังนี้

gcloud services enable appengine.googleapis.com

นอกจากนี้ คุณยังเปิดใช้ API หลายรายการด้วยคำขอเดียวได้ด้วย ตัวอย่างเช่น บรรทัดคำสั่งนี้จะเปิดใช้ Cloud Run, Cloud Artifact Registry และ Cloud Translation API

gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

ตัวเลือกที่ 2: จาก Cloud Console

นอกจากนี้ คุณยังเปิดใช้ Vision API ใน API Manager ได้ด้วย จาก Cloud Console ให้ไปที่ API Manager แล้วเลือกคลัง

fb0f1d315f122d4a.png

หากต้องการเปิดใช้ Cloud Vision API ให้เริ่มป้อน "vision" ในแถบค้นหา แล้วรายการที่ตรงกับสิ่งที่คุณป้อนไว้จะปรากฏขึ้น

2275786a24f8f204.png

เลือก API ที่ต้องการเปิดใช้ แล้วคลิกเปิดใช้

2556f923b628e31.png

ค่าใช้จ่าย

แม้ว่า Google API หลายรายการจะใช้งานได้โดยไม่มีค่าธรรมเนียม แต่การใช้ผลิตภัณฑ์และ API ของ Google Cloud จะไม่มีค่าใช้จ่าย เมื่อเปิดใช้ Cloud API ระบบอาจขอให้คุณระบุบัญชีสำหรับการเรียกเก็บเงินที่ใช้งานอยู่ อย่างไรก็ตาม โปรดทราบว่าผลิตภัณฑ์ Google Cloud บางอย่างมีระดับ "ฟรีตลอดเวลา" (รายวัน/รายเดือน) ซึ่งคุณต้องใช้เกินจึงจะมีการเรียกเก็บเงิน มิฉะนั้นระบบจะไม่เรียกเก็บเงินจากบัตรเครดิต (หรือเครื่องมือการเรียกเก็บเงินที่ระบุ)

ผู้ใช้ควรอ้างอิงข้อมูลการกำหนดราคาของ API ก่อนที่จะเปิดใช้ โดยเฉพาะอย่างยิ่งให้สังเกตว่า API นั้นมีระดับฟรีหรือไม่ และหากมี ระดับฟรีนั้นคืออะไร หากคุณเปิดใช้ Cloud Vision API คุณจะต้องตรวจสอบหน้าข้อมูลการกำหนดราคา Cloud Vision มีโควต้าฟรี และตราบใดที่คุณยังคงอยู่ภายในขีดจำกัดโดยรวม (ภายในแต่ละเดือน) คุณก็ไม่ควรถูกเรียกเก็บเงิน

ราคาและระดับฟรีจะแตกต่างกันไปในแต่ละ Google API ตัวอย่าง

ผลิตภัณฑ์ต่างๆ ของ Google จะมีการเรียกเก็บเงินที่แตกต่างกัน ดังนั้นโปรดดูข้อมูลดังกล่าวในเอกสารประกอบของ API

สรุป

ตอนนี้คุณทราบวิธีเปิดใช้ Google API โดยทั่วไปแล้ว ให้ไปที่ API Manager แล้วเปิดใช้ Cloud Translation API, Cloud Run และ Cloud Artifact Registry (หากยังไม่ได้เปิดใช้) คุณเปิดใช้ตัวเลือกแรกเนื่องจากแอปพลิเคชันของเราใช้ตัวเลือกดังกล่าว คุณต้องเปิดใช้ตัวเลือกหลังเนื่องจากเป็นที่เก็บอิมเมจคอนเทนเนอร์ของเราก่อนที่จะนำไปใช้งานเพื่อเริ่มบริการ Cloud Run ซึ่งเป็นเหตุผลที่คุณต้องเปิดใช้ตัวเลือกนั้น หากต้องการเปิดใช้ทั้งหมดด้วยเครื่องมือ gcloud ให้เรียกใช้คำสั่งต่อไปนี้จากเทอร์มินัลแทน

gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

แม้ว่าโควต้ารายเดือนของ Translation API จะไม่ได้แสดงอยู่ในหน้าสรุประดับ "ฟรีตลอดเวลา" โดยรวม แต่หน้าการกำหนดราคาของ Translation API ระบุว่าผู้ใช้ทุกคนจะได้รับอักขระที่แปลแล้วจำนวนคงที่ในแต่ละเดือน คุณไม่ควรถูกเรียกเก็บเงินจาก API หากใช้งานต่ำกว่าเกณฑ์ดังกล่าว หากมีค่าใช้จ่ายอื่นๆ ที่เกี่ยวข้องกับ Google Cloud เราจะกล่าวถึงค่าใช้จ่ายเหล่านั้นในส่วน "ล้างข้อมูล" ตอนท้าย

4. รับโค้ดแอปตัวอย่าง

โคลนโค้ดในที่เก็บในเครื่องหรือใน Cloud Shell (โดยใช้คำสั่ง git clone) หรือดาวน์โหลดไฟล์ ZIP จากปุ่มโค้ดสีเขียวตามที่แสดงในภาพหน้าจอด้านล่าง

5cd6110c4414cf65.png

ตอนนี้คุณมีทุกอย่างพร้อมแล้ว ให้สร้างสำเนาแบบเต็มของโฟลเดอร์เพื่อทำตามบทแนะนำนี้โดยเฉพาะ เนื่องจากอาจต้องลบหรือเปลี่ยนไฟล์ หากต้องการทําการติดตั้งใช้งานอื่น คุณสามารถเริ่มใหม่ได้โดยการคัดลอกต้นฉบับเพื่อไม่ต้องโคลนหรือดาวน์โหลดอีกครั้ง

5. ทัวร์ชมแอปตัวอย่าง

แอปตัวอย่างเป็นแอปที่ดัดแปลงมาจาก Google แปลภาษาแบบง่ายๆ ซึ่งจะแจ้งให้ผู้ใช้ป้อนข้อความเป็นภาษาอังกฤษและรับคำแปลที่เทียบเท่าของข้อความนั้นเป็นภาษาสเปน ตอนนี้ให้เปิดไฟล์ main.py เพื่อดูวิธีการทำงาน หากไม่รวมบรรทัดที่แสดงความคิดเห็นเกี่ยวกับการอนุญาตให้ใช้สิทธิ โค้ดจะปรากฏที่ด้านบนและด้านล่างดังนี้

from flask import Flask, render_template, request
import google.auth
from google.cloud import translate

app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')

# . . . [translate() function definition] . . .

if __name__ == '__main__':
    import os
    app.run(debug=True, threaded=True, host='0.0.0.0',
            port=int(os.environ.get('PORT', 8080)))
  1. การนำเข้าจะนำฟังก์ชันการทำงานของ Flask, โมดูล google.auth และไลบรารีของไคลเอ็นต์ Cloud Translation API เข้ามา
  2. ตัวแปรส่วนกลางแสดงถึงแอป Flask, รหัสโปรเจ็กต์ Cloud, ไคลเอ็นต์ Translation API, "เส้นทางตำแหน่ง" หลักสำหรับการเรียก Translation API รวมถึงภาษาต้นฉบับและภาษาเป้าหมาย ในกรณีนี้คือภาษาอังกฤษ (en) และภาษาสเปน (es) แต่คุณสามารถเปลี่ยนค่าเหล่านี้เป็นรหัสภาษาอื่นๆ ที่ Cloud Translation API รองรับได้
  3. บล็อก if ขนาดใหญ่ที่ด้านล่างใช้ในบทแนะนำสำหรับการเรียกใช้แอปนี้ในเครื่อง โดยจะใช้เซิร์ฟเวอร์การพัฒนา Flask เพื่อให้บริการแอปของเรา ส่วนนี้ยังมีไว้สำหรับบทแนะนำการติดตั้งใช้งาน Cloud Run ในกรณีที่ไม่ได้รวมเว็บเซิร์ฟเวอร์ไว้ในคอนเทนเนอร์ ระบบจะขอให้คุณเปิดใช้การรวมเซิร์ฟเวอร์ไว้ในคอนเทนเนอร์ แต่ในกรณีที่คุณมองข้ามขั้นตอนนี้ไป โค้ดแอปจะกลับไปใช้เซิร์ฟเวอร์การพัฒนา Flask (นี่ไม่ใช่ปัญหาเกี่ยวกับ App Engine หรือ Cloud Functions เนื่องจากแพลตฟอร์มเหล่านั้นเป็นแพลตฟอร์มที่อิงตามแหล่งที่มา ซึ่งหมายความว่า Google Cloud จะจัดหาและเรียกใช้เว็บเซิร์ฟเวอร์เริ่มต้น)

สุดท้าย ตรงกลางของ main.py คือหัวใจของแอปพลิเคชัน ซึ่งก็คือฟังก์ชัน translate()

@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
    """
    main handler - show form and possibly previous translation
    """

    # Flask Request object passed in for Cloud Functions
    # (use gcf_request for GCF but flask.request otherwise)
    local_request = gcf_request if gcf_request else request

    # reset all variables (GET)
    text = translated = None

    # if there is data to process (POST)
    if local_request.method == 'POST':
        text = local_request.form['text']
        data = {
            'contents': [text],
            'parent': PARENT,
            'target_language_code': TARGET[0],
        }
        # handle older call for backwards-compatibility
        try:
            rsp = TRANSLATE.translate_text(request=data)
        except TypeError:
            rsp = TRANSLATE.translate_text(**data)
        translated = rsp.translations[0].translated_text

    # create context & render template
    context = {
        'orig':  {'text': text, 'lc': SOURCE},
        'trans': {'text': translated, 'lc': TARGET},
    }
    return render_template('index.html', **context)

ฟังก์ชันหลักจะทำหน้าที่รับอินพุตของผู้ใช้และเรียกใช้ Translation API เพื่อทำงานหนัก มาดูรายละเอียดกัน

  1. ตรวจสอบว่าคำขอมาจาก Cloud Functions หรือไม่โดยใช้ตัวแปร local_request Cloud Functions จะส่งออบเจ็กต์คำขอ Flask ของตัวเอง ในขณะที่ฟังก์ชันอื่นๆ ทั้งหมด (ที่เรียกใช้ในเครื่องหรือที่ทำให้ใช้งานได้ใน App Engine หรือ Cloud Run) จะรับออบเจ็กต์คำขอจาก Flask โดยตรง
  2. รีเซ็ตตัวแปรพื้นฐานสำหรับแบบฟอร์ม โดยส่วนใหญ่จะใช้กับคำขอ GET เนื่องจากคำขอ POST จะมีข้อมูลที่แทนที่ข้อมูลเหล่านี้
  3. หากเป็น POST ให้คัดลอกข้อความที่จะแปล แล้วสร้างโครงสร้าง JSON ที่แสดงข้อกำหนดของข้อมูลเมตา API จากนั้นเรียกใช้ API โดยเปลี่ยนกลับไปใช้ API เวอร์ชันก่อนหน้าหากผู้ใช้ใช้ไลบรารีเวอร์ชันเก่า
  4. ไม่ว่าจะอย่างไรก็ตาม ให้จัดรูปแบบผลลัพธ์จริง (POST) หรือไม่มีข้อมูล (GET) ลงในบริบทของเทมเพลต แล้วแสดงผล

ส่วนภาพของแอปพลิเคชันอยู่ในไฟล์เทมเพลต index.html โดยจะแสดงผลการแปลก่อนหน้า (หากไม่มีจะแสดงเป็นช่องว่าง) ตามด้วยแบบฟอร์มที่ขอให้แปล

<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>

{% if trans['text'] %}
    <h4>Previous translation</h4>
    <li><b>Original</b>:   {{ orig['text'] }}  (<i>{{ orig['lc'][0] }}</i>)</li>
    <li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}

<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>

6. ตั้งค่า Docker ให้สร้างอิมเมจ Python 3

ตอนนี้ให้เปิดไฟล์ Dockerfile ซึ่งจะแสดงดังนี้หากไม่มีข้อมูลใบอนุญาต

#FROM python:3-slim
FROM python:2-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]

คุณจะเห็นว่าโดยค่าเริ่มต้น ระบบจะตั้งค่าสำหรับ Python 2 ดังนั้นเรามาเปลี่ยนการตั้งค่านี้โดยการแก้ไขบรรทัด FROM จาก python:2-slim เป็น python:3-slim หรือยกเลิกการแสดงความคิดเห็นในบรรทัดบนสุดและลบบรรทัด FROM เก่า เมื่อเสร็จแล้ว Dockerfile ควรมีลักษณะดังนี้

FROM python:3-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
ENTRYPOINT ["python", "main.py"]

7. ติดตั้งใช้งานบริการ

ตอนนี้คุณพร้อมที่จะทำให้บริการแปลภาษาใช้งานได้ใน Cloud Run แล้วโดยการเรียกใช้คำสั่งนี้

gcloud run deploy translate --source . --allow-unauthenticated --platform managed

เอาต์พุตควรมีลักษณะดังนี้ และมีข้อความแจ้งสำหรับขั้นตอนถัดไป

$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Please specify a region:
 [1] asia-east1
 [2] asia-east2
. . . (other regions) . . .
 [28] us-west4
 [29] cancel
Please enter your numeric choice:  REGION_CHOICE

To make this the default region, run `gcloud config set run/region REGION`.

Deploying from source requires an Artifact Registry repository to
store build artifacts. A repository named [cloud-run-source-deploy] in
 region [REGION] will be created.

Do you want to continue (Y/n)?

This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]"

Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION]
✓ Building and deploying... Done.
  ✓ Creating Container Repository...
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b
  9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER].
  ✓ Creating Revision...
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic.
Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app

ตอนนี้แอปของคุณพร้อมให้บริการทั่วโลกแล้ว คุณควรเข้าถึงแอปได้ที่ URL ที่มีรหัสโปรเจ็กต์ของคุณตามที่แสดงในเอาต์พุตการติดตั้งใช้งาน

169f6edf5f7d2068.png

แปลข้อความเพื่อดูการทำงานของฟีเจอร์นี้

31554e71cb80f1b4.png

8. บทสรุป

ยินดีด้วย คุณได้เรียนรู้วิธีเปิดใช้ Cloud Translation API, รับข้อมูลเข้าสู่ระบบที่จำเป็น และทำให้เว็บแอปแบบง่ายใช้งานได้กับ Python 3 Cloud Run

ล้างข้อมูล

Cloud Translation API ช่วยให้คุณแปลอักขระในจำนวนที่กำหนดได้ฟรีต่อเดือน App Engine ยังมีโควต้าฟรี เช่นเดียวกับ Cloud Functions และ Cloud Run ระบบจะเรียกเก็บเงินจากคุณหากมีการใช้งานเกินขีดจำกัด หากวางแผนที่จะทำ Codelab ถัดไปต่อ คุณไม่จำเป็นต้องปิดแอป

อย่างไรก็ตาม หากคุณยังไม่พร้อมที่จะไปยังบทแนะนำถัดไป หรือกังวลว่าอินเทอร์เน็ตจะค้นพบแอปที่คุณเพิ่งติดตั้งใช้งาน ให้ปิดใช้แอป App Engine, ลบ Cloud Function หรือปิดใช้บริการ Cloud Run เพื่อหลีกเลี่ยงการเรียกเก็บเงิน เมื่อพร้อมที่จะไปที่ Codelab ถัดไป คุณก็เปิดใช้ฟีเจอร์นี้อีกครั้งได้ ในทางกลับกัน หากคุณไม่ต้องการใช้แอปพลิเคชันนี้หรือ Codelab อื่นๆ ต่อไป และต้องการลบทุกอย่างออกทั้งหมด คุณสามารถปิดโปรเจ็กต์ได้

นอกจากนี้ การติดตั้งใช้งานแพลตฟอร์มการประมวลผลแบบ Serverless ของ Google Cloud ยังทำให้เกิดค่าใช้จ่ายในการสร้างและจัดเก็บเล็กน้อย Cloud Build มีโควต้าฟรีของตัวเอง เช่นเดียวกับ Cloud Storage Cloud Build จะสร้างอิมเมจแอปพลิเคชันของคุณเพื่อเพิ่มความโปร่งใส ซึ่งจะจัดเก็บไว้ใน Cloud Container Registry หรือ Artifact Registry ซึ่งเป็นรุ่นต่อจาก Cloud Container Registry การจัดเก็บรูปภาพดังกล่าวจะใช้โควต้าบางส่วน เช่นเดียวกับการส่งข้อมูลออกของเครือข่ายเมื่อโอนรูปภาพไปยังบริการ อย่างไรก็ตาม คุณอาจอาศัยอยู่ในภูมิภาคที่ไม่มีระดับการใช้งานฟรีดังกล่าว ดังนั้นโปรดทราบการใช้พื้นที่เก็บข้อมูลเพื่อลดค่าใช้จ่ายที่อาจเกิดขึ้น

9. แหล่งข้อมูลเพิ่มเติม

ในส่วนต่อไปนี้ คุณจะเห็นสื่อการอ่านเพิ่มเติม รวมถึงแบบฝึกหัดที่แนะนำเพื่อเพิ่มพูนความรู้ที่ได้รับจากการทำแบบฝึกหัดนี้

การศึกษาเพิ่มเติม

ตอนนี้คุณมีประสบการณ์การใช้งาน Translation API บ้างแล้ว มาฝึกเพิ่มเติมเพื่อพัฒนาทักษะกัน หากต้องการดำเนินการตามเส้นทางการเรียนรู้ต่อ ให้แก้ไขแอปตัวอย่างของเราเพื่อทำสิ่งต่อไปนี้

  1. ทำ Codelab นี้ให้เสร็จสมบูรณ์ในรุ่นอื่นๆ ทั้งหมดเพื่อเรียกใช้ในเครื่องหรือติดตั้งใช้งานในแพลตฟอร์มการประมวลผลแบบไร้เซิร์ฟเวอร์ของ Google Cloud (ดูREADME ของที่เก็บ)
  2. ทำบทแนะนำนี้ให้เสร็จโดยใช้ภาษาโปรแกรมอื่น
  3. เปลี่ยนแอปพลิเคชันนี้ให้รองรับภาษาต้นฉบับหรือภาษาเป้าหมายอื่นๆ
  4. อัปเกรดแอปพลิเคชันนี้เพื่อให้แปลข้อความเป็นภาษาต่างๆ ได้มากกว่า 1 ภาษา หรือเปลี่ยนไฟล์เทมเพลตให้มีเมนูแบบเลื่อนลงของภาษาเป้าหมายที่รองรับ

ดูข้อมูลเพิ่มเติม

Google App Engine

Google Cloud Functions

Google Cloud Run

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation และ Google ML Kit

ผลิตภัณฑ์/หน้าอื่นๆ ของ Google Cloud

Python และ Flask

ใบอนุญาต

บทแนะนำนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์แบบระบุแหล่งที่มา 2.0 ทั่วไป ส่วนซอร์สโค้ดในที่เก็บได้รับอนุญาตภายใต้ Apache 2