Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan kunci API untuk mengautentikasi
Kunci API hanya tersedia untuk digunakan dengan peta, tempat, dan sumber daya rute, dan Anda tidak dapat memodifikasi atau membuat sumber daya tersebut. Jika aplikasi Anda memerlukan akses ke sumber daya atau tindakan lain untuk pengguna yang tidak diautentikasi, Anda dapat menggunakan Amazon Cognito untuk menyediakan akses bersama dengan, atau bukan, kunci API. Untuk informasi selengkapnya, lihat Gunakan Amazon Cognito untuk mengautentikasi.
Kunci API adalah nilai kunci yang dikaitkan dengan sumber daya atau API Amazon Location Service tertentu di Anda Akun AWS, dan tindakan spesifik yang dapat Anda lakukan pada sumber daya tersebut. Anda dapat menggunakan kunci API dalam aplikasi Anda untuk membuat panggilan yang tidak diautentikasi ke Amazon Location API untuk sumber daya tersebut.
Misalnya, jika Anda mengaitkan kunci API dengan sumber daya and/or GetPlace* API, maka aplikasi yang menggunakan kunci API tersebut akan dapat memanggil API tertentu. Kunci API yang sama tidak akan memberikan izin untuk mengubah atau memperbarui sumber daya apa pun atau memanggil API yang tidak terkait dengannya.
Saat memanggil Amazon Location Service API di aplikasi, Anda biasanya membuat panggilan ini sebagai pengguna yang diautentikasi yang diberi wewenang untuk melakukan panggilan API. Namun, ada beberapa kasus di mana Anda tidak ingin mengautentikasi setiap pengguna aplikasi Anda.
Misalnya, Anda mungkin ingin aplikasi web yang menunjukkan lokasi bisnis Anda tersedia bagi siapa saja yang menggunakan situs web, apakah mereka masuk atau tidak. Dalam hal ini, salah satu alternatifnya adalah menggunakan kunci API untuk melakukan panggilan API.
Lihat Praktik terbaik untuk kunci API untuk informasi tambahan tentang kapan menggunakan kunci API.
Untuk informasi selengkapnya tentang bekerja dengan kunci menggunakan Amazon Location Service API, lihat topik berikut di Referensi API Amazon Location Service:
Membuat kunci API untuk Amazon Location Service
Anda dapat membuat kunci API melalui Amazon Location Service console AWS CLI, atau Amazon Location API. Lanjutkan dengan prosedur yang sesuai di bawah ini.
- Amazon Location console
-
Untuk membuat kunci API menggunakan konsol Amazon Location Service
-
Di konsol Lokasi Amazon, pilih kunci API dari menu sebelah kiri.
-
Pada halaman kunci API, pilih Buat kunci API.
-
Pada halaman Create API key, isi informasi berikut:
-
Nama - Nama untuk kunci API Anda, sepertiExampleKey.
-
Deskripsi — Deskripsi opsional untuk kunci API Anda.
-
Sumber Daya — Di menu tarik-turun, pilih sumber daya Lokasi Amazon untuk diberikan akses dengan kunci API ini. Anda dapat menambahkan lebih dari satu sumber daya dengan memilih Tambah sumber daya.
-
Tindakan - Tentukan tindakan yang ingin Anda otorisasi dengan kunci API ini. Anda harus memilih setidaknya satu tindakan untuk mencocokkan setiap jenis sumber daya yang telah Anda pilih. Misalnya, jika Anda memilih sumber daya tempat, Anda harus memilih setidaknya salah satu pilihan di bawah Tindakan Tempat.
-
Waktu kedaluwarsa - Secara opsional, tambahkan tanggal kedaluwarsa dan waktu untuk kunci API Anda. Untuk informasi selengkapnya, lihat Praktik terbaik untuk kunci API.
-
Pembatasan klien — Secara opsional, tambahkan satu atau beberapa domain web atau satu atau beberapa aplikasi Android atau Apple tempat Anda dapat menggunakan kunci API. Misalnya, jika kunci API adalah untuk mengizinkan aplikasi berjalan di situs webexample.com, maka Anda dapat menempatkan *.example.com/ sebagai perujuk yang diizinkan.
-
Tag - Secara opsional, tambahkan tag ke kunci API.
-
Pilih Buat kunci API untuk membuat kunci API.
-
Pada halaman detail untuk kunci API, Anda dapat melihat informasi tentang kunci API yang telah Anda buat. Pilih Tampilkan kunci API untuk melihat nilai kunci yang Anda gunakan saat memanggil Amazon Location API. Nilai kunci akan memiliki formatv1.public.a1b2c3d4....
- AWS CLI
-
-
Gunakan perintah create-key. Contoh berikut membuat kunci API yang dipanggil tanpa tanggal ExampleKey kedaluwarsa dan akses ke sumber daya peta tunggal.
aws location \
create-key \
--key-name ExampleKey \
--restrictions '{"AllowActions":["geo-maps:*"],"AllowResources":["arn:aws:geo-maps:region::provider/default"]}' \
--no-expiry
-
Responsnya mencakup nilai kunci API yang akan digunakan saat mengakses sumber daya di aplikasi Anda. Nilai kunci akan memiliki formatv1.public.a1b2c3d4.... Untuk mempelajari selengkapnya tentang menggunakan kunci API untuk merender peta, lihatMenggunakan kunci API untuk memanggil Amazon Location API. Respons terhadap create-key terlihat seperti berikut:
{
"Key": "v1.public.a1b2c3d4...",
"KeyArn": "arn:aws:geo:region:accountId:api-key/ExampleKey",
"KeyName": "ExampleKey",
"CreateTime": "2023-02-06T22:33:15.693Z"
}
-
Anda juga dapat menggunakan describe-key untuk menemukan nilai kunci di lain waktu. Contoh berikut menunjukkan cara memanggil describe-key kunci API bernamaExampleKey.
aws location describe-key \
--key-name ExampleKey
- Amazon Location API
-
Gunakan CreateKeyoperasi dari Amazon Location API. Contoh berikut adalah permintaan API untuk membuat kunci API yang dipanggil tanpa tanggal ExampleKey kedaluwarsa dan akses ke sumber daya peta tunggal.
POST /metadata/v0/keys HTTP/1.1
Content-type: application/json
{
"KeyName": "ExampleKey",
"NoExpiry": true,
"Restrictions": {
"AllowActions": [
"geo-places:*",
"geo-routes:*",
"geo-maps:*"
],
"AllowResources": [
"arn:aws:geo-places:Region::provider/default",
"arn:aws:geo-routes:Region::provider/default",
"arn:aws:geo-maps:Region::provider/default"
]
}
}
Responsnya mencakup nilai kunci API yang akan digunakan saat mengakses sumber daya di aplikasi Anda. Nilai kunci akan memiliki formatv1.public.a1b2c3d4....
Anda juga dapat menggunakan DescribeKeyAPI untuk menemukan nilai kunci untuk kunci di lain waktu.
Menggunakan kunci API untuk memanggil Amazon Location API
Setelah membuat kunci API, Anda dapat menggunakan nilai kunci untuk melakukan panggilan ke Amazon Location API di aplikasi Anda.
- API
-
API yang mendukung kunci API memiliki parameter tambahan yang mengambil nilai kunci API. Misalnya, jika Anda memanggil GetPlace API, Anda dapat mengisi parameter kunci, sebagai berikut
curl --request GET —url 'https://places.geo.eu-central-1.amazonaws.com/v2/place/{PLACEID}?key={APIKEY}&language=jp'
- AWS CLI
-
Bila Anda menggunakan --key parameter, Anda juga harus menggunakan --no-sign-request parameter, untuk menghindari penandatanganan dengan Sig v4.
aws geo-places get-place --place-id $PLACEID --language jp --key $APIKEY
- SDK (web)
-
Gunakan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Display a map</title>
<meta property="og:description" content="Initialize a map in an HTML element with MapLibre GL JS." />
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel='stylesheet' href='https://unpkg.com/maplibre-gl@5.x/dist/maplibre-gl.css' />
<script src='https://unpkg.com/maplibre-gl@5.x/dist/maplibre-gl.js'></script>
<style>
body { margin: 0; }
#map { height: 100vh; }
</style>
</head>
<body>
<div id="map"></div>
<script>
const apiKey = "<api key>"; // check how to create api key for Amazon Location
const mapStyle = "Standard"; // eg. Standard, Monochrome, Hybrid, Satellite
const awsRegion = "eu-central-1"; // eg. us-east-2, us-east-1, us-west-2, ap-south-1, ap-southeast-1, ap-southeast-2, ap-northeast-1, ca-central-1, eu-central-1, eu-west-1, eu-west-2, eu-south-2, eu-north-1, sa-east-1
const styleUrl = `https://maps.geo.${awsRegion}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${apiKey}`;
const map = new maplibregl.Map({
container: 'map', // container id
style: styleUrl, // style URL
center: [25.24,36.31], // starting position [lng, lat]
zoom: 2, // starting zoom
});
</script>
</body>
</html>
- SDK (iOS, Swift)
-
Gunakan kode berikut:
import UIKit
import MapLibre
class ViewController: UIViewController {
let apiKey = "Enter your API key" // The previously-created API Key to use
let regionName = "Enter your region name" // The service region - us-east-1, ap-south-1, etc
var mapView: MLNMapView!
override func viewDidLoad() {
super.viewDidLoad()
loadMap()
}
func loadMap() {
let styleName = "Standard" // The map style - Standard, Monochrome, Hybrid, Satellite
let colorName = "Light" // The color scheme - Light, Dark
// The Amazon Location Service map style URL that MapLibre will use to render the maps.
let styleURL = URL(string: "https://maps.geo.\(regionName).amazonaws.com/v2/styles/\(styleName)/descriptor?key=\(apiKey)&color-scheme=\(colorName)")
// Initialize MapLibre
mapView = MLNMapView(frame: view.bounds)
mapView.styleURL = styleURL
mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
// Set the starting camera position and zoom level for the map
mapView.setCenter(CLLocationCoordinate2D(latitude: 49.246559, longitude: -123.063554), zoomLevel: 10, animated: false)
view.addSubview(mapView!)
}
}
- SDK (Android, Kotlin)
-
Gunakan kode berikut:
class MapActivity : Activity(), OnMapReadyCallback {
private lateinit var mBinding: ActivityMapBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initializeMap(savedInstanceState)
}
private fun initializeMap(savedInstanceState: Bundle?) {
// Init MapLibre
// See the MapLibre Getting Started Guide for more details
// https://maplibre.org/maplibre-native/docs/book/android/getting-started-guide.html
MapLibre.getInstance(this@MapActivity)
mBinding = ActivityMapBinding.inflate(layoutInflater)
setContentView(mBinding.root)
mBinding.mapView.onCreate(savedInstanceState)
mBinding.mapView.getMapAsync(this)
}
override fun onMapReady(mapLibreMap: MapLibreMap) {
mapLibreMap.setStyle(Style.Builder().fromUri(getMapUrl())) {
// Set the starting camera position
mapLibreMap.cameraPosition = CameraPosition.Builder().target(LatLng(49.246559, -123.063554)).zoom(10.0).build()
mapLibreMap.uiSettings.isLogoEnabled = false
mapLibreMap.uiSettings.attributionGravity = Gravity.BOTTOM or Gravity.END
mapLibreMap.uiSettings.setAttributionDialogManager(AttributionDialogManager(this, mapLibreMap))
}
}
// Return the Amazon Location Service map style URL
// MapLibre will use this to render the maps.
// awsRegion: The service region - us-east-1, ap-south-1, etc
// mapStyle: The map style - Standard, Monochrome, Hybrid, Satellite
// API_KEY: The previously-created API Key to use
// colorName: The color scheme to use - Light, Dark
private fun getMapUrl() =
"https://maps.geo.${getString(R.string.awsRegion)}.amazonaws.com/v2/styles/${getString(R.string.mapStyle)}/descriptor?key=${BuildConfig.API_KEY}&color-scheme=${getString(R.string.colorName)}"
override fun onStart() {
super.onStart()
mBinding.mapView.onStart()
}
override fun onResume() {
super.onResume()
mBinding.mapView.onResume()
}
override fun onPause() {
super.onPause()
mBinding.mapView.onPause()
}
override fun onStop() {
super.onStop()
mBinding.mapView.onStop()
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
mBinding.mapView.onSaveInstanceState(outState)
}
override fun onLowMemory() {
super.onLowMemory()
mBinding.mapView.onLowMemory()
}
override fun onDestroy() {
super.onDestroy()
mBinding.mapView.onDestroy()
}
}