

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 die Amazon Location 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 APIs aufrufen. Derselbe API-Schlüssel würde keine Berechtigungen zum Ändern oder Aktualisieren von Ressourcen oder zum Aufrufen von APIs gewähren, mit denen er nicht verknüpft ist.

Wenn Sie Amazon Location Service Service-APIs in Ihren Anwendungen aufrufen, führen Sie diesen Aufruf in der Regel als *authentifizierter Benutzer durch*, 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.

[Bewährte Methoden für API-Schlüssel](api-keys-best-practices.md)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_geoapikeys_CreateKey.html)
+ [DeleteKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_DeleteKey.html)
+ [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_DescribeKey.html)
+ [ListKeys](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_ListKeys.html)
+ [UpdateKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_UpdateKey.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 von Ihnen 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 [Bewährte Methoden für API-Schlüssel](api-keys-best-practices.md).
   + **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 APIs verwenden. 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_geoapikeys_CreateKey.html)Vorgang über die Amazon Location 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 haben`v1.public.a1b2c3d4...`.

Sie können die [DescribeKey](https://docs.aws.amazon.com/location/latest/APIReference/API_geoapikeys_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 ]

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

------