1. Genel Bakış
Bu codelab serisi (kendi kendine hızlandırılabilen, uygulamalı eğiticiler), geliştiricilerin uygulamalarını dağıtırken sahip oldukları çeşitli seçenekleri anlamalarına yardımcı olmayı amaçlar. Bu codelab'de, Google Cloud Translation API'yi Python ile kullanmayı ve yerel olarak çalıştırmayı ya da Cloud sunucusuz bilgi işlem platformuna (App Engine, Cloud Functions veya Cloud Run) dağıtmayı öğreneceksiniz. Bu eğiticinin deposunda bulunan örnek uygulama, yalnızca küçük yapılandırma değişiklikleriyle en az sekiz farklı şekilde dağıtılabilir:
- Yerel Flask sunucusu (Python 2)
- Yerel Flask sunucusu (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Docker üzerinden Python 2)
- Cloud Run (Dock üzerinden Python 3)
- Cloud Run (Cloud Buildpacks aracılığıyla Python 3)
Bu codelab'de, bu uygulamanın yukarıdaki kalın yazı tipi platformlara dağıtımına odaklanılmaktadır.
Neler öğreneceksiniz?
- Google Cloud API'lerini, özellikle de Cloud Translation API'yi (gelişmiş/v3) kullanma
- Temel bir web uygulamasını yerel olarak çalıştırın veya Cloud sunucusuz bilgi işlem platformuna dağıtın
Gerekenler
- Etkin bir Cloud Faturalandırma hesabı olan bir Google Cloud projesi
- Yerel olarak çalıştırmak için Flask veya bulut tabanlı dağıtımlar için etkinleştirilmiş bir Cloud sunucusuz bilgi işlem platformu
- Temel Python becerileri
- Temel işletim sistemi komutlarını çalışma bilgisi
Anket
Bu eğiticiden nasıl yararlanacaksınız?
Python deneyiminizi nasıl değerlendirirsiniz?
Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Kurulum ve şartlar
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp 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 dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle
PROJECT_ID
olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir. - Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü 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 çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
3. Translation API'yi etkinleştir
Örnek uygulamamızda, aşağıdaki benzer talimatları uygulamak yerine Cloud Translation API ve App Engine hizmetini etkinleştireceksiniz.
Cloud APIs'i etkinleştirme
Giriş
Uygulamanızda kullanmak istediğiniz Google API'sinden bağımsız olarak, bunların etkinleştirilmesi gerekir. Aşağıdaki örnekte, Cloud Vision API'yi etkinleştirmenin iki yolu gösterilmektedir. Bir Cloud API'yi nasıl etkinleştireceğinizi öğrendikten sonra, süreç benzer olduğu için diğer API'leri de etkinleştirebilirsiniz.
1. Seçenek: Cloud Shell'den veya komut satırı arayüzünden
API'leri Cloud Console'dan etkinleştirmek daha yaygın olsa da bazı geliştiriciler her şeyi komut satırından yapmayı tercih eder. Bunu yapmak için bir API'nin "hizmet adını" aramanız gerekir. Bu URL şuna benziyor: SERVICE_NAME
.googleapis.com
. Bunları Desteklenen ürünler grafiğinde bulabilir veya Google Discovery API ile programlı bir şekilde sorgulayabilirsiniz.
Bu bilgilere sahip olduğunuzda, Cloud Shell'i (veya gcloud
komut satırı aracının yüklü olduğu yerel geliştirme ortamınızı) kullanarak bir API'yi aşağıdaki şekilde etkinleştirebilirsiniz:
gcloud services enable SERVICE_NAME.googleapis.com
Örneğin, aşağıdaki komut Cloud Vision API'yi etkinleştirir:
gcloud services enable vision.googleapis.com
Bu komut App Engine'i etkinleştirir:
gcloud services enable appengine.googleapis.com
Ayrıca tek bir istekle birden çok API'yi de etkinleştirebilirsiniz. Örneğin, aşağıdaki komut satırı Cloud Run, Cloud Artifact Registry ve Cloud Translation API'yi etkinleştirir:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
2. seçenek: Cloud Console'dan
API Yöneticisi'nden Vision API'yi de etkinleştirebilirsiniz. Cloud Console'da API Yöneticisi'ne gidip Kitaplık'ı seçin.
Cloud Vision API'yi etkinleştirmek istiyorsanız "vision" ifadesini yazmaya başlayın yazdığınızda şu ana kadar girdiğinizle eşleşen her şey görünür:
Etkinleştirmek istediğiniz API'yi seçin ve Etkinleştir'i tıklayın:
Maliyet
Birçok Google API'si ücretsiz olarak kullanılabilse de Google Cloud ürünleri ve API'ler ücretsiz değildir. Cloud APIs'i etkinleştirirken, etkin bir faturalandırma hesabı girmeniz istenebilir. Ancak bazı Google Cloud ürünlerinde "Daima Ücretsiz" faturalandırma ücreti ödemek için aşmanız gereken katman (günlük/aylık); Aksi takdirde, kredi kartınızdan (veya belirtilen faturalandırma aracından) ücret alınmaz.
Kullanıcılar, herhangi bir API'yi etkinleştirmeden önce fiyatlandırma bilgisine başvurmalıdır. Özellikle API'nin ücretsiz katmanı olup olmadığına ve varsa bunun ne olduğuna dikkat etmelidir. Cloud Vision API'yi etkinleştirdiyseniz fiyatlandırma bilgileri sayfasını kontrol ederdiniz. Cloud Vision'ın ücretsiz bir kotası vardır. Bu kotanın toplamını (her ay içinde) aşmadığınız sürece sizden herhangi bir ücret alınmaz.
Fiyatlandırma ve ücretsiz katmanlar, Google API'lerine göre değişiklik gösterir. Örnekler:
- Google Cloud/GCP: Her ürün farklı şekilde faturalandırılır ve genellikle vCPU döngüsü, depolama alanı tüketicisi, bellek kullanımı veya kullanıma göre ödeme başına ödeme yapılır; yukarıdaki ücretsiz katman bilgilerini inceleyin.
- Google Haritalar — Bir API paketi içerir ve kullanıcılara toplam aylık 200 ABD doları değerinde ücretsiz kredi sunar.
- Google Workspace (eski adıyla G Suite) API'leri, Workspace aylık abonelik ücreti kapsamında ücretsiz kullanım (belirli sınırlara kadar) sunar. Bu sayede Gmail, Google Drive, Takvim, Dokümanlar, E-Tablolar ve Slaytlar API'lerinin kullanımı için doğrudan faturalandırma yapılmaz.
Farklı Google ürünleri farklı şekilde faturalandırılır. Bu nedenle, bu bilgiler için API'nizin belgelerine başvurduğunuzdan emin olun.
Özet
Google API'lerini genel olarak nasıl etkinleştireceğinizi öğrendiğinize göre lütfen API Yöneticisi'ne gidin ve henüz yapmadıysanız hem Cloud Translation API hem de App Engine hizmetini etkinleştirin. Bu işlemi komut satırından yapmayı tercih ederseniz bunun yerine şu komutu verin:
gcloud services enable appengine.googleapis.com translate.googleapis.com
Aylık kotası, genel olarak "Daima Ücretsiz" sekmesinde gösterilmese de katman özeti sayfasındaki Translation API'nin fiyatlandırma sayfasında tüm kullanıcıların aylık olarak sabit miktarda çevrilmiş karakter alacağı belirtilir. Bu eşiğin altında kalırsanız API sizden herhangi bir ücret almaz. Google Cloud ile ilgili başka ücretler varsa bunlar en son "Temizlik" bölümünde ele alınır bölümüne bakın.
4. Örnek uygulama kodunu alma
Depodaki kodu yerel olarak veya Cloud Shell'de klonlayın (git clone
komutunu kullanarak) ya da aşağıdaki ekran görüntüsünde gösterildiği gibi ZIP dosyasını yeşil Kod düğmesinden indirin:
Artık her şeye sahip olduğunuza göre, bu özel eğiticiyi uygulamak için klasörün tam bir kopyasını oluşturun. Çünkü bu işlem büyük olasılıkla dosyaların silinmesini veya değiştirilmesini gerektirecektir. Farklı bir dağıtım yapmak istiyorsanız orijinali kopyalayarak en baştan başlayabilirsiniz. Böylece, tekrar klonlamak veya indirmek zorunda kalmazsınız.
5. Örnek uygulama turu
Örnek uygulama, kullanıcılardan İngilizce metin girmelerini ve söz konusu metnin İspanyolca karşılığını almalarını isteyen basit bir Google Çeviri türevidir. Şimdi main.py
dosyasını açın, böylece işleyiş şeklini görebiliriz. Lisanslamayla ilgili yorum yapılan satırlar atlanırsa, üstte ve altta şu şekilde görünür:
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)))
- İçe aktarma işlemleri Flask işlevini,
google.auth
modülünü ve Cloud Translation API istemci kitaplığını sağlar. - Genel değişkenler; Flask uygulamasını, Cloud proje kimliğini, Translation API istemcisini ve üst "konum yolunu" temsil eder. hakkında daha fazla bilgi edinin. Bu durumda, dil İngilizce (
en
) ve İspanyolcadır (es
) ancak bu değerleri Cloud Translation API tarafından desteklenen diğer dil kodlarıyla değiştirebilirsiniz. - Alttaki büyük
if
bloğu bu uygulamayı yerel olarak çalıştırma eğiticisinde kullanılır. Uygulamamızı sunmak için Flask geliştirme sunucusunu kullanır. Bu bölüm, web sunucusunun container'a dahil edilmemiş olması ihtimaline karşı Cloud Run dağıtımı eğiticileri için de hazırlanmıştır. Kapsayıcıda sunucuyu gruplandırmayı etkinleştirmeniz istenir. Ancak bunu gözden kaçırırsanız uygulama kodu Flask geliştirme sunucusunu kullanmaya başlar. (App Engine veya Cloud Functions'la ilgili bir sorun değildir çünkü bunlar kaynak tabanlı platformlardır. Yani Google Cloud, varsayılan bir web sunucusu sağlayıp çalıştırır.)
Son olarak, main.py
öğesinin ortasında, uygulamanın merkezinde yer alan translate()
işlevi yer alır:
@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)
Birincil işlev, kullanıcı girişini alıp işin zor kısmını yapması için Translation API'yi çağırma görevini üstlenir. Bunları ayrıntılı şekilde inceleyelim:
- İsteklerin
local_request
değişkenini kullanarak Cloud Functions'dan gelip gelmediğini kontrol edin. Cloud Functions kendi Flask İsteği nesnesini gönderir. Diğer tüm kuruluşlar (yerel olarak çalışan veya App Engine'e ya da Cloud Run'a dağıtım yapan) istek nesnesini doğrudan Flask'tan alır. - Formun temel değişkenlerini sıfırlayın. POST isteklerinde bunların yerini alan veriler olacağı için bu, öncelikle GET istekleri içindir.
- Bu bir POST ise çevrilecek metni alın ve API meta veri gereksinimini temsil eden bir JSON yapısı oluşturun. Ardından kullanıcı eski bir kitaplığı kullanıyorsa API'nin önceki bir sürümünü kullanarak API'yi çağırın.
- Yine de, gerçek sonuçları (POST) veya veri yok (GET) şablon bağlamına göre biçimlendirin ve oluşturun.
Uygulamanın görsel kısmı, index.html
şablonunun içindedir. Daha önce çevrilen sonuçları (aksi takdirde boş) ve ardından çevrilecek şeyi isteyen formu gösterir:
<!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. Yerel paketleri/bağımlıları yükleme (lib'e)
Daha önce belirtildiği gibi, örnek uygulama Flask mikro web çerçevesini ve Python için Google Cloud Translation API istemci kitaplığını kullanır. Bu pip
(veya pip3
) komutuyla pip
ve bu paket çiftini yükleyip güncelleyin:
pip install -t lib -r requirements.txt
Yukarıdaki yorumu çalıştırdıktan sonra, şuna benzer bir yükleme çıkışı görürsünüz:
$ pip install -t lib -r requirements.txt DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Collecting flask>=1.1.2 Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB) Collecting google-cloud-translate>=2.0.1 Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB) Collecting click<8.0,>=5.1 Using cached click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting Jinja2<3.0,>=2.10.1 Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) Collecting Werkzeug<2.0,>=0.15 Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB) Collecting itsdangerous<2.0,>=0.24 Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB) Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0 Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB) |████████████████████████████████| 93 kB 2.1 MB/s Collecting google-cloud-core<2.0dev,>=1.1.0 Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB) Collecting MarkupSafe>=0.23 Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB) Collecting protobuf>=3.12.0 Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB) |████████████████████████████████| 958 kB 21.6 MB/s Collecting futures>=3.2.0; python_version < "3.2" Using cached futures-3.3.0-py2-none-any.whl (16 kB) Collecting six>=1.13.0 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting packaging>=14.3 Using cached packaging-20.9-py2.py3-none-any.whl (40 kB) Collecting googleapis-common-protos<2.0dev,>=1.6.0 Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB) Collecting requests<3.0.0dev,>=2.18.0 Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB) Collecting google-auth<2.0dev,>=1.25.0 Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting setuptools>=40.3.0 Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB) Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc" Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB) Collecting pyparsing>=2.0.2 Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Collecting chardet<5,>=3.0.2 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting urllib3<1.27,>=1.21.1 Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB) Collecting idna<3,>=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB) Collecting certifi>=2017.4.17 Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB) |████████████████████████████████| 145 kB 61.1 MB/s Collecting pyasn1-modules>=0.2.1 Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB) Collecting rsa<4.6; python_version < "3.6" Using cached rsa-4.5-py2.py3-none-any.whl (36 kB) Collecting cachetools<5.0,>=2.0.0 Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB) Collecting enum34>=1.0.4; python_version < "3.4" Using cached enum34-1.1.10-py2-none-any.whl (11 kB) Collecting pyasn1<0.5.0,>=0.4.6 Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB) Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts. matplotlib 1.3.1 requires nose, which is not installed. matplotlib 1.3.1 requires tornado, which is not installed. Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5
7. Hizmeti dağıtma
Çeviri hizmetinizi Python 2 App Engine'e dağıtmak için şu komutu çalıştırın:
gcloud app deploy
Çıkış aşağıdaki gibi görünmeli ve sonraki adımlar için bazı istemler sağlamalıdır:
$ gcloud app deploy Services to deploy: descriptor: [/private/tmp/nebulous-serverless-python/app.yaml] source: [/private/tmp/nebulous-serverless-python] target project: [PROJECT_ID] target service: [default] target version: [20210422t161025] target url: [https://PROJECT_ID.appspot.com] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 1290 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse
Uygulamanız artık tüm dünyada kullanıma sunulduğuna göre dağıtım çıktınızda belirtilen URL'den (proje kimliğinizi içeren) erişebilmeniz gerekir:
Nasıl çalıştığını görmek için bir şeyi çevirin!
8. Sonuç
Tebrikler! Cloud Translation API'yi etkinleştirmeyi, gerekli kimlik bilgilerini almayı ve Python 2 App Engine'e basit bir web uygulaması dağıtmayı öğrendiniz. Depodaki bu tablodan bu dağıtım hakkında daha fazla bilgi edinebilirsiniz.
Temizleme
Cloud Translation API, aylık sabit sayıda karakter çevirisini ücretsiz olarak yapmanıza olanak tanır. App Engine'de ücretsiz kota da vardır. Aynı durum Cloud Functions ve Cloud Run için de geçerlidir. Bu iki sınır aşılırsa ücret ödemeniz gerekir. Bir sonraki codelab'e geçmeyi planlıyorsanız uygulamanızı kapatmanız gerekmez.
Ancak bir sonraki eğitime henüz geçmeye hazır değilseniz veya internetin yakın zamanda dağıttığınız uygulamayı bulduğundan endişeleniyorsanız ücret alınmaması için App Engine uygulamanızı devre dışı bırakın, Cloud Functions işlevinizi silin veya Cloud Run hizmetinizi devre dışı bırakın. Bir sonraki codelab'e geçmeye hazır olduğunuzda projeyi yeniden etkinleştirebilirsiniz. Öte yandan, bu uygulamayı veya diğer codelab'leri kullanmaya devam etmeyecekseniz ve her şeyi tamamen silmek istiyorsanız projenizi kapatabilirsiniz.
Ayrıca Google Cloud sunucusuz bilgi işlem platformuna dağıtım yapmak küçük derleme ve depolama maliyetleri gerektirir. Cloud Build'in ve Cloud Storage'ın kendi ücretsiz kotası vardır. Cloud Build, daha fazla şeffaflık için uygulama görüntünüzü derler. Bu görüntü daha sonra Cloud Container Registry veya Artifact Registry'nin yerine geçer. O görüntünün depolanması, bu görüntünün hizmete aktarılması sırasında ağ çıkışının yanı sıra bu kotanın bir kısmını kullanır. Ancak, bu kadar ücretsiz katmanın olmadığı bir bölgede yaşıyor olabilirsiniz. Bu nedenle, olası maliyetleri en aza indirmek için depolama alanı kullanımınız konusunda dikkatli olun.
9. Ek kaynaklar
İlerleyen bölümlerde, bu eğitimi tamamladıktan sonra edindiğiniz bilgileri artırmak için önerilen alıştırmaların yanı sıra ek okuma materyalleri bulabilirsiniz.
Ek çalışma
Artık Translation API'yi tecrübe ettiğinize göre becerilerinizi daha da geliştirmek için ek alıştırmalar yapalım. Öğrenme rotanıza devam etmek için örnek uygulamamızda değişiklik yaparak aşağıdakileri yapabilirsiniz:
- Yerel olarak çalıştırmak veya Google Cloud sunucusuz bilgi işlem platformlarına dağıtım yapmak için bu codelab'in diğer tüm sürümlerini tamamlayın (depo README'yi inceleyin).
- Başka bir programlama dili kullanarak bu eğiticiyi tamamlayın.
- Farklı kaynak veya hedef dilleri desteklemek için bu uygulamayı değiştirin.
- Metni birden fazla dile çevirebilmek için bu uygulamayı yükseltin; şablon dosyasını, desteklenen hedef dillerin açılır listesini içerecek şekilde değiştirin.
Daha fazla bilgi
Google App Engine
- App Engine ana sayfası
- App Engine belgeleri
- Python 3 App Engine hızlı başlangıç kılavuzu
- App Engine için varsayılan hizmet hesapları
- Python 2 App Engine (Standart) çalışma zamanı
- Python 3 App Engine (Standart) çalışma zamanı
- Python 2 ile Python 2 arasındaki farklar 3 App Engine (Standart) çalışma zamanı
- Python 2'den 3'e App Engine (Standart) taşıma kılavuzu
Google Cloud Functions
- Cloud Functions ana sayfası
- Cloud Functions belgeleri
- Python Cloud Functions hızlı başlangıç kılavuzu
- Cloud Functions için varsayılan hizmet hesapları
Google Cloud Run
- Cloud Run ana sayfası
- Cloud Run belgeleri
- Python Cloud Run hızlı başlangıç kılavuzu
- Cloud Run için varsayılan hizmet hesapları
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Cloud Buildpacks duyurusu
- Cloud Buildpacks deposu
- Cloud Artifact Registry ana sayfası
- Cloud Artifact Registry belgeleri
- Cloud Container Registry ana sayfası
- Cloud Container Registry belgeleri
Google Cloud Translation ve Google ML Kit
- Cloud Translation ana sayfası
- Cloud Translation belgeleri
- Translation API fiyatlandırma sayfası
- Tüm Cloud AI/ML "yapı taşları" API'ler
- Google ML Kit (Mobil cihazlar için Cloud AI/ML API'leri alt kümesi)
- Google ML Kit Translation API'si
Diğer Google Cloud ürünleri/sayfaları
- Google Cloud Python desteği
- Google Cloud istemci kitaplıkları
- Google Cloud "Daima Ücretsiz" katman
- Tüm Google Cloud belgeleri
Python ve Flask
Lisans
Bu eğitim, Creative Commons Attribution 2.0 Genel Lisansı ile, kod deposundaki kaynak kodu ise Apache 2 ile lisanslanmıştır.