Prasyarat & Persiapan
Sebelum mulai, pastikan kamu punya beberapa hal berikut:
-
1
AWS Account aktif
Kalau belum punya, sign up gratis di aws.amazon.com/free. Free tier cukup untuk demo & development.
-
2
Email verifikasi + Kartu kredit
AWS wajibkan verifikasi payment method walaupun free tier. Tidak akan di-charge kalau usage di bawah limit gratis.
-
3
Browser modern
Chrome, Firefox, Edge, atau Safari versi terbaru. AWS Console pakai banyak JavaScript.
AWS Location Service free tier (3 months trial): 10K Places Suggest, 20K Geocode/Search, 10K Routes, and 500K Map tile loads per month. Great for POC & development. See official pricing.
📌 Kamu mengikuti flow AWS Location Service v2
Tutorial ini pakai API standalone v2 modern, bukan v0 legacy. Ini bedanya singkat:
- Endpoint langsung:
places.geo.*,routes.geo.*,maps.geo.* - Tanpa resource setup — pakai
provider/default - Provider ditentukan otomatis by region
- Action:
geo-maps:*,geo-places:*,geo-routes:* - Direkomendasikan untuk semua project baru ✅
- Endpoint via resource:
maps.geo.*/maps/v0/maps/{name} - Wajib create Map/PlaceIndex/RouteCalculator dulu
- Provider dipilih manual saat create resource
- Action:
geo:GetMapTile,geo:SearchPlaceIndex*, dsb - Masih supported, tapi tidak untuk project baru ⚠️
Login & Buka Location Service
Login ke AWS Management Console, lalu:
-
1
Klik search bar di atas → ketik
Location Service -
2
Klik hasil pertama: Amazon Location Service
-
3
Kamu akan masuk ke dashboard Location Service
Pilih Region: Singapore (ap-southeast-1)
Ini langkah paling penting — region menentukan provider mana yang aktif. GrabMaps hanya tersedia di ap-southeast-1.
-
1
Cari dropdown region di pojok kanan atas AWS Console
-
2
Klik → pilih
Asia Pacific (Singapore) ap-southeast-1 -
3
Halaman akan refresh — pastikan indikator region sudah berubah
ap-southeast-1
public/images/tutorial/aws-key/step-3-region-selector.pngAWS Location Service belum tersedia di region Jakarta / Malaysia / Thailand. Data GrabMaps untuk seluruh SEA — 8 negara sampai jalan lokal — diserve dari region Singapore. Latency ~10-30ms tambahan dari negara SEA manapun, masih acceptable untuk maps app.
Region → Provider mapping
| Region Code | Location | Default Provider | Best For |
|---|---|---|---|
ap-southeast-1 |
🇸🇬 Singapore | GrabMaps ✅ | SEA (ID, MY, TH, VN, PH) |
us-east-1 |
🇺🇸 N. Virginia | HERE | US, Europe |
eu-central-1 |
🇩🇪 Frankfurt | HERE | Europe |
ap-southeast-3 |
🇮🇩 Jakarta | N/A (belum available) | — |
Buat API Key Baru
Sekarang kita create API Key yang akan digunakan aplikasi untuk memanggil AWS Location Service.
-
1
Di sidebar kiri, klik menu API keys
-
2
Klik tombol biru Create API key di kanan atas
-
3
Isi
Name: misalmy-grabmaps-key— nama bebas, cuma untuk identifikasi -
4
Description(optional): "API Key for GrabMaps Southeast Asia demo"
Kalau nanti punya multiple keys untuk beda project, kasih prefix jelas. Contoh: demo-jkt, prod-nasional, dev-tim-a.
Set Restrictions (Opsional tapi Recommended)
Batasi API Key supaya kalau bocor ke public, damage terkontrol.
Expiration Date
Set tanggal expired supaya key otomatis inactive setelah tanggal itu. Recommended:
- Development/Demo: 3-6 bulan
- Production: 1 tahun, rotasi rutin
- Public client-side: 90 hari max + Referer restriction
Referer Restriction
Kalau API Key dipakai di frontend (browser), tambahkan Referer restriction supaya cuma domain kamu yang bisa pakai.
# Contoh Referer patterns yang valid https://grabmap.test/* https://*.myapp.com/* https://localhost:*/* # untuk local development
Kalau di-set restrict ke example.com, API Key tidak akan jalan dari localhost. Untuk development, kasih pattern yang mencakup keduanya atau bikin key terpisah dev vs prod.
Resources & Actions — Pilih yang Kamu Butuh
Ini bagian inti — kamu tentukan action apa aja yang API Key ini boleh lakukan. AWS akan otomatis assign provider/default yang di region ap-southeast-1 = GrabMaps.
📍 Maps Service
- GetTile
- GetStyleDescriptor
- GetGlyphs
- GetSprites
🔍 Places Service
- SearchText
- Suggest
- ReverseGeocode
- GetPlace
🛣️ Routes Service
- CalculateRoutes
- CalculateRouteMatrix
Di v2 modern, kamu tidak perlu pilih provider manual. AWS otomatis pakai provider default per region. Di ap-southeast-1, provider/default = GrabMaps. Ini bedanya v2 dengan v0 legacy yang harus create Map/PlaceIndex resource dulu.
Prinsip least privilege — cuma centang action yang benar-benar dibutuhkan. Bisa selalu ditambah nanti via Edit.
Review & Create API Key
Sebelum submit, review satu-satu:
-
1
Region masih
ap-southeast-1? ✓ -
2
Semua ARN berakhiran provider/default? ✓
-
3
Actions yang di-check sesuai kebutuhan app? ✓
-
4
Klik Create API key
-
5
Copy value key yang muncul (format:
v1.public.eyJqdGki...)
Setelah tutup halaman, kamu tidak bisa lihat value key lagi. AWS hanya menampilkan value pertama kali. Kalau hilang, harus create key baru.
# Format API Key: v1.public.eyJqdGkiOiJhYmNkZWYxMi0zNDU2LTc4OTAtZ2hpai1rbG1ub3BxcnN0dXYifQ... # Simpan di tempat aman: export AWS_API_KEY="v1.public.eyJqdGki..." # Atau di file .env Laravel: AWS_API_KEY="v1.public.eyJqdGki..." AWS_REGION="ap-southeast-1"
Test API Key
Sekarang test key untuk pastikan permission benar dan data GrabMaps ke-return. Ada 3 cara:
🚀 Cara 1: Test via Web App Kita (paling gampang)
Buka /docs/aws-api → klik tombol 🔑 My Key di kanan atas → paste API Key + centang allowed actions → Save.
Otomatis semua operations di sidebar akan kasih indikator hijau (allowed) atau merah (denied). Bisa langsung Send Request untuk test permission real-time.
🐚 Cara 2: Test via curl (paling detail)
# Test Places Suggest (autocomplete) — any SEA city works curl -X POST "https://places.geo.ap-southeast-1.amazonaws.com/v2/suggest?key=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "QueryText": "hawker centre singapore", "MaxResults": 3, "BiasPosition": [103.8198, 1.3521], "Language": "en" }'
Kalau balik 200 + ResultItems yang berisi POI Asia Tenggara → ✅ SUCCESS
🗺️ Cara 3: Test Map Rendering
# Buka URL ini di browser — harus tampil tile map:
https://maps.geo.ap-southeast-1.amazonaws.com/v2/tiles/raster/13/6480/4033?key=YOUR_API_KEY
Kalau semua test lolos, API Key kamu siap untuk production. Data yang di-return adalah GrabMaps coverage untuk seluruh SEA.
Common causes:
- Action yang di-call belum di-tick saat create key
- Referer restriction terlalu ketat
- Region ARN di key beda dengan endpoint yang di-call
- Key sudah expired
Bonus: Setelah Ini Apa?
Kamu sudah punya API Key aktif. Berikut hal-hal yang biasanya dilakukan berikutnya untuk masuk ke tahap production:
Tim kami siap bantu proses integrasi API Key ke aplikasi kamu — dari POC sampai deployment production. Hubungi kami untuk konsultasi lebih lanjut.