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.
Erstellen Sie eine private API
Bevor Sie einen privaten Endpunkt erstellenAPI, erstellen Sie zunächst einen VPC Endpunkt für API Gateway. Als Nächstes erstellen Sie Ihren privaten API und fügen ihm eine Ressourcenrichtlinie hinzu. Optional können Sie Ihren VPC Endpunkt Ihrem privaten zuordnenAPI, um den Aufruf Ihres API zu vereinfachen. Schließlich stellen Sie Ihre API bereit.
In den folgenden Verfahren wird beschrieben, wie Sie dies erreichen können. Sie können eine private Datei REST API mit dem AWS Management Console, AWS CLI oder einem erstellen AWS SDK.
Voraussetzungen
Um diese Schritte ausführen zu können, müssen Sie eine vollständig konfigurierte Version habenVPC. Informationen zum Erstellen eines VPC finden Sie unter VPCNur erstellen im VPCAmazon-Benutzerhandbuch. Um alle empfohlenen Schritte bei der Erstellung Ihres zu befolgenVPC, aktivieren Sie die Option PrivatDNS. Auf diese Weise können Sie Ihre API innerhalb von aufrufen, VPC ohne den Host oder x-apigw-api-id
Header übergeben zu müssen.
Um private zu aktivierenDNS, VPC müssen die enableDnsHostnames
Attribute enableDnsSupport
und von Ihrem auf true
gesetzt sein. Weitere Informationen finden Sie unter DNSSupport in Ihrem VPC und Aktualisieren des DNS Support für Ihren VPC.
Schritt 1: Erstellen Sie einen VPC Endpunkt für API Gateway in Ihrem VPC
Das folgende Verfahren zeigt, wie Sie einen VPC Endpunkt für API Gateway erstellen. Um einen VPC Endpunkt für API Gateway zu erstellen, geben Sie die execute-api
Domäne AWS-Region an, für die Sie Ihren privaten Endpunkt erstellenAPI. Die execute-api
Domain ist der API Gateway-Komponentendienst für die API Ausführung.
Wenn Sie Ihren VPC Endpunkt für API Gateway erstellen, geben Sie die DNS Einstellungen an. Wenn Sie „Privat“ deaktivierenDNS, können Sie nur auf Ihre API Nutzung von „Öffentlich“ zugreifenDNS. Weitere Informationen finden Sie unter Problem: Ich kann API von einem API VPC Gateway-Endpunkt aus keine Verbindung zu meinem öffentlichen Computer herstellen.
- AWS Management Console
Um einen VPC Schnittstellenendpunkt für API Gateway zu erstellen
-
Melden Sie sich bei der an AWS Management Console und öffnen Sie die VPC Amazon-Konsole unter https://console.aws.amazon.com/vpc/.
-
Wählen Sie im Navigationsmenü unter Virtual Private Cloud die Option Endpunkte.
-
Wählen Sie Endpunkt erstellen aus.
-
(Optional) Geben Sie für das Namens-Tag einen Namen ein, um Ihren VPC Endpunkt leichter identifizieren zu können.
-
Wählen Sie bei Service category (Servicekategorie) die Option AWS
services (-Services) aus.
-
Geben Sie unter Dienste in der Suchleiste einexecute-api
. Wählen Sie dann den API Gateway-Dienstendpunkt aus AWS-Region , an dem Sie Ihren erstellen möchtenAPI. Der Dienstname sollte wie folgt aussehen com.amazonaws.us-east-1.execute-api
und der Typ sollte Interface sein.
-
Wählen Sie für das aus VPCVPC, in dem Sie den Endpunkt erstellen möchten.
-
(Optional) Um „Privaten DNS Namen aktivieren“ zu deaktivieren, wählen Sie „Zusätzliche Einstellungen“ und deaktivieren Sie dann „Privaten DNS Namen aktivieren“.
-
Wählen Sie für Subnetze die Availability Zones aus, in denen Sie die Endpunkt-Netzwerkschnittstellen erstellt haben. Um die Verfügbarkeit Ihrer zu verbessernAPI, wählen Sie mehrere Subnetze aus.
-
Wählen Sie unter Sicherheitsgruppe die Sicherheitsgruppe aus, die den VPC Endpunkt-Netzwerkschnittstellen zugeordnet werden soll.
Die von Ihnen gewählte Sicherheitsgruppe muss so eingerichtet sein, dass sie eingehenden TCP Port HTTPS 443-Verkehr entweder von einem IP-Bereich in Ihrem VPC oder einer anderen Sicherheitsgruppe in Ihrem VPC zulässt.
-
Führen Sie für Policy einen der folgenden Schritte aus:
Wenn Sie keine private Endpunktrichtlinie erstellt haben API oder keine benutzerdefinierte VPC Endpunktrichtlinie konfigurieren möchten, wählen Sie Vollzugriff.
-
Wenn Sie bereits eine private Endpunktrichtlinie erstellt haben API und eine benutzerdefinierte VPC Endpunktrichtlinie konfigurieren möchten, können Sie eine benutzerdefinierte VPC Endpunktrichtlinie eingeben. Weitere Informationen finden Sie unter Verwenden Sie VPC Endpunktrichtlinien für private APIs Zwecke in API Gateway.
Sie können die VPC Endpunktrichtlinie aktualisieren, nachdem Sie Ihren VPC Endpunkt erstellt haben. Weitere Informationen finden Sie unter Aktualisieren einer VPC Endpunktrichtlinie.
-
Wählen Sie Endpunkt erstellen aus.
Kopieren Sie die resultierende VPC Endpunkt-ID, da Sie sie in future Schritten verwenden könnten.
- AWS CLI
Der folgende create-vpc-endpointBefehl kann verwendet werden, um einen VPC Endpunkt zu erstellen:
aws ec2 create-vpc-endpoint \
--vpc-id vpc-1a2b3c4d \
--vpc-endpoint-type Interface \
--service-name com.amazonaws.us-east-1.execute-api \
--subnet-ids subnet-7b16de0c \
--security-group-id sg-1a2b3c4d
Kopieren Sie die resultierende VPC Endpunkt-ID, da Sie sie in future Schritten verwenden könnten.
Schritt 2: Erstellen Sie eine private API
Nachdem Sie Ihren VPC Endpunkt erstellt haben, erstellen Sie einen privaten RESTAPI. Das folgende Verfahren zeigt, wie Sie einen privaten erstellenAPI.
- AWS Management Console
Um ein privates zu erstellen API
-
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan.
-
Wählen Sie Create. API
-
Wählen Sie RESTAPIunter Build aus.
-
Geben Sie unter Name einen Namen ein.
(Optional) Geben Sie unter Description (Beschreibung) eine Beschreibung ein.
-
Wählen Sie als APIEndpunkttyp die Option Privat aus.
-
(Optional) Geben Sie für VPCVPCEndpoint IDs eine Endpunkt-ID ein.
Wenn Sie Ihrer privaten VPC Endpunkt-ID eine Endpunkt-ID zuordnenAPI, können Sie Ihre API von Ihrem aus aufrufen, VPC ohne einen Host
Header zu überschreiben oder eine zu übergeben. x-apigw-api-id header
Weitere Informationen finden Sie unter. (Optional) Ordnen Sie einen VPC Endpunkt einem privaten Endpunkt zu oder trennen Sie die Zuordnung API
-
Wählen Sie Erstellen. API
Nachdem Sie die vorherigen Schritte abgeschlossen haben, können Sie den Anweisungen unter folgenErste Schritte mit der REST API Konsole, um Methoden und Integrationen dafür einzurichtenAPI, aber Sie können Ihre API nicht bereitstellen. Um Ihre bereitzustellenAPI, folgen Sie Schritt 3 und fügen Sie Ihrem API eine Ressourcenrichtlinie bei.
- AWS CLI
Der folgende create-rest-apiBefehl zeigt, wie Sie ein privates erstellenAPI:
aws apigateway create-rest-api \
--name 'Simple PetStore (AWS CLI, Private)' \
--description 'Simple private PetStore API' \
--region us-west-2 \
--endpoint-configuration '{ "types": ["PRIVATE"] }'
Bei einem erfolgreichen Aufruf sieht die zurückgegebene Ausgabe in etwa wie folgt aus:
{
"createdDate": "2017-10-13T18:41:39Z",
"description": "Simple private PetStore API",
"endpointConfiguration": {
"types": "PRIVATE"
},
"id": "0qzs2sy7bh",
"name": "Simple PetStore (AWS CLI, Private)"
}
Nachdem Sie die vorherigen Schritte abgeschlossen haben, können Sie den Anweisungen unter folgenTutorial: Erstellen Sie eine REST-API mit AWS SDKs oder AWS CLI, um Methoden und Integrationen dafür einzurichtenAPI, aber Sie können Ihre API nicht bereitstellen. Um Ihre bereitzustellenAPI, folgen Sie Schritt 3 und fügen Sie Ihrem API eine Ressourcenrichtlinie bei.
- SDK JavaScript v3
Das folgende Beispiel zeigt, wie Sie mithilfe API von AWS SDK for JavaScript v3 eine private Datei erstellen:
import {APIGatewayClient, CreateRestApiCommand} from "@aws-sdk/client-api-gateway";
const apig = new APIGatewayClient({region:"us-east-1"});
const input = { // CreateRestApiRequest
name: "Simple PetStore (JavaScript v3 SDK, private)", // required
description: "Demo private API created using the AWS SDK for JavaScript v3",
version: "0.00.001",
endpointConfiguration: { // EndpointConfiguration
types: [ "PRIVATE"],
},
};
export const handler = async (event) => {
const command = new CreateRestApiCommand(input);
try {
const result = await apig.send(command);
console.log(result);
} catch (err){
console.error(err)
}
};
Bei einem erfolgreichen Aufruf sieht die zurückgegebene Ausgabe in etwa wie folgt aus:
{
apiKeySource: 'HEADER',
createdDate: 2024-04-03T17:56:36.000Z,
description: 'Demo private API created using the AWS SDK for JavaScript v3',
disableExecuteApiEndpoint: false,
endpointConfiguration: { types: [ 'PRIVATE' ] },
id: 'abcd1234',
name: 'Simple PetStore (JavaScript v3 SDK, private)',
rootResourceId: 'efg567',
version: '0.00.001'
}
Nachdem Sie die vorherigen Schritte abgeschlossen haben, können Sie den Anweisungen unter folgenTutorial: Erstellen Sie eine REST-API mit AWS SDKs oder AWS CLI, um Methoden und Integrationen dafür einzurichtenAPI, aber Sie können Ihre API nicht bereitstellen. Um Ihre bereitzustellenAPI, folgen Sie Schritt 3 und fügen Sie Ihrem API eine Ressourcenrichtlinie bei.
- Python SDK
-
Das folgende Beispiel zeigt, wie Sie mithilfe API von AWS SDK for Python eine private erstellen:
import json
import boto3
import logging
logger = logging.getLogger()
apig = boto3.client('apigateway')
def lambda_handler(event, context):
try:
result = apig.create_rest_api(
name='Simple PetStore (Python SDK, private)',
description='Demo private API created using the AWS SDK for Python',
version='0.00.001',
endpointConfiguration={
'types': [
'PRIVATE',
],
},
)
except botocore.exceptions.ClientError as error:
logger.exception("Couldn't create private API %s.", error)
raise
attribute=["id", "name", "description", "createdDate", "version", "apiKeySource", "endpointConfiguration"]
filtered_data ={key:result[key] for key in attribute}
result = json.dumps(filtered_data, default=str, sort_keys='true')
return result
Bei einem erfolgreichen Aufruf sieht die zurückgegebene Ausgabe in etwa wie folgt aus:
"{\"apiKeySource\": \"HEADER\", \"createdDate\": \"2024-04-03 17:27:05+00:00\", \"description\": \"Demo private API created using the AWS SDK for \", \"endpointConfiguration\": {\"types\": [\"PRIVATE\"]}, \"id\": \"abcd1234\", \"name\": \"Simple PetStore (Python SDK, private)\", \"version\": \"0.00.001\"}"
Nachdem Sie die vorherigen Schritte abgeschlossen haben, können Sie den Anweisungen unter folgenTutorial: Erstellen Sie eine REST-API mit AWS SDKs oder AWS CLI, um Methoden und Integrationen dafür einzurichtenAPI, aber Sie können Ihre API nicht bereitstellen. Um Ihre bereitzustellenAPI, folgen Sie Schritt 3 und fügen Sie Ihrem API eine Ressourcenrichtlinie bei.
Schritt 3: Richten Sie eine Ressourcenrichtlinie für ein privates Gerät ein API
Ihr derzeitiges API Privatkonto ist für alle VPCs nicht zugänglich. Verwenden Sie eine Ressourcenrichtlinie, um Ihnen VPCs und Ihren VPC Endpunkten Zugriff auf Ihre privaten Daten zu gewähren. APIs Sie können in jedem AWS Konto Zugriff auf einen VPC Endpunkt gewähren.
Ihre Ressourcenrichtlinie sollte aws:SourceVpce
Bedingungen zur Beschränkung des Zugriffs enthaltenaws:SourceVpc
. Wir empfehlen Ihnen, bestimmte VPCs VPC Endpunkte zu identifizieren und keine Ressourcenrichtlinie zu erstellen, die den Zugriff für alle VPCs VPC Endpunkte ermöglicht.
Das folgende Verfahren zeigt, wie Sie eine Ressourcenrichtlinie an Ihre anhängen. API
- AWS Management Console
-
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan.
Wählen Sie ein. REST API
-
Wählen Sie im Hauptnavigationsbereich Ressourcenrichtlinie.
-
Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie Vorlage auswählen und dann Quelle VPC.
-
Ersetzen Sie {{vpceID}}
(einschließlich der geschweiften Klammern) durch Ihre VPC Endpunkt-ID.
-
Wählen Sie Änderungen speichern.
- AWS CLI
Der folgende update-rest-apiBefehl zeigt, wie eine Ressourcenrichtlinie an eine bestehende angehängt wird: API
aws apigateway update-rest-api \
--rest-api-id a1b2c3 \
--patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument
\"}"'
Möglicherweise möchten Sie auch kontrollieren, welche Ressourcen Zugriff auf Ihren VPC Endpunkt haben. Um zu kontrollieren, welche Ressourcen Zugriff auf Ihren VPC Endpunkt haben, fügen Sie Ihrem Endpunkt eine VPC Endpunktrichtlinie hinzu. Weitere Informationen finden Sie unter Verwenden Sie VPC Endpunktrichtlinien für private APIs Zwecke in API Gateway.
(Optional) Ordnen Sie einen VPC Endpunkt einem privaten Endpunkt zu oder trennen Sie die Zuordnung API
Wenn Sie Ihrem privaten VPC Endpunkt einen Endpunkt zuordnenAPI, generiert API Gateway einen neuen Route DNS 53-Aliaseintrag. Sie können diesen Datensatz verwenden, um Ihren privaten Datensatz APIs genauso aufzurufen, wie Sie Ihren öffentlichen Datensatz aufrufen, APIs ohne einen Header zu überschreiben oder einen Host
Header zu übergeben. x-apigw-api-id
Die generierte Basis URL hat das folgende Format:
https://{rest-api-id}
-{vpce-id}
.execute-api.{region}
.amazonaws.com/{stage}
- Associate a VPC endpoint (AWS Management Console)
-
Sie können einen VPC Endpunkt Ihrem privaten Endpunkt zuordnen, API wenn Sie ihn erstellen oder nachdem er erstellt wurde. Das folgende Verfahren zeigt, wie Sie einen VPC Endpunkt einem zuvor erstellten Endpunkt zuordnenAPI.
So verknüpfen Sie einen VPC Endpunkt mit einem privaten API
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan.
-
Wählen Sie Ihr Privatkonto. API
-
Wählen Sie im Hauptnavigationsbereich Ressourcenrichtlinie.
-
Bearbeiten Sie Ihre Ressourcenrichtlinie, um Anrufe von Ihrem zusätzlichen VPC Endpunkt aus zuzulassen.
-
Wählen Sie im Hauptnavigationsbereich APIEinstellungen aus.
-
Wählen Sie im APIDetailbereich Bearbeiten aus.
-
Wählen Sie als VPCEndpunkt IDs einen zusätzlichen VPC Endpunkt ausIDs.
-
Wählen Sie Save (Speichern) aus.
-
Stellen Sie Ihre API erneut bereit, damit die Änderungen wirksam werden.
- Dissociate a VPC endpoint (AWS Management Console)
-
Um die Zuordnung eines VPC Endpunkts zu einem privaten Endpunkt zu trennen REST API
Melden Sie sich bei der API Gateway-Konsole unter https://console.aws.amazon.com/apigatewayan.
-
Wählen Sie Ihr Privatkonto. API
-
Wählen Sie im Hauptnavigationsbereich Ressourcenrichtlinie.
-
Bearbeiten Sie Ihre Ressourcenrichtlinie, um Erwähnungen des VPC Endpunkts zu entfernen, den Sie von Ihrem privaten Endpunkt trennen möchten. API
-
Wählen Sie im Hauptnavigationsbereich Einstellungen ausAPI.
-
Wählen Sie im APIDetailbereich Bearbeiten aus.
-
Wählen Sie als VPCEndpunkt das X ausIDs, um den VPC Endpunkt zu trennen.
-
Wählen Sie Save (Speichern) aus.
-
Stellen Sie Ihre erneut bereit, API damit die Änderungen wirksam werden.
- Associate a VPC endpoint (AWS CLI)
-
Der folgende create-rest-apiBefehl zeigt, wie VPC Endpunkte zum Zeitpunkt der API Erstellung verknüpft werden:
aws apigateway create-rest-api \
--name Petstore \
--endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \
--region us-west-2
Die Ausgabe sieht wie folgt aus:
{
"apiKeySource": "HEADER",
"endpointConfiguration": {
"types": [
"PRIVATE"
],
"vpcEndpointIds": [
"vpce-0212a4ababd5b8c3e",
"vpce-0393a628149c867ee"
]
},
"id": "u67n3ov968",
"createdDate": 1565718256,
"name": "Petstore"
}
Der folgende update-rest-apiBefehl zeigt, wie API Sie VPC Endpoints einem bereits erstellten zuordnen:
aws apigateway update-rest-api \
--rest-api-id u67n3ov968 \
--patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" \
--region us-west-2
Die Ausgabe sieht wie folgt aus:
{
"name": "Petstore",
"apiKeySource": "1565718256",
"tags": {},
"createdDate": 1565718256,
"endpointConfiguration": {
"vpcEndpointIds": [
"vpce-0212a4ababd5b8c3e",
"vpce-0393a628149c867ee",
"vpce-01d622316a7df47f9"
],
"types": [
"PRIVATE"
]
},
"id": "u67n3ov968"
}
Stellen Sie Ihre API erneut bereit, damit die Änderungen wirksam werden.
- Disassociate a VPC endpoint (AWS CLI)
-
Der folgende update-rest-apiBefehl zeigt, wie Sie die Zuordnung eines VPC Endpunkts zu einem privaten Endpunkt aufheben können: API
aws apigateway update-rest-api \
--rest-api-id u67n3ov968 \
--patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" \
--region us-west-2
Die Ausgabe sieht wie folgt aus:
{
"name": "Petstore",
"apiKeySource": "1565718256",
"tags": {},
"createdDate": 1565718256,
"endpointConfiguration": {
"vpcEndpointIds": [
"vpce-0212a4ababd5b8c3e",
"vpce-01d622316a7df47f9"
],
"types": [
"PRIVATE"
]
},
"id": "u67n3ov968"
}
Stellen Sie Ihre API erneut bereit, damit die Änderungen wirksam werden.
Schritt 4: Stellen Sie eine private Lösung bereit API
Um Ihre bereitzustellenAPI, erstellen Sie eine API Bereitstellung und ordnen sie einer Phase zu. Das folgende Verfahren zeigt, wie Sie Ihr privates Gerät bereitstellenAPI.
- AWS Management Console
So stellen Sie ein privates Gerät bereit API
Wähle deineAPI.
Wählen Sie BereitstellenAPI aus.
Wählen Sie für Stufe die Option Neue Stufe aus.
Geben Sie unter Stage name (Stufenname) einen Namen für die Stufe ein.
(Optional) Geben Sie unter Description (Beschreibung) eine Beschreibung ein.
Wählen Sie Bereitstellen.
- AWS CLI
Der folgende Befehl create-deployment zeigt, wie Sie einen privaten bereitstellen: API
aws apigateway create-deployment --rest-api-id a1b2c3 \
--stage-name test \
--stage-description 'Private API test stage' \
--description 'First deployment'
Beheben Sie Probleme mit Ihrem privaten API
Im Folgenden finden Sie Hinweise zur Behebung von Fehlern und Problemen, die bei der Erstellung eines privaten Kontos auftreten könnenAPI.
Problem: Ich kann API von einem API VPC Gateway-Endpunkt aus keine Verbindung zu meinem öffentlichen Computer herstellen
Wenn Sie Ihre erstellenVPC, können Sie die DNS Einstellungen konfigurieren. Wir empfehlen Ihnen, die Option Privat DNS für Ihre zu aktivierenVPC. Wenn du die Option „Privat“ deaktivieren wählstDNS, kannst du nur API über öffentliche Kanäle auf dein Konto zugreifenDNS.
Wenn Sie privat aktivierenDNS, können Sie von Ihrem VPC Endpunkt API aus nicht auf den Standardendpunkt eines öffentlichen API Gateways zugreifen. Sie können API mit einem benutzerdefinierten Domainnamen auf eine zugreifen.
Wenn Sie einen benutzerdefinierten Domainnamen vom Typ Regional erstellen, verwenden Sie einen Aliaseintrag vom Typ A. Wenn Sie einen Edge-optimierten benutzerdefinierten Domainnamen erstellen, gibt es keine Einschränkungen für Ihren Datensatztyp. Sie können auf diese öffentlichen Dateien zugreifen, wenn „PrivatDNS“ APIs aktiviert ist. Weitere Informationen finden Sie unter Problem: Ich stelle API von einem API VPC Gateway-Endpunkt aus eine Verbindung zu meinem öffentlichen Bereich her.
Problem: Meine API Rücksendungen {"Message":"User:
anonymous is not authorized to perform: execute-api:Invoke on resource:
arn:aws:execute-api:us-east-1:********/****/****/"}
Wenn Sie in Ihrer Ressourcenrichtlinie den Principal auf einen AWS Prinzipal festlegen, wie zum Beispiel:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
""Principal": {
"AWS": [
"arn:aws:iam::account-id:role/developer",
"arn:aws:iam::account-id:role/Admin"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/*"
]
},
...
}
Sie müssen die AWS_IAM
Autorisierung für jede Methode in Ihrer verwendenAPI, andernfalls wird die vorherige Fehlermeldung API zurückgegeben. Weitere Anweisungen zum Aktivieren der AWS_IAM
Autorisierung für eine Methode finden Sie unterMethoden für REST APIs in API Gateway.
Problem: Ich kann nicht feststellen, ob mein VPC Endpunkt mit meinem verknüpft ist API
Wenn Sie einen VPC Endpunkt mit Ihrem privaten Endpunkt verknüpfen oder trennenAPI, müssen Sie Ihren erneut bereitstellen. API Der Aktualisierungsvorgang kann aufgrund der Ausbreitung einige Minuten dauern. DNS Während dieser Zeit API ist Ihre verfügbar, aber die DNS Übertragung für die neu generierte Datei ist DNS URLs möglicherweise noch im Gange. Wenn Ihre neuen Dateien nach einigen Minuten nicht behoben URLs werdenDNS, empfehlen wir Ihnen, Ihre erneut bereitzustellen. API