

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden Sie API-Schlüssel zur Authentifizierung
<a name="using-apikeys"></a>

**Anmerkung**  
**API-Schlüssel können nur mit Karten-, **Orts** - und **Routenressourcen** verwendet werden, und Sie können diese Ressourcen nicht ändern oder erstellen.** Wenn Ihre Anwendung Zugriff auf andere Ressourcen oder Aktionen für nicht authentifizierte Benutzer benötigt, können Sie Amazon Cognito verwenden, um den Zugriff zusammen mit oder anstelle von API-Schlüsseln bereitzustellen. Weitere Informationen finden Sie unter [Verwenden Sie Amazon Cognito zur Authentifizierung](authenticating-using-cognito.md).

*API-Schlüssel* sind Schlüsselwerte, die bestimmten Amazon Location Service Service-Ressourcen oder APIs in Ihren Ressourcen zugeordnet sind AWS-Konto, sowie bestimmten Aktionen, die Sie mit diesen Ressourcen ausführen können. Sie können einen API-Schlüssel in Ihrer Anwendung verwenden, um nicht authentifizierte Aufrufe an den Amazon-Standort APIs für diese Ressourcen zu tätigen. 

Wenn Sie beispielsweise einer Ressource, and/or der API, einen `GetPlace*` API-Schlüssel zuordnen, kann eine Anwendung, die diesen API-Schlüssel verwendet, bestimmte aufrufen. APIs Derselbe API-Schlüssel würde keine Berechtigungen zum Ändern oder Aktualisieren von Ressourcen oder Aufrufen gewähren, mit APIs denen er nicht verknüpft ist.

Wenn Sie Amazon Location Service APIs in Ihren Anwendungen aufrufen, tätigen Sie diesen Aufruf in der Regel als *authentifizierter Benutzer*, der berechtigt ist, die API-Aufrufe zu tätigen. Es gibt jedoch einige Fälle, in denen Sie nicht jeden Benutzer Ihrer Anwendung authentifizieren möchten. 

Beispielsweise möchten Sie möglicherweise, dass eine Webanwendung, die Ihren Unternehmensstandort anzeigt, für alle Benutzer der Website verfügbar ist, unabhängig davon, ob sie angemeldet sind oder nicht. In diesem Fall besteht eine Alternative darin, API-Schlüssel für die API-Aufrufe zu verwenden.

[Die wichtigsten bewährten Methoden für die API](#api-keys-best-practices)Weitere Informationen darüber, wann API-Schlüssel verwendet werden sollten, finden Sie unter.

Weitere Informationen zur Arbeit mit Schlüsseln mithilfe der Amazon Location Service API finden Sie in den folgenden Themen in der *Amazon Location Service API-Referenz*:
+ [CreateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_CreateKey.html)
+ [DeleteKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DeleteKey.html)
+ [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DescribeKey.html)
+ [ListKeys](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_ListKeys.html)

## Erstellen Sie einen API-Schlüssel für Amazon Location Service
<a name="create-api-key"></a>

Sie können einen API-Schlüssel über die Amazon Location Service Service-Konsole oder die Amazon Location API erstellen. AWS CLI Fahren Sie mit den unten angegebenen Verfahren fort.

------
#### [ Amazon Location console ]

**Um einen API-Schlüssel mit der Amazon Location Service Service-Konsole zu erstellen**

1. Wählen Sie in der [https://console.aws.amazon.com/location](https://console.aws.amazon.com/location) im linken Menü **API-Schlüssel** aus.

1. Wählen Sie auf der Seite mit den **API-Schlüsseln** die Option **API-Schlüssel erstellen** aus.

1. Geben Sie auf der Seite **API-Schlüssel erstellen** die folgenden Informationen ein:
   + **Name** — Ein Name für Ihren API-Schlüssel, z. `ExampleKey` B.
   + **Beschreibung** — Eine optionale Beschreibung für Ihren API-Schlüssel.
   + **Ressourcen** — Wählen Sie in der Dropdownliste die Amazon-Standortressourcen aus, auf die Sie mit diesem API-Schlüssel zugreifen möchten. Sie können mehr als eine Ressource hinzufügen, indem **Sie Ressource hinzufügen** wählen.
   + **Aktionen** — Geben Sie die Aktionen an, die Sie mit diesem API-Schlüssel autorisieren möchten. Sie müssen mindestens eine Aktion auswählen, die zu jedem ausgewählten Ressourcentyp passt. Wenn Sie beispielsweise eine Ortsressource ausgewählt haben, müssen Sie mindestens eine der Optionen unter **Places-Aktionen** auswählen.
   + **Ablaufzeit** — Fügen Sie optional ein Ablaufdatum und eine Ablaufzeit für Ihren API-Schlüssel hinzu. Weitere Informationen finden Sie unter [Die wichtigsten bewährten Methoden für die API](#api-keys-best-practices).
   + **Client-Einschränkungen** — Fügen Sie optional eine oder mehrere Webdomänen oder eine oder mehrere Android- oder Apple-Apps hinzu, in denen Sie den API-Schlüssel verwenden können. Wenn der API-Schlüssel beispielsweise die Ausführung einer Anwendung auf der Website ermöglichen soll`example.com`, können Sie ihn `*.example.com/` als zulässigen Referrer angeben.
   + **Tags** — Fügen Sie optional Tags zum API-Schlüssel hinzu.

1. Wählen Sie **API-Schlüssel erstellen**, um den API-Schlüssel zu erstellen.

1. Auf der Detailseite für den API-Schlüssel finden Sie Informationen zu dem API-Schlüssel, den Sie erstellt haben. Wählen Sie **API-Schlüssel anzeigen**, um den Schlüsselwert zu sehen, den Sie beim Aufrufen von Amazon Location verwenden APIs. Der Schlüsselwert wird das Format haben`v1.public.a1b2c3d4...`. 

------
#### [ AWS CLI ]

1. Verwenden Sie den Befehl [create-key](https://docs.aws.amazon.com/cli/latest/reference/location/create-key.html). Im folgenden Beispiel wird ein API-Schlüssel ohne Ablaufdatum und `ExampleKey` ohne Zugriff auf eine einzelne Kartenressource aufgerufen.

   ```
   aws location \
     create-key \
     --key-name ExampleKey \
     --restrictions '{"AllowActions":["geo-maps:*"],"AllowResources":["arn:aws:geo-maps:region::provider/default"]}' \
     --no-expiry
   ```

1. Die Antwort enthält den API-Schlüsselwert, der beim Zugriff auf Ressourcen in Ihren Anwendungen verwendet werden soll. Der Schlüsselwert wird das Format haben`v1.public.a1b2c3d4...`. Weitere Informationen zur Verwendung des API-Schlüssels zum Rendern von Karten finden Sie unter[Verwenden Sie einen API-Schlüssel, um eine Amazon Location API aufzurufen](#using-apikeys-in-api). Die Antwort auf create-key sieht wie folgt aus:

   ```
   {
       "Key": "v1.public.a1b2c3d4...",
       "KeyArn": "arn:aws:geo:region:accountId:api-key/ExampleKey",
       "KeyName": "ExampleKey",
       "CreateTime": "2023-02-06T22:33:15.693Z"
   }
   ```

1. Sie können ihn auch verwenden`describe-key`, um den Schlüsselwert zu einem späteren Zeitpunkt zu finden. Das folgende Beispiel zeigt, wie Sie einen API-Schlüssel mit dem Namen aufrufen `describe-key``ExampleKey`.

   ```
   aws location describe-key \
       --key-name ExampleKey
   ```

------
#### [ Amazon Location API ]

Verwenden Sie den [CreateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_CreateKey.html)Vorgang vom Amazon-Standort aus APIs. Das folgende Beispiel ist eine API-Anfrage zur Erstellung eines API-Schlüssels `ExampleKey` ohne Ablaufdatum und ohne Zugriff auf eine einzelne Kartenressource.

```
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"
    ]
  }
}
```

Die Antwort enthält den API-Schlüsselwert, der beim Zugriff auf Ressourcen in Ihren Anwendungen verwendet werden soll. Der Schlüsselwert wird das Format `v1.public.a1b2c3d4...` haben.

Sie können die [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_DescribeKey.html)API auch verwenden, um den Schlüsselwert für einen Schlüssel zu einem späteren Zeitpunkt zu ermitteln.

------

## Verwenden Sie einen API-Schlüssel, um eine Amazon Location API aufzurufen
<a name="using-apikeys-in-api"></a>

Nachdem Sie einen API-Schlüssel erstellt haben, können Sie den Schlüsselwert verwenden, um Amazon Location APIs in Ihrer Anwendung aufzurufen.

------
#### [ API ]

Diejenigen APIs , die API-Schlüssel unterstützen, haben einen zusätzlichen Parameter, der den API-Schlüsselwert annimmt. Wenn Sie beispielsweise die `GetPlace` API aufrufen, können Sie den [Schlüsselparameter](https://docs.aws.amazon.com/location/latest/APIReference/API_geoplaces_GetPlace.html) wie folgt eingeben

```
curl --request GET —url 'https://places.geo.eu-central-1.amazonaws.com/v2/place/{PLACEID}?key={APIKEY}&language=jp'
```

------
#### [ AWS CLI ]

Wenn Sie den `--key` Parameter verwenden, sollten Sie auch den `--no-sign-request` Parameter verwenden, um zu vermeiden, dass Sie mit Sig v4 signieren.

```
aws geo-places get-place --place-id $PLACEID --language jp --key $APIKEY
```

------
#### [ SDK (web) ]

Verwenden Sie folgenden Code:

```
<!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) ]

Verwenden Sie folgenden Code:

```
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) ]

Verwenden Sie folgenden Code:

```
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()
    }
}
```

------

## Beschränken Sie die Verwendung von API-Schlüsseln je nach Herkunft der Anfrage
<a name="restrict-usage-by-origin"></a>

Sie können API-Schlüssel mit Client-Einschränkungen konfigurieren, die den Zugriff auf bestimmte Domains oder mobile Anwendungen einschränken. Bei der Einschränkung nach Domänen werden Anfragen nur autorisiert, wenn der HTTP-Referer-Header mit dem von Ihnen angegebenen Wert übereinstimmt. Bei der Einschränkung durch eine Android- oder Apple-Anwendung werden Anfragen nur autorisiert, wenn die HTTP-Header-Felder der Anwendungs-ID mit den von Ihnen angegebenen Werten übereinstimmen.

Weitere Informationen finden Sie [ApiKeyRestrictions](https://docs.aws.amazon.com/location/latest/APIReference/API_geotags_ApiKeyRestrictions.html)in der *Amazon Location Service API-Referenz*.

**Identifikatoren für Android-Anwendungen:**
+ `X-Android-Package`:

  Eine eindeutige Kennung für Android-Anwendungen, die in der `build.gradle` App-Datei definiert ist und in der Regel einem umgekehrten Domain-Format folgt.

  Beispiel:

  `com.mydomain.appname`
+ `X-Android-Cert`:

  Der SHA-1-Hash des Signaturzertifikats, das zum Signieren der Android-APK verwendet wurde.

  Beispiel:

  `BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75`

**Apple-Anwendungskennungen:**
+ `X-Apple-Bundle-Id `:

  Eine eindeutige Kennung für Apple-Anwendungen (iOS, macOS usw.), die in den Apps definiert ist `Info.plist` und in der Regel einem Reverse-Domain-Format folgt.

  Beispiel:

  `com.mydomain.appname`

## Die wichtigsten bewährten Methoden für die API
<a name="api-keys-best-practices"></a>

API-Schlüssel enthalten einen *Klartextwert*, der den Zugriff auf eine oder mehrere Ressourcen oder APIs auf Ihre ermöglicht AWS-Konto. Wenn jemand Ihren API-Schlüssel kopiert, kann er auf dieselben Ressourcen zugreifen und APIs. Lesen Sie sich die folgenden bewährten Methoden durch, um die potenziellen Auswirkungen zu minimieren:
+ **Beschränken Sie den API-Schlüssel**

  Um die oben genannte Situation zu vermeiden, ist es am besten, Ihren API-Schlüssel einzuschränken. Wenn Sie den Schlüssel erstellen, können Sie die Domain, Android-App oder Apple-App angeben, in der der Schlüssel verwendet werden kann.
+ **Gültigkeitsdauer von API-Schlüsseln verwalten**

  Sie können API-Schlüssel erstellen, die unbegrenzt funktionieren. Wenn Sie jedoch einen temporären API-Schlüssel erstellen, API-Schlüssel regelmäßig rotieren oder einen vorhandenen API-Schlüssel widerrufen möchten, können Sie den *Ablauf des API-Schlüssels* verwenden.
  + Sie können die Ablaufzeit für einen API-Schlüssel festlegen, wenn Sie ihn erstellen oder aktualisieren.
  + Wenn ein API-Schlüssel seine Ablaufzeit erreicht, wird der Schlüssel automatisch deaktiviert. Inaktive Schlüssel können nicht mehr für Anfragen verwendet werden.
  + Sie können einen temporären Schlüssel in einen permanenten Schlüssel ändern, indem Sie die Ablaufzeit entfernen.
  + Sie können einen API-Schlüssel 90 Tage nach seiner Deaktivierung löschen.
  + Wenn Sie versuchen, einen API-Schlüssel zu deaktivieren, der in den letzten sieben Tagen verwendet wurde, werden Sie aufgefordert, zu bestätigen, dass Sie die Änderung vornehmen möchten. 

    Wenn Sie die Amazon Location Service API oder die verwenden AWS CLI, setzen Sie den `ForceUpdate` Parameter auf`true`, andernfalls erhalten Sie eine Fehlermeldung.