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. Google Cloud Translation API'yi basit bir web uygulamasında nasıl kullanacağınızı öğreneceksiniz. Bu uygulama yerel olarak çalıştırılabilir veya Cloud sunucusuz bir bilgi işlem platformuna (App Engine, Cloud Functions ya da Cloud Run) dağıtılabilir.
Bu JavaScript eğitimini Ekspres.js web çerçevesini kullanarak Node.js ile yapacaksınız. Ayrıca sunucusuz platformlarımızdan Google Cloud API'lerine nasıl erişeceğinizi öğreneceksiniz. Bu uygulamanın tüm sürümleri "nebulous sunucusuz"dan alınmıştır açık kaynak kod deposu, bu uygulamanın Python sürümünü ve bağımsız codelab'leri içerir. Depo, geliştiricilere sunucusuz platformlarımızdan bulut dışı Google API'lerine nasıl erişeceklerini gösteren benzer uygulamalar da barındırır.
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 yüklenmiş bir web çerçevesi ( Python eğiticisini hazırlayanlar için Flask, JavaScript/Node.js eğitimini yapanlar için Express)
- Google Cloud dağıtımları için etkinleştirilen en az bir sunucusuz işlem platformu
- Temel programlama becerileri (Python veya JavaScript/Node.js)
- Temel işletim sistemi komutlarını çalışma bilgisi
Anket
Bu eğiticiden nasıl yararlanacaksınız?
Python veya Node.js geliştirme 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
Bu bölümde, Google API'lerinin genel olarak nasıl etkinleştirileceğini öğreneceksiniz. Örnek uygulamamız için Cloud Translation API'yi etkinleştirirsiniz. Örnek uygulamayı hangi platformlara dağıtmak istediğinize bağlı olarak App Engine, Cloud Functions ve/veya Cloud Run'ı (ve Cloud Artifact Registry'yi) de etkinleştireceksiniz.
Google API'lerini etkinleştirme
Giriş
Uygulamanızda kullanmak istediğiniz Google API'sinden bağımsız olarak, bunların etkinleştirilmesi gerekir. API'ler komut satırından veya Cloud Console'dan etkinleştirilebilir. API'leri etkinleştirme süreci aynıdır. Bu nedenle, bir API'yi etkinleştirdikten sonra aynı şekilde başka bir API de yapabilirsiniz.
1. Seçenek: gcloud
komut satırı arayüzü (Cloud Shell veya yerel ortam)
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
1. Örnek: Cloud Vision API'yi etkinleştirme
gcloud services enable vision.googleapis.com
2. Örnek: Google App Engine'i etkinleştirme
gcloud services enable appengine.googleapis.com
3. Örnek: Tek bir istekle birden çok API'yi etkinleştirme. Örneğin, bu codelab'de Cloud Translation API'yi kullanarak bir uygulamayı App Engine, Cloud Functions ve Cloud Run'a dağıtan görüntüleyiciler varsa komut satırı şöyle olur:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Bu komut App Engine, Cloud Functions, Cloud Run ve Cloud Translation API'yi etkinleştirir. Ayrıca Cloud Artifact Registry'yi etkinleştirir çünkü container görüntülerinin Cloud Run'a dağıtılabilmesi için Cloud Build sistemi tarafından kaydedilmesi gerekir.
2. seçenek: Cloud Console
Google API'lerini API Yöneticisi'nden de etkinleştirebilirsiniz. Cloud Console'da API Yöneticisi'ne gidip Kitaplık'ı seçin.
Eşleşen sonuçları görmek için arama çubuğuna bir API'nin adını yazmaya başlayın:
Etkinleştirmek istediğiniz API'yi seçin ve Etkinleştir düğmesini tıklayın:
Hangi Google API'sini kullanmak istediğinize bakılmaksızın, tüm API'leri etkinleştirme süreci benzerdir.
Maliyet
Birçok Google API'si ücretsiz olarak kullanılabilir. Ancak Google Cloud ürünlerinin ve API'lerinin çoğunun kullanımı için ücret ödemeniz gerekir. Cloud APIs'i etkinleştirirken, etkin bir faturalandırma hesabı girmeniz istenebilir. Ancak bazı Google Cloud ürünlerinde "Daima Ücretsiz" katmanını kullanın.
Yeni GCP kullanıcıları Ücretsiz Deneme'den yararlanabilir. Şu anda ilk 90 gün için 300 ABD doları geçerlidir. Codelab'ler genellikle herhangi bir ücret ödemez veya herhangi bir ücret ödemez. Bu nedenle, özellikle tek seferlik bir teklif olduğundan, test sürüşü yapmaya hazır olana kadar Ücretsiz Deneme'yi ertelemenizi öneririz. Ücretsiz Katman kotalarının süresi dolmaz ve bu kotalar, Ücretsiz Deneme'yi kullanıp kullanmadığınıza bakılmaksızın uygulanır.
Kullanıcılar, etkinleştirmeden önce API'lerin fiyatlandırma bilgilerine (ör. Cloud Vision API fiyatlandırma sayfası) başvurmalıdır. Özellikle API'nin ücretsiz katmanı olup olmadığını ve varsa ne olduğunu belirtmesi gerekir. Toplamda belirtilen günlük veya aylık sınırları aşmadığınız sürece herhangi bir ücret ödemezsiniz. Fiyatlandırma ve ücretsiz katmanlar, Google ürün grubu API'leri arasında farklılık gösterir. Örnekler:
- Google Cloud/GCP: Her ürün farklı şekilde faturalandırılır ve genellikle kullanıma göre ücretlendirilir; 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 olan kullanımlar (belirli sınırlara kadar) sunar. Bu sayede Gmail, Google Drive, Takvim, Dokümanlar, E-Tablolar ya da Slaytlar gibi uygulamalarda API'lerin 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 uygun dokümanlara başvurduğunuzdan emin olun.
İstenen hizmetlerin etkinleştirildiğinden emin olma
API Yöneticisi'nde, yukarıda belirtildiği şekilde Cloud Translation API'yi kullanın. Sunucusuz platformları komut satırından etkinleştirmediyseniz bu işlemi Cloud Console'daki ilgili kontrol panellerinin her birinden yapabilirsiniz: App Engine, Cloud Functions, Cloud Run.
API'leri Cloud Console'dan etkinleştirmek görsel olarak bilgilendirici olsa da, tüm hizmetlerin etkinleştirilmesi birkaç saniye süren gcloud
aracını kullanmak daha hızlıdır:
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
Maliyetler hakkında daha fazla bilgi
Maliyetlerle ilgili yukarıdaki bölüm, Google API'leri genelinde geneldir. Bu eğitimde biraz daha ayrıntıya değinelim. 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 sunucusuz platformlarının kullanımıyla ilgili maliyetler hakkında daha fazla bilgi için Deponun Maliyetler bölümüne göz atın. "Temizlik" bölümünde, bu codelab tamamlandıktan sonra faturalandırmanın nasıl durdurulacağı açıklanacaktır.
4. Örnek uygulama kodunu alma
ZIP'i indir veya depoyu klonla
- ZIP dosyasını indirin veya
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
ile depoyu klonlayın - Yerel bir geliştirme ortamınız yoksa ve bu eğiticiyi Cloud Shell'de yapmak istiyorsanız depoyu aynı
git clone
komutuyla klonlayabilirsiniz. - ZIP dosyasına aşağıdaki ekran görüntüsünde gösterildiği gibi yeşil Kod düğmesinden de erişebilirsiniz:
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. Node.js ortamını onaylayın
Node.js ortamınızı ayarlamak için aşağıdakileri yapın:
- Düğüm (>=10) ve NPM (>=6) güncel sürümlerinin yüklü olduğundan emin olun
- Depo'yu klonladığınız (veya ZIP dosyasını açtığınız) yere gidip
cloud/nodejs
klasörüne gidin package.json
adlı cihazın mevcut olduğunu onaylayın ve ardındannpm install
uygulamasını çalıştırın
Yukarıdaki 1. adımda, komut satırında hangi sürümlerin olduğunu doğrulayabilirsiniz:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Ö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.
package.json
yapılandırma dosyası, uygulama için hangi üçüncü taraf paketlerin gerekli olduğunu gösterir (paket sürümlerinin burada listelenenlerin ötesinde güncellenebileceğini unutmayın):
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
Şimdi index.js
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:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
require
, çerçeve ve şablon oluşturma işlevleri ile Cloud Translation API istemci kitaplığını sağlar.- Genel değişkenler web uygulamasını, Cloud projesi kimliğini, Translation API istemcisini ve üst "konum yolunu" temsil eder. Translation API çağrıları ve
SOURCE
ileTARGET
dilleri için geçerlidir. 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. - Her bir çiftin ilk öğesi (
SOURCE
veTARGET
) dil kodu, ikincisi ise dil adıdır (ve API ile ilgisi olmadığından yalnızca görüntüleme amacıyla kullanılır). - Alttaki birkaç satır, tüm HTTP isteklerini
translate()
hedefine göndermek ve ardındanapp
uygulama nesnesini dışa aktarmak içindir.
Son olarak, index.js
öğesinin ortasında, uygulamanın merkezinde yer alan translate()
işlevi yer alır:
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('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:
- 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 boş değilse API meta veri gereksinimini temsil eden bir JSON yapısı oluşturun. Ardından hizmet için API'yi çağırın.
SOURCE[0]
dilini API'ye belirli bir İngilizce kaynağa iletmedik. Kaynak dili bırakmadığınızda API'nin kaynak dili otomatik olarak algılamasını istersiniz (DokümanlardakisourceLanguageCode
bölümüne bakı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>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<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>
Eğiticinin geri kalanında, bu uygulamayı dağıtmak ve çalıştırmak için dört seçenekten birini veya tümünü belirleyebilirsiniz. Tüm dağıtımlar isteğe bağlıdır, yani herhangi birini veya hepsini yapabilirsiniz.
- Hizmeti yerel olarak çalıştırma
- App Engine'e dağıtma (standart ortam)
- Cloud Functions'a dağıtma
- Cloud Run'a dağıt
7. 1. SEÇENEK: Hizmeti yerel olarak çalıştırın
Codelab'in bu bölümü yalnızca yerel olarak çalıştırma içindir. Yalnızca buluta dağıtım yapıyorsanız sonraki bölüme geçin.
Örnek uygulamayı yerel olarak çalıştırmak için uygulanması gereken üç ayrı adım vardır:
- Hizmet hesabı oluşturma
- Hizmet hesabı ortak/özel anahtar çifti oluşturma
- Kimlik bilgileri dosyasını ve uygulama koduyla paketi indir
- Hizmeti başlat
Hizmet hesapları hakkında bilgi
Hizmet hesapları, kullanıcılara ait olmayan verilere erişirken bulut tabanlı uygulamalarda Google API'lerine erişmek için kullanılan güvenlik mekanizmasıdır. Buluta dağıtım yaparken, kullanıcıların Cloud'a ilk katılım süresini kısaltmak için tüm Google Cloud işlem platformları (sunucusuz ve aksi takdirde) varsayılan hizmet hesapları sağlar.
Varsayılan hizmet hesapları, "bütünlemeleri önlemek" için çok çeşitli izinlere sahiptir. Ancak bir üretim hizmetini kullanıma sunmaya hazırlanırken kullanıcılara "en az ayrıcalık" en iyi uygulamasını kesinlikle öneririz. Ancak uygulamanızın düzgün çalışması için yalnızca yeterli izinlere sahip kullanıcı tarafından yönetilen hizmet hesapları oluşturmak. Buna bakılmaksızın, yerel dağıtımlar için varsayılan hizmet hesabı yoktur. Bu nedenle, bir hizmet hesabı ile birlikte bir hizmet hesabı anahtarı (aslında bir ortak/özel anahtar çifti) oluşturmanız ve bu kimlik bilgilerini uygulama kodunda kullanılabilir hale getirmeniz gerekir.
Hizmet hesabı anahtar çifti oluşturma ve kimlik bilgileri dosyasını indirme
Yerel olarak çalıştırmak üzere bir hizmet hesabı ve ortak/özel anahtar çifti oluşturmak için bu sayfadaki talimatları uygulayın. Hizmet hesabı anahtarını oluştururken istenen izinleri vermeniz istenir. API'ye başarıyla erişebilmek için roles/cloudtranslate.user
seçeneğini belirlediğinizden emin olun.
Anahtar çiftiniz başarıyla oluşturulduktan sonra hizmet hesabı anahtar dosyasını indirmeniz istenir. Dosyayı credentials.json
olarak adlandırın ve uygulamanın üst düzey klasörüne taşıyın. Şimdi Google Cloud SDK'ya bu kimlik bilgilerini kullanmasını söyleyin: GOOGLE_APPLICATION_CREDENTIALS
ortam değişkenini bu dosyayı işaret edecek şekilde ayarlayın. Bu işlemle ilgili daha fazla bilgiyi, hizmet hesaplarının kullanımını kapsayan bu sayfada da bulabilirsiniz.
Hizmeti başlatma
Devam etmeye hazır olduğunuzda aşağıdaki komutla Express sunucuyu yerel olarak başlatın:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
localhost:8080 adresinden bağlanmak için web tarayıcınıza gidin. Aşağıdakine benzer bir sonuç görürsünüz:
Nasıl çalıştığını görmek için bir şeyi çevirin!
İstediğiniz gibi olduğunda, ^C (control-C) ile sunucudan çıkın ve çıkış yapın. Tebrikler, bir yerel dağıtımı çalıştırın. İyi haberlerimiz var: Buluta dağıtım çok daha kolay.
Sorun giderme
Çeviri isteğinde bulunurken böyle bir hata mı alıyorsunuz?
node:fs:2486 handleErrorFromBinding(ctx); ^ Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json' . . .
ÇÖZÜM: Bu hata, hizmet hesabı oluşturma ve credentials.json
ortak/özel anahtar çifti dosyasını indirmediğiniz anlamına gelir. Lütfen şuraya geri dönün: " 1. SEÇENEK: Hizmeti yerel olarak çalıştırın" ve devam etmeden önce bu işlemi tamamlayıp cred'leri ana klasöre yükleyin.
8. 2. SEÇENEK: App Engine'e dağıtın (standart ortam)
Codelab'in bu bölümü yalnızca Node App Engine'e dağıtım yapmak içindir. Bu içerikler ilginizi çekmiyorsa bir sonraki bölüme geçin.
Bu dağıtım, App Engine'e tek satırla hangi çalışma zamanının kullanılacağını bildiren app.yaml
yapılandırma dosyasını kullanır:
runtime: nodejs16
app.yaml
dosyası, Cloud Functions veya Cloud Run tarafından kullanılmaz. App Engine'i kullanmayı düşünmüyorsanız bu dosya güvenli bir şekilde silinebilir. App Engine'e dağıtıma hazır olduğunuzda şu komutu çalıştırın:
$ gcloud app deploy
Bölge seçildikten sonra gcloud app deploy
çıkışı çok daha az ayrıntılı olur ve şu şekilde görünmelidir:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.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 To take a quick anonymous survey, run: $ gcloud survey
Uygulamanız artık dünyanın her yerinde kullanılabilir. Buna göre, proje kimliğinizi içeren URL'den de erişebilirsiniz. Ayrıca, yerel Express sürümüne benzer bir çıkış görürsünüz. Ancak uygulamanızın bulutta çalıştığını ve tüm dünyada kullanıma sunulduğunu bilmeniz gerekir:
İstek gönderirseniz diğer tüm dağıtımlarla aynı şekilde çalıştığını görürsünüz.
9. 3. SEÇENEK: Cloud Functions'a dağıtma
Codelab'in bu bölümü yalnızca Node Cloud Functions'a dağıtım yapmak içindir. Bu içerikler ilginizi çekmiyorsa bir sonraki bölüme geçin.
Cloud Functions'da yapılandırma dosyası bulunmaz. Bu nedenle, Cloud Functions'a dağıtım yapmaya hazır olduğunuzda şu komutu çalıştırın:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
GCP projenizde varsayılan bir REGION
olabilir ancak işlevinizi belirli bir bölgeye dağıtmak için --region
işaretini kullanabilirsiniz. Cloud Functions, diğer Cloud ürünlerini kullanmanızı istemez. Seçtiğiniz bölgeden bağımsız olarak gcloud functions deploy
çıkışı aşağıdaki gibi görünmelidir:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
Uygulamanız artık tüm dünyada kullanıma sunulduğuna göre, dağıtım çıktısında ("httpsTrigger/url
" altında) gösterildiği gibi, proje kimliğinizi içeren URL'den erişebilirsiniz. URL şuna benzer: https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
. Bu değer, seçtiğiniz bölgeye ve Cloud proje kimliğinize göre değişir.
10. 4. SEÇENEK: Cloud Run'a dağıtma
Codelab'in bu bölümü yalnızca Cloud Run'a dağıtım yapmak içindir. Bu içerikler ilginizi çekmiyorsa bir sonraki bölüme geçin.
Cloud Run'da yapılandırma dosyası bulunmadığından Cloud Run'a dağıtım yapmaya hazır olduğunuzda aşağıdaki talimatları uygulayın.
Şu komutu çalıştırarak çeviri hizmetinizi Cloud Run'a dağıtmaya hazırsınız:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
Çıkış aşağıdaki gibi görünmeli ve sonraki adımlar için bazı istemler sağlamalıdır:
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
Cloud Build, uygulamanızı yerel olarak çalıştırırken kullandığınıza benzer şekilde uygulamalarınızı Cloud Run'a paketler. Node.js kullanıcıları için npm install
ve npm start
çalıştırır. Python için pip install -r requirements.txt
çalıştırır ve uygulamayı, Procfile
içindeki talimatlar doğrultusunda başlatır. (Aynı durum Cloud Buildpacks tarafından desteklenen diğer tüm diller için de geçerlidir.) Derleme işlemi tamamlandığında uygulamanız kullanıma hazır hale gelir.
Uygulamanız bunun ardından (bölgesel olarak dağıtılır ancak) genel olarak kullanıma sunulur ve uygulamaya, dağıtım çıkışında gösterildiği gibi proje kimliğinizi içeren URL'den ("Service URL
" altında) erişilebilir.
Nasıl çalıştığını görmek için bir şeyi çevirin!
11. Sonuç
Tebrikler! Cloud Translation API'yi etkinleştirmeyi ve kullanmayı, gerekli kimlik bilgilerini almayı ve basit bir web uygulamasını App Engine, Cloud Functions ve/veya Cloud Run'a yerel olarak ifade etmek için nasıl dağıtacağınızı öğrendiniz. Daha fazla bilgi edinmek veya bu uygulamanın diğer sürümlerinin yanı sıra diğer codelab'lere erişmek için lütfen depo klasörüne göz atın.
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.
12. 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
Google Cloud Functions
- Cloud Functions ana sayfası
- Cloud Functions belgeleri
- Cloud Functions için varsayılan hizmet hesapları
Google Cloud Run
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
- Cloud Translation API istemci kitaplıkları (tüm geliştirme dilleri)
- Cloud Translation API'nin desteklediği (konuşulan/yazılı) diller
- 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ı
Python bağlantıları
- Python 3 App Engine hızlı başlangıç kılavuzu
- 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
- Python Cloud Functions hızlı başlangıç kılavuzu
- Python Cloud Run hızlı başlangıç kılavuzu
- Google Cloud Python desteği
- Flask
Node.js bağlantıları
- Node.js App Engine hızlı başlangıç kılavuzu
- Node.js App Engine (Standart) çalışma zamanı
- Node.js Cloud Functions hızlı başlangıç kılavuzu
- Node.js Cloud Run hızlı başlangıç kılavuzu
- Google Cloud Node.js desteği
- Express
Lisans
Bu eğitim, Creative Commons Attribution 2.0 Genel Lisansı ile, kod deposundaki kaynak kodu ise Apache 2 ile lisanslanmıştır.