AWS Location Service v2 · GrabMaps · ap-southeast-1 v2

Setup AWS Location Service
dengan GrabMaps Provider

A step-by-step guide from zero to an active API Key ready for mapping across Southeast Asia — POI, routing, geocoding — all powered by GrabMaps.

0
Langkah
0
Menit
0
Service
0
Coding
Scroll
01

Prasyarat & Persiapan

~2 menit Mudah

Sebelum mulai, pastikan kamu punya beberapa hal berikut:

  1. 1
    AWS Account aktif

    Kalau belum punya, sign up gratis di aws.amazon.com/free. Free tier cukup untuk demo & development.

  2. 2
    Email verifikasi + Kartu kredit

    AWS wajibkan verifikasi payment method walaupun free tier. Tidak akan di-charge kalau usage di bawah limit gratis.

  3. 3
    Browser modern

    Chrome, Firefox, Edge, atau Safari versi terbaru. AWS Console pakai banyak JavaScript.

Free tier estimate (first 3 months)

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:

v2 Standalone (yang kita pakai)
v2
  • 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 ✅
v0 Legacy (tidak kita pakai)
v0
  • 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 ⚠️
02

Login & Buka Location Service

~1 menit Mudah

Login ke AWS Management Console, lalu:

  1. 1
    Klik search bar di atas → ketik Location Service
  2. 2
    Klik hasil pertama: Amazon Location Service
  3. 3
    Kamu akan masuk ke dashboard Location Service
Screenshot AWS Location Service Console — API Keys menu in the left sidebar
📍
Amazon Location Service · sidebar menu with API keys
📸 Real screenshot: Amazon Location Service Console — API keys menu in the sidebar
03

Pilih Region: Singapore (ap-southeast-1)

~30 detik Krusial

Ini langkah paling penting — region menentukan provider mana yang aktif. GrabMaps hanya tersedia di ap-southeast-1.

  1. 1
    Cari dropdown region di pojok kanan atas AWS Console
  2. 2
    Klik → pilih Asia Pacific (Singapore) ap-southeast-1
  3. 3
    Halaman akan refresh — pastikan indikator region sudah berubah
Screenshot AWS Console region selector showing Singapore ap-southeast-1 highlighted
🇸🇬
Region selector · Asia Pacific (Singapore) ap-southeast-1
Screenshot not yet uploaded — drop it at public/images/tutorial/aws-key/step-3-region-selector.png
📸 Real screenshot: AWS Console region dropdown — pick Asia Pacific (Singapore) ap-southeast-1
Kenapa Singapore, bukan Jakarta?

AWS 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)
04

Buat API Key Baru

~1 menit Mudah

Sekarang kita create API Key yang akan digunakan aplikasi untuk memanggil AWS Location Service.

  1. 1
    Di sidebar kiri, klik menu API keys
  2. 2
    Klik tombol biru Create API key di kanan atas
  3. 3
    Isi Name: misal my-grabmaps-key — nama bebas, cuma untuk identifikasi
  4. 4
    Description (optional): "API Key for GrabMaps Southeast Asia demo"
Screenshot Create API key — Name and Description form in AWS Console
Create API key · form with Name & Description fields
📸 Real screenshot: Create API key form — just fill Name & Description
Naming convention

Kalau nanti punya multiple keys untuk beda project, kasih prefix jelas. Contoh: demo-jkt, prod-nasional, dev-tim-a.

05

Set Restrictions (Opsional tapi Recommended)

~1 menit Security

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
Screenshot Client restrictions and expiration options in AWS Console
Restrictions · Referer allowlist & expiration date
📸 Real screenshot: Client restrictions & expiration options
Trade-off Referer

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.

06

Resources & Actions — Pilih yang Kamu Butuh

~2 menit Yang Paling Penting

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

arn:aws:geo-maps:ap-southeast-1::provider/default
Actions
  • GetTile
  • GetStyleDescriptor
  • GetGlyphs
  • GetSprites

🔍 Places Service

arn:aws:geo-places:ap-southeast-1::provider/default
Actions
  • SearchText
  • Suggest
  • ReverseGeocode
  • GetPlace

🛣️ Routes Service

arn:aws:geo-routes:ap-southeast-1::provider/default
Actions
  • CalculateRoutes
  • CalculateRouteMatrix
Kenapa "default" di ARN?

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.

Tips: minimal actions

Prinsip least privilege — cuma centang action yang benar-benar dibutuhkan. Bisa selalu ditambah nanti via Edit.

07

Review & Create API Key

~30 detik Final

Sebelum submit, review satu-satu:

  1. 1
    Region masih ap-southeast-1? ✓
  2. 2
    Semua ARN berakhiran provider/default? ✓
  3. 3
    Actions yang di-check sesuai kebutuhan app? ✓
  4. 4
    Klik Create API key
  5. 5
    Copy value key yang muncul (format: v1.public.eyJqdGki...)
Screenshot AWS Console showing newly created API key with Show/Copy button
API key created · click Show API key value then Copy
📸 Real screenshot: Detail page — click "Show API key value" then Copy immediately
PENTING: Simpan key value SEKARANG

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"
08

Test API Key

~2 menit Verifikasi

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
🎉 Selamat! API Key siap dipakai!

Kalau semua test lolos, API Key kamu siap untuk production. Data yang di-return adalah GrabMaps coverage untuk seluruh SEA.

Kalau gagal (403 explicit deny)

Common causes:

  1. Action yang di-call belum di-tick saat create key
  2. Referer restriction terlalu ketat
  3. Region ARN di key beda dengan endpoint yang di-call
  4. Key sudah expired

Bonus: Setelah Ini Apa?

Referensi cepat

Pertanyaan yang Sering Ditanya

❓ What makes GrabMaps stand out across Southeast Asia?
GrabMaps is built from real operational data across Grab's Southeast Asia footprint — millions of driver-partners operating daily across Singapore, Malaysia, Thailand, Indonesia, Vietnam, the Philippines, Cambodia, and Myanmar. The result: complete POI coverage from street vendors to enterprise venues, alley-level roads, accurate hyper-local addresses, and regularly refreshed traffic data. Perfect for logistics, ride-hailing, delivery, and on-demand services that need genuine SEA-native coverage.
❓ Why the Singapore region for the whole of SEA?
AWS Location Service serves GrabMaps for the entire Southeast Asia region from ap-southeast-1 (Singapore). Other regional AWS regions (Jakarta, Malaysia, Thailand) don't yet host Location Service — but latency from any SEA country to Singapore is only ~10-30ms, negligible for maps applications.
❓ Which countries does GrabMaps cover?
GrabMaps provides detailed coverage for 8 Southeast Asian countries: 🇸🇬 Singapore, 🇲🇾 Malaysia, 🇹🇭 Thailand, 🇮🇩 Indonesia, 🇻🇳 Vietnam, 🇵🇭 Philippines, 🇰🇭 Cambodia, and 🇲🇲 Myanmar. Data extends down to local roads, back alleys, and small POIs (restaurants, retail, public services, schools, hospitals, ATMs). Updates are continuous, driven by live Grab operations and community feedback across each country.
❓ What's the difference between provider/default and provider/grab?
In modern v2, ARNs use provider/default — this auto-points to the default provider for the selected region. In ap-southeast-1 that means GrabMaps automatically. The provider/grab format only appears in v0 Legacy which we don't use. Just follow the v2 flow and you get GrabMaps out of the box.
❓ Can I test the key without installing anything?
Yes. Open /docs/aws-api on this site — the My Key Inspector feature lets you paste your key, tick allowed actions, and hit Send Request in each panel to test permissions in real time. You can immediately see GrabMaps responses for queries anywhere in Southeast Asia.
❓ What if my key leaks publicly?
Quick steps: Open AWS Console → Location Service → API keys → pick the leaked key → Delete. Create a new key with Referer restrictions + short expiration. Set up a CloudWatch alarm to monitor abnormal request spikes. Best practice: use separate keys per environment (dev / staging / production) so a leak's blast radius stays contained.
❓ Why do I get 403 even though everything is ticked?
Check 4 things:
  1. Action naming: make sure you're using geo-maps:* / geo-places:* / geo-routes:* (v2), not geo:* (v0 legacy)
  2. Region ARN: the key's ARN must be in ap-southeast-1 to get GrabMaps
  3. Referer: if restrictions exist, the browser must come from a matching domain
  4. Expiration: check the expiry date
❓ Need custom integration or a POC for your organization?
We're ready to help from POC through production — including custom integration, maps architecture consulting, and integration with your internal systems (WMS, TMS, dispatch, fleet management, etc.). Reach out for a scheduled demo and a discussion around your organization's specific needs across any SEA market.

Ready to Power Richer Maps Across Southeast Asia?

Kamu sudah selesai tutorial. Sekarang paste API Key ke aplikasi, atau explore reference lengkap kita.

Buka API Reference Coba Live Demo