Wie kann ich Fehler in der Netzwerkkonfiguration meiner privaten Elastic-Beanstalk-Umgebung bei VPC-Endpunkten beheben?

Lesedauer: 5 Minute
0

Ich möchte Netzwerkprobleme in meiner vollständig privaten AWS-Elastic-Beanstalk-Umgebung beheben.

Kurzbeschreibung

Vollständig private Umgebungen sind wie folgt eingerichtet undermöglichen den Zugriff auf Ihre Webanwendung nur innerhalb derselben Amazon Virtual Private Cloud (Amazon VPC).

  • Sichtbarkeit des Load Balancers: Privat
  • Load-Balancer-Subnetze: Beide privaten Subnetze
  • Öffentliche IP-Adresse der Instance: Deaktiviert
  • Instance-Subnetze: Beide privaten Subnetze

Die gesamte Kommunikation innerhalb der VPC erfolgt über konfigurierte VPC-Endpunkte. Außerdem erfolgt die gesamte Kommunikation innerhalb der VPC über die lokale Route in der Routing-Tabelle. Im Folgenden sind häufige Fehler aufgeführt, die aufgrund von Netzwerkkonfigurationen in der Umgebung auftreten können:

  • Die Amazon-Elastic-Compute-Cloud-Instances (Amazon EC2) konnten nicht mit Elastic Beanstalk kommunizieren. Ein Kommunikationsfehler ist auf Konfigurationsprobleme mit der VPC oder eine ausgefallene EC2-Instance zurückzuführen. Überprüfen Sie Ihre VPC-Konfiguration und versuchen Sie erneut, die Umgebung zu starten.
  • Die Instances haben nicht innerhalb der zulässigen Befehls-Timeout-Zeit reagiert.

Lösung

Wenn Sie eine vollständig private Elastic-Beanstalk-Umgebung erstellen, stellen Sie sicher, dass Sie die folgenden Konfigurationen eingerichtet haben:

  • Sie benötigen eine VPC mit mindestens zwei privaten Subnetzen in verschiedenen Availability Zones.
  • Für die VPC müssen DNS-Hostnamen und DNS-Auflösungen aktiviert sein. Wenn diese aktiviert sind, wird in Ihrer VPC ein DNS-Eintrag hinzugefügt, der den öffentlichen Service-Endpunkt dem Schnittstellen-VPC-Endpunkt zuordnet.
  • Sie müssen VPC-Endpunkte erstellen, damit AWS-Services außerhalb der VPC und die Instance innerhalb der VPC über diese Endpunkte kommunizieren können.

VPC-Endpunkte überprüfen

Eine standardmäßige Elastic-Beanstalk-Umgebung muss für eine erfolgreiche Erstellung über die folgenden VPC-Endpunkte verfügen:

  • com.amazonaws.your-region.elasticbeanstalk (Elastic-Beanstalk-Schnittstellenendpunkt)
  • com.amazonaws.your-region.elasticbeanstalk-health (Elastic-Beanstalk-Health-Schnittstellenendpunkt)
  • com.amazonaws.your-region.cloudformation (AWS-CloudFormation-Schnittstellenendpunkt)
  • com.amazonaws.your-region.logs (Endpunkt der Protokollschnittstelle)
  • com.amazonaws.your-region.sqs (Amazon-Simple-Queue-Service-Schnittstellenendpunkt (Amazon SQS))
  • com.amazonaws.your-region.s3 (Amazon-Simple-Storage-Service-Gateway-Endpunkt (Amazon S3))

Umgebungen, die auf der Docker-Plattform ausgeführt werden, die auf 64-Bit-Amazon Linux 2 läuft, müssen über die folgenden zusätzlichen VPC-Endpunkte verfügen:

  • com.amazonaws.your-region.ecr.dkr
  • com.amazonaws.your-region.ecr.api

Umgebungen, die auf der Amazon-Elastic-Container-Service-Plattform (Amazon ECS) ausgeführt werden, die auf 64-Bit-Amazon-Linux-2 läuft, müssen über die folgenden zusätzlichen VPC-Endpunkte verfügen:

  • com.amazonaws.your-region.ecs
  • com.amazonaws.your-region.ecr.api
  • com.amazonaws.your-region.ecr.dkr

Hinweis: Um sicherzustellen, dass Ihre Docker- und Multi-Docker-Umgebung ordnungsgemäß funktionieren, stellen Sie ein privates Docker-Image bereit.

Sicherheitsgruppe auswählen

Beim Erstellen des Schnittstellen-VPC-Endpunkts müssen Sie die Subnetze und die Sicherheitsgruppe für Ihren VPC-Endpunkt auswählen. Stellen Sie sicher, dass Sie private Subnetze und die Sicherheitsgruppe mit den entsprechenden Regeln für eingehenden Datenverkehr auswählen.

Die Sicherheitsgruppe, die an die VPC-Endpunkte der Schnittstelle angehängt ist, muss über eine eingehende Regel für Port 443 (HTTPS) verfügen:

Inbound-Regel:

TypProtokollPort-BereichQuelle
HTTPSTCP443IP-Adresse des Clients (siehe Hinweis)

Hinweis: Um den eingehenden Datenverkehr über den VPC-Endpunkt zu schützen, sollten Sie erwägen, nur die IP-Adresse oder das Netzwerk des Clients in der Quelle anzugeben.

Stellen Sie außerdem sicher, dass die Sicherheitsgruppe, die der Instance zugeordnet ist, HTTP-Verkehr von der Sicherheitsgruppe des Load Balancers zulässt:

Inbound-Regel:

TypProtokollPort-BereichQuelle
HTTPTCP80Sicherheitsgruppe des Load Balancer

Stellen Sie sicher, dass die Sicherheitsgruppe, die dem Load Balancer zugeordnet ist, den gesamten HTTP-Verkehr in der eingehenden Regel zulässt:

Inbound-Regel:

TypProtokollPort-BereichQuelle
HTTPTCP800.0.0.0/0

Hinweis: Sie müssen den ausgehenden Verkehr in keiner der vorherigen Sicherheitsgruppen einschränken.

Nach Einträgen in der Routentabelle suchen

Beim Erstellen von Gateway-Endpunkten haben Sie die Möglichkeit, eine Routing-Tabelle auszuwählen. Stellen Sie sicher, dass Sie die Routing-Tabelle auswählen, die dem privaten Subnetz der VPC zugeordnet ist. Die Routing-Tabelle, die dem privaten Subnetz zugeordnet ist, muss eine Route für jeden Gateway-VPC-Endpunkt haben. Beispielsweise benötigen Sie eine Route für jeden Gateway-VPC-Endpunkt, der mit Amazon Simple Storage Service (Amazon S3) oder Amazon DynamoDB verknüpft ist.

Einträge in die Routing-Tabelle:

ZielZiel
172.xx.x.0/16lokal
pl-63a5xxxvpce-04xxx

VPC-Endpunktrichtlinien überprüfen

Die VPC-Endpunktrichtlinien müssen es Ihrer Elastic-Beanstalk-Umgebung ermöglichen, privat mit dem Service zu kommunizieren. Wenn Sie eine Schnittstelle oder einen Gateway-Endpunkt erstellen, können Sie eine Endpunktrichtlinie anhängen. Die Endpunktrichtlinie steuert, welche AWS-Prinzipale den VPC-Endpunkt für den Zugriff auf den Endpunktservice verwenden können. Zu den AWS-Prinzipien gehören AWS-Konten, AWS-Identity-and-Access-Management-Benutzer (IAM) und IAM-Rollen. Wenn Sie beim Erstellen eines Endpunkts keine Endpunktrichtlinie angeben, hat der Endpunkt standardmäßig vollen Zugriff.

Im Folgenden finden Sie ein Beispiel für eine Mindestrichtlinie für S3-Gateway-VPC-Endpunkte, die für einen S3-Endpunkt erforderlich ist, wenn Sie mit Elastic Beanstalk arbeiten.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EBBucketAccess",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject",
                "s3:PutBucketPolicy",
                "s3:PutObjectVersionAcl"
            ],
            "Resource": [
                "arn:aws:s3:::elasticbeanstalk-*",
                "arn:aws:s3:::elasticbeanstalk-*/*",
                "arn:aws:s3:::cloudformation*/*"
            ]
        }
    ]
}

Ähnliche Informationen

Über einen Schnittstellen-VPC-Endpunkt auf einen AWS-Service zugreifen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr