API 키를 사용하여 인증 - Amazon Location Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

API 키를 사용하여 인증

참고

API 키는 , 배치라우팅 리소스에만 사용할 수 있으며 이러한 리소스를 수정하거나 생성할 수 없습니다. 애플리케이션에서 인증되지 않은 사용자를 위해 다른 리소스 또는 작업에 액세스해야 하는 경우 Amazon Cognito를 사용하여 API 키와 함께 또는 API 키 대신 액세스를 제공할 수 있습니다. 자세한 내용은 Amazon Cognito를 사용하여 인증 단원을 참조하십시오.

API 키는의 특정 Amazon Location Service 리소스 또는 API AWS 계정및 해당 리소스에 대해 수행할 수 있는 특정 작업과 연결된 키 값입니다. 애플리케이션의 API 키를 사용하여 해당 리소스에 대해 Amazon Location API를 인증되지 않은 상태로 호출할 수 있습니다.

예를 들어 API 키를 리소스 및/또는 GetPlace* API와 연결하면 해당 API 키를 사용하는 애플리케이션이 특정 APIs를 호출할 수 있습니다. 동일한 API 키는 연결되지 않은 리소스 또는 호출 APIs를 변경하거나 업데이트할 수 있는 권한을 부여하지 않습니다.

애플리케이션에서 Amazon Location Service API를 호출할 때에는 일반적으로 API 호출 권한이 있는 인증된 사용자로서 이 호출을 수행합니다. 그러나 애플리케이션의 모든 사용자를 인증하지 않으려는 경우가 있습니다.

예를 들어, 웹 사이트를 사용하는 모든 사람이 로그인 여부에 관계없이 비즈니스 위치를 보여주는 웹 애플리케이션을 사용할 수 있도록 하고 싶을 수 있습니다. 이 경우 한 가지 대안은 API 키를 사용하여 API를 호출하는 것입니다.

API 키 사용 시기에 대한 자세한 내용은 API 키 모범 사례 섹션을 참조하세요.

Amazon Location Service용 API 키 생성

Amazon Location Service 콘솔 AWS CLI또는 Amazon Location API를 통해 API 키를 생성할 수 있습니다. 아래에서 적절한 절차를 계속 진행합니다.

Amazon Location console
Amazon Location Service 콘솔을 사용하여 API 키를 생성하려면
  1. Amazon Location 콘솔의 왼쪽 메뉴에서 API 키를 선택합니다.

  2. API 키 페이지에서 API 키 생성을 선택합니다.

  3. API 키 생성 페이지에서 다음 정보를 입력합니다.

    • 이름 – API 키의 이름(예:ExampleKey).

    • 설명 – API 키에 대한 선택적 설명.

    • 리소스 - 드롭다운에서이 API 키를 사용하여 액세스 권한을 부여할 Amazon Location 리소스를 선택합니다. 리소스 추가를 선택하여 두 개 이상의 리소스를 추가할 수 있습니다.

    • 작업 – 이 API 키로 승인하려는 작업을 지정합니다. 선택한 각 리소스 유형과 일치하는 작업을 하나 이상 선택해야 합니다. 예를 들어, 장소 리소스를 선택한 경우 장소 작업에 있는 선택 항목 중 하나 이상을 선택해야 합니다.

    • 만료 시간 – 선택적으로 API 키의 만료 날짜 및 시간을 추가할 수 있습니다. 자세한 내용은 API 키 모범 사례 단원을 참조하십시오.

    • 참조자 - 선택적으로 API 키를 사용할 수 있는 도메인을 하나 이상 추가합니다. 예를 들어 API 키가 웹 사이트에서 실행되는 애플리케이션을 허용하는 example.com경우 *.example.com/를 허용된 참조자로 넣을 수 있습니다.

    • 태그 – 선택적으로 API 키에 태그를 추가할 수 있습니다.

  4. API 키 생성을 선택하여 API 키를 생성합니다.

  5. API 키의 세부 정보 페이지에서, 생성한 API 키에 대한 정보를 볼 수 있습니다. Amazon 위치 API를 호출할 때 사용하는 키 값을 보려면 API 키 표시를 선택합니다. 키 값의 형식은 v1.public.a1b2c3d4...과 같습니다.

AWS CLI
  1. 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
  2. 응답에는 애플리케이션의 리소스에 액세스할 때 사용할 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" }
  3. describe-key을 사용하여 나중에 키 값을 찾을 수도 있습니다. 다음 예제에서는 라는 API 키describe-key에서를 호출하는 방법을 보여줍니다ExampleKey.

    aws location describe-key \ --key-name ExampleKey
Amazon Location API

Amazon Location APIs에서 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 키 값을 취하는 추가 파라미터가 있습니다. 예를 들어, GetPlace API를 호출하는 경우 다음과 같이 파라미터를 입력할 수 있습니다.

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@4.x/dist/maplibre-gl.css' /> <script src='https://unpkg.com/maplibre-gl@4.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() } }

API 키 모범 사례

API 키에는의 하나 이상의 리소스 또는 APIs에 대한 액세스 권한을 부여하는 일반 텍스트 값이 포함됩니다 AWS 계정. 누군가 API 키를 복사하면 동일한 리소스 및 APIs. 잠재적 영향을 최소화하려면 다음 모범 사례를 검토하세요.

  • API 키 제한

    위의 상황을 방지하려면 API 키를 제한하는 것이 가장 좋습니다. 키를 생성할 때 키를 사용할 수 있는 도메인 또는 참조자를 지정할 수 있습니다.

  • API 키 수명 관리

    무기한으로 작동하는 API 키를 생성할 수 있습니다. 하지만 임시 API 키를 생성하거나 정기적으로 API 키를 교체하거나 기존 API 키를 취소하려는 경우에는 API 키 만료를 사용할 수 있습니다.

    • API 키를 생성하거나 업데이트할 때 API 키의 만료 시간을 설정할 수 있습니다.

    • API 키가 만료 시간에 도달하면 키가 자동으로 비활성화됩니다. 비활성 키는 더 이상 요청에 사용할 수 없습니다.

    • 만료 시간을 제거하여 임시 키를 영구 키로 변경할 수 있습니다.

    • API 키를 비활성화한 후 90일이 지나면 삭제할 수 있습니다.

    • 지난 7일 이내에 사용된 API 키를 비활성화하려고 하면 변경 여부를 확인하라는 메시지가 표시됩니다.

      Amazon Location Service API 또는를 사용하는 경우 ForceUpdate 파라미터를 로 AWS CLI설정합니다. true그렇지 않으면 오류가 발생합니다.