1. Genel Bakış
Bu kod laboratuvarı serisi (kendi hızınızda ilerleyebileceğiniz, uygulamalı eğitimler), geliştiricilerin uygulamalarını dağıtırken sahip oldukları çeşitli seçenekleri anlamalarına yardımcı olmayı amaçlamaktadır. 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 bir Cloud sunucusuz bilgi işlem platformuna (App Engine, Cloud Functions ya da Cloud Run) dağıtılabilir.
Bu JavaScript eğitimini Express.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 de öğreneceksiniz. Bu uygulamanın tüm sürümleri, uygulamanın Python sürümünü ve bağımsız codelab'leri içeren "nebulous serverless" açık kaynaklı deposundan alınmıştır. Depoda, geliştiricilere sunucusuz platformlarımızdan Cloud olmayan Google API'lerine nasıl erişileceğini gösteren benzer uygulamalar da bulunur.
Bu codelab, bu uygulamayı yukarıdaki kalın platformlara dağıtmaya odaklanmaktadır.
Öğrenecekleriniz
- Google Cloud API'lerini, özellikle 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ı'na sahip bir Google Cloud projesi
- Yerel olarak çalıştırmak için yüklenmiş bir web çerçevesi ( Python eğitimini yapanlar için Flask, JavaScript/Node.js eğitimini yapanlar için Express)
- Google Cloud dağıtımları için en az bir sunucusuz işlem platformu etkinleştirilmiş olmalıdır.
- Temel programlama becerileri (Python veya JavaScript/Node.js)
- Temel işletim sistemi komutları hakkında çalışma bilgisi
Anket
Bu eğitimi nasıl kullanacaksınız?
Python veya Node.js'de geliştirme deneyiminizi nasıl değerlendirirsiniz?
Google Cloud hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?
2. Kurulum ve şartlar
Yönlendirmesiz ortam kurulumu
- Google Cloud Console'da oturum açın ve 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 dizisidir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu değer "dondurulur". - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer 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 tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere codelab'in sonunda bulunan "temizleme" talimatlarını uygulayın. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
3. Translation API'yi etkinleştirme
Bu bölümde, Google API'lerini genel olarak nasıl etkinleştireceğinizi öğreneceksiniz. Örnek uygulamamız için Cloud Translation API'yi etkinleştireceksiniz. Ayrıca, örnek uygulamayı dağıtmak istediğiniz platformlara bağlı olarak App Engine, Cloud Functions ve/veya Cloud Run'ı (Cloud Artifact Registry ile birlikte) etkinleştirirsiniz.
Google API'lerini etkinleştirme
Giriş
Uygulamanızda hangi Google API'sini kullanmak istediğinizden bağımsız olarak, API'lerin 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 diğerini de aynı şekilde etkinleştirebilirsiniz.
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. Bunun için bir API'nin "hizmet adını" aramanız gerekir. URL'ye benziyor: SERVICE_NAME.googleapis.com. Bu ürünleri Desteklenen ürünler tablosunda bulabilir veya Google Discovery API ile programatik olarak sorgulayabilirsiniz.
Bu bilgilerle donanmış olarak Cloud Shell'i (veya gcloud komut satırı aracı yüklü yerel geliştirme ortamınızı) kullanarak bir API'yi aşağıdaki gibi 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 fazla API'yi etkinleştirme. Örneğin, bu codelab'de Cloud Translation API'yi kullanarak App Engine, Cloud Functions ve Cloud Run'a uygulama dağıtan izleyiciler varsa komut satırı şu şekilde 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 Run'a dağıtım yapmak için Cloud Build derleme sistemi tarafından container görüntülerinin kaydedilmesi gereken yer olan Cloud Artifact Registry'yi etkinleştirir.
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ı girmeye başlayın:

Etkinleştirmek istediğiniz API'yi seçin ve Etkinleştir düğmesini tıklayın:

Kullanmak istediğiniz Google API'si ne olursa olsun, tüm API'leri etkinleştirme süreci benzerdir.
Maliyet
Birçok Google API'si ücretsiz olarak kullanılabilir ancak çoğu Google Cloud ürünü ve API'si kullanıldığında ücret alınır. Cloud API'lerini etkinleştirirken etkin bir faturalandırma hesabı istenebilir. Ancak bazı Google Cloud ürünlerinde "Daima Ücretsiz" katmanı bulunur. Faturalandırma ücreti ödemek için bu katmanı aşmanız gerekir.
Yeni GCP kullanıcıları, ilk 90 gün boyunca geçerli olan ve şu anda 300 ABD doları değerinde olan ücretsiz deneme hakkından yararlanabilir. Codelab'ler genellikle çok fazla veya hiç faturalandırmaya neden olmaz. Bu nedenle, özellikle tek seferlik bir teklif olduğundan, ücretsiz denemeyi gerçekten test etmeye hazır olana kadar bekletmenizi öneririz. Ücretsiz katman kotalarının süresi dolmaz ve ücretsiz deneme sürümünü kullanıp kullanmadığınıza bakılmaksızın geçerlidir.
Kullanıcılar, herhangi bir API'yi etkinleştirmeden önce fiyatlandırma bilgilerine (ör. Cloud Vision API fiyatlandırma sayfası) başvurmalı ve özellikle ücretsiz katmanının olup olmadığını ve varsa ne olduğunu not etmelidir. Belirtilen günlük veya aylık sınırları toplu olarak aşmadığınız sürece herhangi bir ücret alınmaz. 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 kullandıkça ödeme yapılır. Yukarıdaki ücretsiz katman bilgilerine bakın.
- Google Haritalar: Bir API paketi içerir ve kullanıcılara genel olarak 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 belirli sınırlara kadar kullanım sunar. Bu nedenle, Gmail, Google Drive, Takvim, Dokümanlar, E-Tablolar veya Slaytlar gibi uygulamalarda API kullanımı için doğrudan faturalandırma yapılmaz.
Farklı Google ürünleri için farklı faturalandırma yöntemleri uygulanır. Bu nedenle, ilgili bilgileri öğrenmek için lütfen uygun dokümanlara bakın.
İstenen hizmetlerin etkinleştirildiğinden emin olun
Yukarıda belirtildiği gibi API Yöneticisi'nde Cloud Translation API'nin etkinleştirildiğinden emin olun. Sunucusuz platformları komut satırından etkinleştirmediyseniz Cloud Console'daki ilgili kontrol panellerinden (App Engine, Cloud Functions, Cloud Run) etkinleştirebilirsiniz.
API'leri Cloud Console'dan etkinleştirmek görsel olarak bilgilendirici olsa da tüm hizmetleri etkinleştirmek için saniyeler 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
Yukarıdaki maliyetler bölümü, Google API'leri için geneldir. Bu eğitimde daha fazla ayrıntıya değinelim. Aylık kotası genel "Her Zaman Ücretsiz" katman özet sayfasında listelenmese de Translation API'nin fiyatlandırma sayfasında tüm kullanıcıların aylık olarak sabit miktarda çevrilmiş karakter aldığı belirtilir. Bu eşiğin altında kalırsanız API'den herhangi bir ücret alınmaz. Google Cloud sunucusuz platformlarını kullanmayla ilgili maliyetler hakkında daha fazla bilgi için deponun Maliyetler bölümüne bakın. En sondaki "Temizleme" bölümünde, bu codelab tamamlandıktan sonra faturalandırmanın nasıl durdurulacağı açıklanmaktadır.
4. Örnek uygulama kodunu alma
ZIP dosyasını indirme veya depoyu klonlama
- ZIP dosyasını indirin veya
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.gitile depoyu klonlayın. - Yerel bir geliştirme ortamınız yoksa ve bu eğitimi Cloud Shell'de yapmak istiyorsanız depoyu aynı
git clonekomutla klonlayabilirsiniz. - Ayrıca, aşağıdaki ekran görüntüsünde gösterildiği gibi yeşil Code (Kod) düğmesini kullanarak ZIP dosyasına erişebilirsiniz:

Artık her şeye sahip olduğunuza göre, bu özel eğitimi uygulamak için klasörün tam bir kopyasını oluşturun. Çünkü bu eğitimde dosyaların silinmesi veya değiştirilmesi gerekebilir. Farklı bir dağıtım yapmak istiyorsanız orijinali kopyalayarak baştan başlayabilirsiniz. Böylece orijinali tekrar klonlamanız veya indirmeniz gerekmez.
5. Node.js ortamını onaylayın
Node.js ortamınızı ayarlamak için aşağıdakileri yapın:
- Node (>=10) ve NPM'nin (>=6) güncel sürümlerinin yüklü olduğundan emin olun.
- Depoyu klonladığınız (veya ZIP dosyasını açtığınız) yere gidip
cloud/nodejsklasörüne gidin. package.jsonöğesinin mevcut olduğunu onaylayın venpm installkomutunu çalıştırın.
Yukarıdaki 1. madde için komut satırında hangi sürümlere sahip olduğunuzu doğrulayabilirsiniz:
$ node -v v17.0.1 $ npm -v 8.1.0
6. Örnek uygulamada gezinme
Örnek uygulama, kullanıcıların İngilizce metin girmesini ve bu metnin İspanyolca çevirisini almasını isteyen basit bir Google Çeviri türevidir.
package.json yapılandırma dosyası, uygulama için hangi üçüncü taraf paketlerinin 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çarak nasıl çalıştığını görelim. Lisanslama ile ilgili yorum satırları çıkarıldığında, üst ve alt kısımlar aşağıdaki gibi 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 işlevlerinin yanı sıra Cloud Translation API istemci kitaplığını getirir.- Global değişkenler; web uygulamasını, Cloud proje kimliğini, Translation API istemcisini, Translation API çağrıları için üst "konum yolunu" ve
SOURCEileTARGETdillerini temsil eder. Bu örnekte İngilizce (en) ve İspanyolca (es) kullanılmıştır ancak bu değerleri Cloud Translation API tarafından desteklenen diğer dil kodlarıyla değiştirebilirsiniz. - Her çiftin ilk öğesi (
SOURCEveTARGET) dil kodu, ikincisi ise dil adıdır (ve API için alakasız olduğundan yalnızca görüntüleme amacıyla kullanılır). - En alttaki birkaç satır, tüm HTTP isteklerini
translate()adresine göndermek ve ardındanappuygulama nesnesini dışa aktarmak içindir.
Son olarak, index.js'nın ortasında uygulamanın kalbi olan 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 alma ve ağır işleri yapmak için Translation API'yi çağırma görevini yerine getirir. Her birini ayrı ayrı inceleyelim:
- Formun temel değişkenlerini sıfırlayın. Bu, öncelikle GET istekleri içindir. POST isteklerinde bu verilerin yerini alacak veriler bulunur.
- POST isteği 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.
- API'ye belirli bir İngilizce kaynak için
SOURCE[0]iletmedik. Kaynak dili belirtmediğinizde API'nin kaynak dili otomatik olarak algılamasını istersiniz (sourceLanguageCodedokümanlardaki bölümüne bakın). - Her durumda, gerçek sonuçları (POST) veya verileri (GET) şablon bağlamında biçimlendirin ve oluşturun.
Uygulamanın görsel kısmı index.html şablon dosyasında yer alır. Daha önce çevrilmiş sonuçları (aksi takdirde boş) ve ardından çevrilmesini istediğiniz metni girmenizi 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ğitimin geri kalanında, bu uygulamayı dağıtmak ve çalıştırmak için dört seçeneğin herhangi birini veya tümünü belirleyebilirsiniz. Tüm dağıtımlar isteğe bağlıdır. Yani herhangi birini veya tümünü yapabilirsiniz.
- Hizmeti yerel olarak çalıştırma
- App Engine'e (standart ortam) dağıtma
- Cloud Functions'a dağıtma
- Cloud Run'a dağıt
7. 1. SEÇENEK: Hizmeti yerel olarak çalıştırma
Bu codelab bölümü yalnızca yerel olarak çalıştırmak içindir. Yalnızca buluta dağıtım yapıyorsanız bir sonraki bölüme geçin.
Örnek uygulamayı yerel olarak çalıştırmak için üç farklı adımın uygulanması gerekir:
- Hizmet hesabı oluşturma
- Hizmet hesabı genel/özel anahtar çifti oluşturma
- Kimlik bilgileri dosyasını indirip uygulama koduyla paketleme
- Hizmeti başlatma
Hizmet hesapları hakkında bilgi
Hizmet hesapları, insan kullanıcılara ait olmayan verilere erişirken bulut tabanlı uygulamalar için Google API'lerine erişmek üzere kullanılan güvenlik mekanizmasıdır. Bulut'a dağıtım yaparken kullanıcıların Bulut'a geçiş sürecini kısaltmak için tüm Google Cloud işlem platformları (sunucusuz ve diğer) varsayılan hizmet hesapları sağlar.
Varsayılan hizmet hesapları, "bürokrasiyi aşmak" için geniş bir izin grubuyla birlikte gelir. Ancak bir üretim hizmetini başlatmaya hazırlanırken kullanıcıların, uygulamanızın düzgün çalışması için yalnızca yeterli izinlere sahip kullanıcı tarafından yönetilen hizmet hesapları oluşturarak "en az ayrıcalık" en iyi uygulamasını izlemelerini önemle tavsiye ederiz. Her durumda, yerel dağıtımlar için varsayılan hizmet hesapları yoktur. Bu nedenle, bir hizmet hesabı ve hizmet hesabı anahtarı (aslında ortak/özel anahtar çifti) oluşturmanız ve bu kimlik bilgilerini uygulama koduna sunmanız gerekir.
Hizmet hesabı anahtarı çifti oluşturma ve kimlik bilgileri dosyasını indirme
Yerel olarak çalıştırmak için hizmet hesabı ve genel/özel anahtar çifti oluşturmak üzere bu sayfadaki talimatları uygulayın. Hizmet hesabı anahtarı oluştururken istenen izinleri sağlamanız istenir. API'ye başarılı bir şekilde 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 uygulama üst düzey klasörüne taşıyın. Şimdi Cloud SDK'ya bu kimlik bilgilerini kullanmasını söylemeniz gerekiyor: GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini bu dosyayı işaret edecek şekilde ayarlayın. Bu süreç hakkında daha fazla bilgiyi hizmet hesabı kullanımıyla ilgili bu sayfada da bulabilirsiniz.
Hizmeti başlatma
Devam etmeye hazır olduğunuzda aşağıdaki komutla Express sunucusunu 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 şey görmeniz gerekir:

Çalıştığını görmek için bir şeyi çevirin.

Memnun kaldığınızda ^C (control-C) ile sunucudan çıkın. Yerel dağıtımı çalışır duruma getirdiğiniz için tebrik ederiz. Ancak iyi bir haberimiz var: Buluta dağıtım yapmak artık çok daha kolay.
Sorun giderme
Çeviri isteğinde bulunurken aşağıdaki gibi 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 herkese açık/özel anahtar çifti dosyasını indirme işlemini credentials.json tamamlamadığınız anlamına gelir. Lütfen "1. SEÇENEK: Hizmeti yerel olarak çalıştırma" bölümüne geri dönün ve devam etmeden önce bu işlemi tamamlayıp kimlik bilgilerini ana klasöre yükleyin.
8. 2. SEÇENEK: App Engine'e (standart ortam) dağıtma
Bu codelab'in bu bölümü yalnızca Node App Engine'e dağıtım için geçerlidir. İlgilenmiyorsanız bir sonraki bölüme geçin.
Bu dağıtımda, App Engine'e tek bir satırla hangi çalışma zamanının kullanılacağını bildiren app.yaml yapılandırma dosyası kullanılı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ğıtmaya hazır olduğunuzda şu komutu çalıştırın:
$ gcloud app deploy
Bir bölge seçildikten sonra gcloud app deploy çıkışı çok daha az ayrıntılı olur ve aşağıdaki gibi görünür:
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ünya genelinde kullanılabildiğinden proje kimliğinizi içeren URL'den erişebilirsiniz. Yerel Express sürümüne benzer bir çıkış görürsünüz ancak bunun bulutta çalıştığını ve dünya genelinde kullanılabildiğini unutmayın:

İstek gönderirseniz diğer tüm dağıtımlarda olduğu gibi çalıştığını görürsünüz.
9. 3. SEÇENEK: Cloud Functions'a dağıtma
Bu codelab bölümü yalnızca Node Cloud Functions'a dağıtım için geçerlidir. İlgilenmiyorsanız bir sonraki bölüme geçin.
Cloud Functions'ta yapılandırma dosyası yoktur. Bu nedenle, Cloud Functions'a dağıtmaya 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ünleri gibi sizi istemez. Hangi bölgeyi seçerseniz seçin, 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 dünya genelinde kullanılabildiğinden dağıtım çıktısında ("httpsTrigger/url" altında) gösterildiği gibi proje kimliğinizi içeren URL'den erişebilirsiniz. URL, seçtiğiniz bölgeye ve Cloud proje kimliğinize bağlı olarak değişir ve https://REGION-PROJECT_ID.cloudfunctions.net/translate gibi görünür.

10. 4. SEÇENEK: Cloud Run'a dağıtma
Bu codelab bölümü yalnızca Cloud Run'a dağıtım içindir. İlgilenmiyorsanız bir sonraki bölüme geçin.
Cloud Run'da yapılandırma dosyası yoktur. Bu nedenle, Cloud Run'a dağıtmaya hazır olduğunuzda aşağıdaki talimatları uygulayın.
Artık ş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 Buildpacks, uygulamalarınızı Cloud Run'da yerel olarak çalıştırıyormuş gibi oluşturur. Node.js kullanıcıları için npm install ve npm start çalıştırılır. Python için pip install -r requirements.txt komutunu çalıştırır ve Procfile dosyanızdaki talimatlara göre uygulamayı başlatır. (Aynı durum, Cloud Buildpack'lerin desteklediği diğer tüm diller için de geçerlidir.) Derleme işlemi tamamlandığında uygulamanız kullanıma hazır olur.
Uygulamanız daha sonra (bölgesel olarak dağıtılır ancak) dünya genelinde kullanılabilir ve dağıtım çıktısında gösterildiği gibi proje kimliğinizi içeren URL'den erişilebilir ("Service URL:" altında).

Çalıştığını görmek için bir şeyi çevirin.

11. Sonuç
Tebrikler! Cloud Translation API'yi etkinleştirip kullanmayı, gerekli kimlik bilgilerini almayı ve Express'te yerel olarak, App Engine'de, Cloud Functions'da ve/veya Cloud Run'da basit bir web uygulaması dağıtmayı öğrendiniz. Daha fazla bilgi edinmek veya bu uygulamanın diğer sürümlerine ve diğer codelab'lere erişmek için lütfen repo klasörüne göz atın.
Temizleme
Cloud Translation API, ayda belirli bir sayıda çevrilmiş karakteri ücretsiz olarak kullanmanıza olanak tanır. App Engine'in ücretsiz kotası vardır. Aynı durum Cloud Functions ve Cloud Run için de geçerlidir. Bu sınırlardan herhangi birinin aşılması durumunda sizden ücret alınır. Bir sonraki codelab'e geçmeyi planlıyorsanız uygulamanızı kapatmanız gerekmez.
Ancak henüz bir sonraki eğitime geçmeye hazır değilseniz veya internetin yeni dağıttığınız uygulamayı keşfetmesinden endişeleniyorsanız ücretlendirilmemek için App Engine uygulamanızı devre dışı bırakın, Cloud Function'ınızı silin veya Cloud Run hizmetinizi devre dışı bırakın. Bir sonraki codelab'e geçmeye hazır olduğunuzda yeniden etkinleştirebilirsiniz. Öte yandan, bu uygulamaya veya diğer codelab'lere devam etmeyecek ve her şeyi tamamen silmek istiyorsanız projenizi kapatabilirsiniz.
Ayrıca, Google Cloud sunucusuz bilgi işlem platformuna dağıtım yapıldığında küçük derleme ve depolama maliyetleri oluşur. Cloud Build ve Cloud Storage'ın kendi ücretsiz kotaları vardır. Daha fazla şeffaflık için Cloud Build, uygulama görüntünüzü oluşturur. Bu görüntü daha sonra Cloud Container Registry'de veya onun halefi olan Artifact Registry'de depolanır. Bu görselin depolanması ve hizmete aktarılması için ağ çıkışı, bu kotanın bir kısmını kullanır. Ancak, böyle bir ücretsiz katmanın olmadığı bir bölgede yaşıyor olabilirsiniz. Bu nedenle, olası maliyetleri en aza indirmek için depolama alanı kullanımınıza dikkat edin.
12. Ek kaynaklar
Aşağıdaki bölümlerde, bu eğitimi tamamlayarak edindiğiniz bilgileri artırmak için ek okuma materyallerinin yanı sıra önerilen alıştırmaları bulabilirsiniz.
Ek çalışma
Translation API ile ilgili biraz deneyim kazandığınıza göre, becerilerinizi daha da geliştirmek için ek alıştırmalar yapalım. Öğrenme rotanıza devam etmek için örnek uygulamamızı aşağıdaki şekilde değiştirin:
- Yerel olarak çalıştırmak veya Google Cloud sunucusuz bilgi işlem platformlarına dağıtmak için bu codelab'in diğer tüm sürümlerini tamamlayın (repo README'ye bakın).
- Bu eğitimi başka bir programlama dili kullanarak tamamlayın.
- Bu uygulamayı farklı kaynak veya hedef dilleri destekleyecek şekilde 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şma/yazma) diller
- Translation API fiyatlandırması sayfası
- Tüm Cloud AI/ML "yapı taşı" API'leri
- Google ML Kit (Cloud AI/ML API'lerinin mobil cihazlar için alt kümesi)
- Google ML Kit Translation API
Diğer Google Cloud ürünleri/sayfaları
- Google Cloud istemci kitaplıkları
- Google Cloud "Her Zaman Ücretsiz" katmanı
- Tüm Google Cloud belgeleri
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 ve 3 App Engine (Standart) çalışma zamanları arasındaki farklar
- 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 Amaçlı Lisansı ile lisanslanmıştır. Depodaki kaynak kodu ise Apache 2 lisansı ile lisanslanmıştır.