기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
API 키를 사용하여 인증
참고
API 키는 지도, 장소, 경로 리소스에만 사용할 수 있으며 이러한 리소스를 수정하거나 생성할 수 없습니다. 애플리케이션에서 인증되지 않은 사용자를 위해 다른 리소스 또는 작업에 액세스해야 하는 경우 Amazon Cognito를 사용하여 API 키와 함께 또는 API 키 대신 액세스를 제공할 수 있습니다. 자세한 내용은 Amazon Cognito를 사용하여 인증 단원을 참조하십시오.
API 키는의 특정 Amazon Location Service 리소스 또는 API AWS 계정및 해당 리소스에 대해 수행할 수 있는 특정 작업과 연결된 키 값입니다. 애플리케이션의 API 키를 사용하여 해당 리소스에 대해 Amazon Location API를 인증되지 않은 상태로 호출할 수 있습니다.
예를 들어 API 키를 리소스 및/또는 GetPlace* API와 연결하면 해당 API 키를 사용하는 애플리케이션이 특정 API를 호출할 수 있습니다. 동일한 API 키는 연결되지 않은 리소스 또는 호출 API를 변경하거나 업데이트할 수 있는 권한을 부여하지 않습니다.
애플리케이션에서 Amazon Location Service API를 호출할 때에는 일반적으로 API 호출 권한이 있는 인증된 사용자로서 이 호출을 수행합니다. 그러나 경우에 따라 애플리케이션의 모든 사용자를 인증하는 것을 원하지 않을 수도 있습니다.
예를 들어, 웹 사이트를 사용하는 모든 사람이 로그인 여부에 관계없이 비즈니스 위치를 보여주는 웹 애플리케이션을 사용할 수 있도록 하고 싶을 수 있습니다. 이 경우 한 가지 대안은 API 키를 사용하여 API를 호출하는 것입니다.
API 키 사용 시기에 대한 자세한 내용은 API 키 모범 사례 섹션을 참조하세요.
Amazon Location Service API를 사용한 키 작업에 대한 자세한 내용은 Amazon Location Service API 참조의 다음 주제를 참조하세요.
Amazon Location Service용 API 키 생성
Amazon Location Service 콘솔 AWS CLI또는 Amazon Location API를 통해 API 키를 생성할 수 있습니다. 아래에서 적절한 절차를 계속 진행합니다.
- Amazon Location console
-
Amazon Location Service 콘솔을 사용하여 API 키를 생성하려면
-
Amazon Location 콘솔
의 왼쪽 메뉴에서 API 키를 선택합니다. -
API 키 페이지에서 API 키 생성을 선택합니다.
-
API 키 생성 페이지에서 다음 정보를 입력합니다.
-
이름 – API 키의 이름(예:
ExampleKey). -
설명 – API 키에 대한 선택적 설명.
-
리소스 – 드롭다운에서 이 API 키로 액세스 권한을 부여할 Amazon Location 리소스를 선택합니다. 리소스 추가를 선택하여 두 개 이상의 리소스를 추가할 수 있습니다.
-
작업 – 이 API 키로 승인하려는 작업을 지정합니다. 선택한 각 리소스 유형과 일치하는 작업을 하나 이상 선택해야 합니다. 예를 들어, 장소 리소스를 선택한 경우 장소 작업에 있는 선택 항목 중 하나 이상을 선택해야 합니다.
-
만료 시간 – 선택적으로 API 키의 만료 날짜 및 시간을 추가할 수 있습니다. 자세한 내용은 API 키 모범 사례 단원을 참조하십시오.
-
클라이언트 제한 - 선택적으로 API 키를 사용할 수 있는 하나 이상의 웹 도메인 또는 하나 이상의 Android 또는 Apple 앱을 추가합니다. 예를 들어,
example.com웹 사이트에서 실행되는 애플리케이션을 허용하는 것이 API 키인 경우*.example.com/을 허용된 리퍼러로 지정할 수 있습니다. -
태그 – 선택적으로 API 키에 태그를 추가할 수 있습니다.
-
-
API 키 생성을 선택하여 API 키를 생성합니다.
-
API 키의 세부 정보 페이지에서, 생성한 API 키에 대한 정보를 볼 수 있습니다. Amazon 위치 API를 호출할 때 사용하는 키 값을 보려면 API 키 표시를 선택합니다. 키 값의 형식은
v1.public.과 같습니다.a1b2c3d4...
-
- AWS CLI
-
-
create-key 명령을 사용합니다. 다음 예에서는 만료일이 없고 단일 맵 리소스에 액세스할 수 있는
ExampleKey라는 API 키를 생성합니다.aws location \ create-key \ --key-name ExampleKey \ --restrictions '{"AllowActions":["geo-maps:*"],"AllowResources":["arn:aws:geo-maps:region::provider/default"]}' \ --no-expiry -
응답에는 애플리케이션의 리소스에 액세스할 때 사용할 API 키 값이 포함됩니다. 키 값의 형식은
v1.public.a1b2c3d4...과 같습니다. API 키를 사용하여 맵을 렌더링하는 방법에 대한 자세한 내용은 API 키를 사용하여 Amazon Location API를 직접적으로 호출합니다.을 참조하세요. create-key에 대한 응답은 다음과 같습니다.{ "Key": "v1.public.a1b2c3d4...", "KeyArn": "arn:aws:geo:region:accountId:api-key/ExampleKey", "KeyName": "ExampleKey", "CreateTime": "2023-02-06T22:33:15.693Z" } -
describe-key을 사용하여 나중에 키 값을 찾을 수도 있습니다. 다음 예는ExampleKey라는 API 키를describe-key호출하는 방법을 보여줍니다.aws location describe-key \ --key-name ExampleKey
-
- Amazon Location API
-
Amazon Location API에서 CreateKey 작업을 사용합니다. 다음 예는 만료일이 없는
ExampleKey라는 API 키를 생성하고 단일 맵 리소스에 액세스하기 위한 API 요청입니다.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" ] } }응답에는 애플리케이션의 리소스에 액세스할 때 사용할 API 키 값이 포함됩니다. 키 값의 형식은
v1.public.a1b2c3d4...과 같습니다.DescribeKey API를 사용하여 나중에 키의 키 값을 찾을 수도 있습니다.
API 키를 사용하여 Amazon Location API를 직접적으로 호출합니다.
API 키를 생성한 후 키 값을 사용하여 애플리케이션의 Amazon Location API를 호출할 수 있습니다.
- API
-
API 키를 지원하는 API에는 API 키 값을 취하는 추가 파라미터가 있습니다. 예를 들어,
GetPlaceAPI를 호출하는 경우 다음과 같이 키 파라미터를 입력할 수 있습니다.curl --request GET —url 'https://places.geo.eu-central-1.amazonaws.com/v2/place/{PLACEID}?key={APIKEY}&language=jp' - AWS CLI
-
--key파라미터를 사용할 때 Sig v4로 서명하지 않도록--no-sign-request파라미터도 사용해야 합니다.aws geo-places get-place --place-id $PLACEID--language jp --key $APIKEY - SDK (web)
-
다음 코드를 사용합니다.
<!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)
-
다음 코드를 사용합니다.
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)
-
다음 코드를 사용합니다.
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() } }