기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 키를 생성하려면
-
Amazon Location 콘솔의 왼쪽 메뉴에서 API 키를 선택합니다.
-
API 키 페이지에서 API 키 생성을 선택합니다.
-
API 키 생성 페이지에서 다음 정보를 입력합니다.
-
이름 – API 키의 이름(예:ExampleKey
).
-
설명 – API 키에 대한 선택적 설명.
-
리소스 - 드롭다운에서이 API 키를 사용하여 액세스 권한을 부여할 Amazon Location 리소스를 선택합니다. 리소스 추가를 선택하여 두 개 이상의 리소스를 추가할 수 있습니다.
-
작업 – 이 API 키로 승인하려는 작업을 지정합니다. 선택한 각 리소스 유형과 일치하는 작업을 하나 이상 선택해야 합니다. 예를 들어, 장소 리소스를 선택한 경우 장소 작업에 있는 선택 항목 중 하나 이상을 선택해야 합니다.
-
만료 시간 – 선택적으로 API 키의 만료 날짜 및 시간을 추가할 수 있습니다. 자세한 내용은 API 키 모범 사례 단원을 참조하십시오.
-
참조자 - 선택적으로 API 키를 사용할 수 있는 도메인을 하나 이상 추가합니다. 예를 들어 API 키가 웹 사이트에서 실행되는 애플리케이션을 허용하는 example.com
경우 *.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
을 사용하여 나중에 키 값을 찾을 수도 있습니다. 다음 예제에서는 라는 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. 잠재적 영향을 최소화하려면 다음 모범 사례를 검토하세요.