

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.

# Benutzerdefinierte Zertifikate und Route 53-DNS-Verwaltung für Inferenz HyperPod
<a name="sagemaker-hyperpod-model-deployment-custom-certs"></a>

Die folgenden Schritte zeigen Ihnen, wie Sie Ihre eigenen ACM-Zertifikate für HyperPod Inferenzendpunkte verwenden und optional den Betreiber so konfigurieren, dass er Route 53-DNS-Einträge für Ihre benutzerdefinierte Domain verwaltet.

Bei benutzerdefinierten Zertifikaten geben Sie eine ACM-Zertifikat-ARN an, und der Betreiber hängt sie an den Application Load Balancer (ALB) an, überwacht dessen Zustand und unterstützt die automatische Erkennung von Verlängerungen. Der Betreiber unterstützt öffentlich vertrauenswürdige ACM-Zertifikate, AWS private CA-Zertifikate und Zertifikate, die von externen Zertifizierungsstellen importiert wurden.

Benutzerdefinierte Zertifikate können einzeln oder in Kombination mit der Route 53-DNS-Verwaltung verwendet werden. Die Route 53-DNS-Verwaltung erfordert ein benutzerdefiniertes Zertifikat und verwendet den Domainnamen aus Ihrer Zertifikatkonfiguration, um DNS-Einträge zu erstellen und zu verwalten.

## Voraussetzungen
<a name="sagemaker-hyperpod-model-deployment-custom-certs-prereqs"></a>

Bevor Sie beginnen, stellen Sie sicher, dass Sie:
+ Richten Sie Inferenzfunktionen auf Ihren SageMaker HyperPod Amazon-Clustern ein. Weitere Informationen finden Sie unter [Richten Sie Ihre HyperPod Cluster für die Modellbereitstellung ein](sagemaker-hyperpod-model-deployment-setup.md).
+ [Kubectl wurde ](https://kubernetes.io/docs/reference/kubectl/) in Ihrem Terminal installiert.
+ Sie haben ein TLS-Zertifikat in ACM in derselben AWS Region wie Ihr Cluster bereitgestellt oder importiert. HyperPod Das Zertifikat muss den ** Status ** Ausgestellt haben und eine Zertifikatskette (Zwischen- und Stammzertifizierungsstelle) enthalten. Self-signed In ACM importierte Zertifikate werden nicht als benutzerdefinierte Zertifikate unterstützt, da ihnen eine Zertifikatskette fehlt.
+ (Für die Route 53-DNS-Verwaltung) Es wurde eine von Route 53 gehostete Zone für Ihre Domain erstellt. Öffentlich gehostete Zonen werden empfohlen. Private gehostete Zonen funktionieren für die Erstellung von Datensätzen, aber der Betreiber überprüft die DNS-Auflösung mithilfe des DNS-Resolvers des Pods, der auf dem VPC-DNS-Resolver basiert. Für privat gehostete Zonen müssen für die VPC die DNS-Auflösung und die DNS-Hostnamen aktiviert sein, und die privat gehostete Zone muss der VPC des Clusters zugeordnet sein.

## Konfigurieren Sie die IAM-Berechtigungen.
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam"></a>

Die Ausführungsrolle des Inferenzoperators erfordert zusätzliche Berechtigungen für benutzerdefinierte Zertifikate und die Route 53-DNS-Verwaltung. Fügen Sie Ihrer HyperPod Inferenz-Ausführungsrolle die folgenden Richtlinien hinzu.

### ACM- und Amazon S3-Berechtigungen für benutzerdefinierte Zertifikate
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam-acm"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ACMCustomCertificateAccess",
            "Effect": "Allow",
            "Action": [
                "acm:DescribeCertificate",
                "acm:GetCertificate"
            ],
            "Resource": "arn:aws:acm:<region>:<account-id>:certificate/*"
        },
        {
            "Sid": "S3CertificateUpload",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectTagging"
            ],
            "Resource": "arn:aws:s3:::<tls-certificate-bucket>/*",
            "Condition": {
                "StringEquals": {
                    "s3:RequestObjectTag/CreatedBy": "HyperPodInference"
                }
            }
        }
    ]
}
```

**Anmerkung**  
Wenn Ihr Amazon S3-Bucket-Name mit beginnt`hyperpod-tls`, sind die Amazon S3-Berechtigungen bereits in der `AmazonSageMakerHyperPodInferenceAccess` verwalteten Richtlinie enthalten und Sie müssen nur die ACM-Anweisung hinzufügen.

### Route 53-Berechtigungen für die DNS-Verwaltung
<a name="sagemaker-hyperpod-model-deployment-custom-certs-iam-r53"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Route53DNSManagement",
            "Effect": "Allow",
            "Action": [
                "route53:GetHostedZone",
                "route53:ListResourceRecordSets",
                "route53:ChangeResourceRecordSets"
            ],
            "Resource": "arn:aws:route53:::hostedzone/<hosted-zone-id>"
        }
    ]
}
```

Ersetzen Sie `<region>``<account-id>`,`<tls-certificate-bucket>`, und `<hosted-zone-id>` durch Ihre tatsächlichen Werte. Sie können den ARN der ACM-Ressource auf bestimmte Zertifikate beschränken, um die Sicherheit zu erhöhen.

## Konfigurieren Sie ein benutzerdefiniertes Zertifikat
<a name="sagemaker-hyperpod-model-deployment-custom-certs-configure"></a>

Um ein benutzerdefiniertes Zertifikat zu verwenden, fügen Sie den `customCertificateConfig` Abschnitt zu Ihrem `tlsConfig` in der `InferenceEndpointConfig` `JumpStartModel` oder-Spezifikation hinzu. Die `dnsConfig` Felder `tlsConfig` und sind in beiden CRDs identisch.

Die folgenden Felder sind in `customCertificateConfig` und `tlsConfig` verfügbar:

`tlsConfig.customCertificateConfig.acmArn`(Erforderlich, Zeichenfolge)  
Der ARN Ihres ACM-Zertifikats. Muss den ** Status ** Ausgestellt haben.

`tlsConfig.customCertificateConfig.domainName`(Erforderlich, Zeichenfolge)  
Der Domainname, der aus dem Zertifikat verwendet werden soll.  
+ Es muss sich um eine bestimmte Domain handeln, kein Platzhalter. Geben Sie für Platzhalterzertifikate (z. B.`*.example.com`) die spezifische Subdomain an (z. B.). `api.example.com`
+ Muss in Kleinbuchstaben geschrieben werden.
+ Muss mit einem der im Zertifikat aufgeführten Domainnamen übereinstimmen.

`tlsConfig.tlsCertificateOutputS3Uri`(Befristet, Zeichenfolge)  
Amazon S3-URI, in den der Betreiber das öffentliche Zertifikat hochlädt. Erforderlich, es sei denn, der Operator wurde mit konfigurierter `TLS_CERTIFICATE_OUTPUT_S3URI` Umgebungsvariable installiert. Wenn Sie sich nicht sicher sind, ob dies festgelegt wurde, geben Sie es explizit an.

Im Folgenden finden Sie ein Beispiel für eine YAML-Datei zum Erstellen eines Endpunkts mit einem benutzerdefinierten Zertifikat.

```
apiVersion: inference.sagemaker.aws.amazon.com/v1
kind: InferenceEndpointConfig
metadata:
  name: my-model
  namespace: my-namespace
spec:
  modelName: my-llm
  instanceType: ml.g5.24xlarge
  invocationEndpoint: v1/chat/completions
  replicas: 2
  modelSourceConfig:
    modelSourceType: s3
    s3Storage:
      bucketName: my-model-bucket
      region: us-west-2
    modelLocation: models/my-llm
  tlsConfig:
    customCertificateConfig:
      acmArn: arn:aws:acm:us-west-2:123456789012:certificate/abc12345-1234-1234-1234-abc123456789
      domainName: api.example.com
    tlsCertificateOutputS3Uri: s3://my-tls-bucket
  worker:
    image: my-inference-image:latest
    modelInvocationPort:
      containerPort: 8000
      name: http
    modelVolumeMount:
      name: model-weights
      mountPath: /opt/ml/model
    resources:
      limits:
        nvidia.com/gpu: "4"
      requests:
        cpu: "6"
        memory: 30Gi
        nvidia.com/gpu: "4"
```

Sie können einer Bereitstellung`customCertificateConfig`, die bereits ausgeführt wird, etwas hinzufügen. Der Operator erkennt die Änderung beim nächsten Abgleich, validiert das Zertifikat, hängt es an das ALB an und lädt das öffentliche Zertifikat auf Amazon S3 hoch. Es sind keine Ausfallzeiten oder eine erneute Bereitstellung erforderlich.

**Wichtig**  
Wenn Sie den `customCertificateConfig` Abschnitt aus einer laufenden Bereitstellung entfernen, generiert der Operator wieder ein neues selbstsigniertes Zertifikat. Dies ersetzt Ihr CA-signed Zertifikat auf dem ALB.

## Konfigurieren Sie die Route 53-DNS-Verwaltung
<a name="sagemaker-hyperpod-model-deployment-custom-certs-dns"></a>

Für die Route 53-DNS-Verwaltung muss ein benutzerdefiniertes Zertifikat konfiguriert werden, und es wird der Domänenname von verwendet`tlsConfig.customCertificateConfig.domainName`. Wenn Sie kein benutzerdefiniertes Zertifikat konfiguriert haben, lesen Sie [Konfigurieren Sie ein benutzerdefiniertes Zertifikat](#sagemaker-hyperpod-model-deployment-custom-certs-configure) zuerst nach.

Um die Route 53-DNS-Verwaltung zu aktivieren, fügen Sie den `dnsConfig` Abschnitt zu Ihrer Spezifikation hinzu:

```
spec:
  tlsConfig:
    customCertificateConfig:
      acmArn: arn:aws:acm:us-west-2:123456789012:certificate/abc12345-1234-1234-1234-abc123456789
      domainName: api.example.com
    tlsCertificateOutputS3Uri: s3://my-tls-bucket
  dnsConfig:
    hostedZoneId: Z1234567890ABC
```

Der `dnsConfig` Abschnitt kann gleichzeitig mit einer vorhandenen Bereitstellung oder zu einem späteren Zeitpunkt hinzugefügt werden. `customCertificateConfig` Der Operator erstellt die DNS-Einträge beim nächsten Abgleich, ohne Ihre Pods neu zu starten.

Wenn Sie mit bereitstellen`dnsConfig`, geht der Operator wie folgt vor:

1. Überprüft, ob die gehostete Zone existiert und ob Ihre Domain zur gehosteten Zone gehört (`api.example.com`erfordert beispielsweise eine gehostete Zone für`example.com`).

1. Prüft, ob in der Zieldomain A-Einträge vorhanden sind, um versehentliches Überschreiben zu verhindern.

1. Erstellt ** einen A-Record ** (Alias), der Ihre Domain auf die ALB verweist, und einen ** TXT-Record ** mit einer Eigentümermarkierung (`hyperpod-inference/owner=<namespace>/<name>`), um Konflikte zwischen Endpunkten zu vermeiden. Ändern oder löschen Sie den TXT-Eintrag nicht manuell.

1. Ruft die DNS-Auflösung alle 30 Sekunden ab, bis die Domain aufgelöst ist, und markiert den Status dann als`Active`. Wenn der Datensatz nicht innerhalb von 10 Minuten aufgelöst wird, wechselt der Status zu`Error`.

**Anmerkung**  
Die DNS-Verwaltung von Route 53 ist nicht blockierend. Fehler bei der Erstellung oder Weitergabe von DNS-Einträgen verhindern nicht, dass Ihr Inferenzendpunkt diesen Status erreicht. `Ready` Der Endpunkt bleibt über den Standard-Hostnamen des ALB zugänglich. Überprüfen Sie den `dnsStatus` Abschnitt im Ressourcenstatus auf Fehler. DNS-specific 

## Verwenden Sie ein benutzerdefiniertes Zertifikat ohne Route 53-DNS-Verwaltung
<a name="sagemaker-hyperpod-model-deployment-custom-certs-no-dns"></a>

Die Route 53-DNS-Verwaltung ist optional. Wenn Sie Ihre eigenen DNS-Einträge verwalten möchten, lassen Sie den `dnsConfig` Abschnitt aus und konfigurieren Sie Ihre Domain manuell.

Um den ALB-Hostnamen für Ihre Bereitstellung zu finden, hängt der Eingangsname davon ab, ob intelligentes Routing aktiviert ist.

**Ohne intelligentes Routing: ** Der Ingress wird in Ihrem Namespace benannt`alb-<deployment-name>`.

```
kubectl get ingress alb-<deployment-name> -n <namespace> \
  -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
```

**Mit intelligentem Routing: ** Der Ingress wird `alb-<deployment-name>-<namespace>` im Namespace benannt. `hyperpod-inference-system`

```
kubectl get ingress alb-<deployment-name>-<namespace> -n hyperpod-inference-system \
  -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
```

Erstellen Sie einen DNS-Eintrag in Ihrem DNS-Anbieter, der Ihre Domain auf diesen ALB-Hostnamen verweist:
+ **Route 53 ** — Erstellen Sie ** einen A-Eintrag ** mit ** aktiviertem ** Alias, der auf den ALB verweist.
+ **Andere DNS-Anbieter ** — Erstellen Sie einen ** CNAME-Eintrag, der Ihre Domain auf den ALB-DNS-Namen ** verweist. CNAME-Einträge können nicht in der Root-Domain verwendet werden (zum Beispiel`example.com`); verwenden Sie eine Subdomain wie. `api.example.com`

**Anmerkung**  
Wenn der ALB neu erstellt wird (z. B. nach dem Löschen und erneuten Bereitstellen des Endpunkts), ändert sich der ALB-Hostname. Sie müssen Ihren DNS-Eintrag manuell aktualisieren. Das Route 53-DNS-Management erledigt dies automatisch.

## Überprüfen des Status Ihrer Bereitstellung
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify"></a>

### Überprüfen Sie den Status des benutzerdefinierten Zertifikats
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-cert"></a>

```
kubectl describe InferenceEndpointConfig my-model -n my-namespace
```

Suchen Sie im Status nach dem `tlsCertificate` Abschnitt:

```
Status:
  Tls Certificate:
    Certificate ARN:    arn:aws:acm:us-west-2:123456789012:certificate/abc12345-...
    Certificate Health: Valid
    Certificate Domain Names:
      api.example.com
    Last Cert Expiry Time: 2027-04-23T00:00:00Z
```

Integritätswerte des Zertifikats:
+ **Gültig ** — Das Zertifikat ist mehr als 60 Tage vor Ablauf gültig.
+ **Läuft ab ** — Das Zertifikat läuft innerhalb von 60 Tagen ab. Ein Kubernetes-Warnereignis (`CertificateExpiring`) wird ausgegeben.
+ **Abgelaufen ** — Das Zertifikat ist abgelaufen. Ein Kubernetes-Warnereignis (`CertificateExpired`) wird ausgegeben.

Der Operator überprüft alle 24 Stunden den Ablauf des Zertifikats. Wenn er feststellt, dass ein Zertifikat in ACM erneuert wurde (das `NotAfter` Datum ändert sich), lädt er das öffentliche Zertifikat automatisch erneut auf Amazon S3 hoch und gibt ein Ereignis aus. `CertificateRenewed`

### Überprüfen Sie den DNS-Status
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-dns"></a>

Suchen Sie nach dem `dnsStatus` Abschnitt:

```
Status:
  Dns Status:
    Managed By Operator: true
    Record Name:         api.example.com
    Hosted Zone Id:      Z1234567890ABC
    Dns Health:          Active
    Message:             DNS record resolves successfully
```

DNS-Gesundheitswerte:
+ **Aktiv ** — Der DNS-Eintrag wurde erfolgreich aufgelöst. Ihre benutzerdefinierte Domain ist einsatzbereit.
+ **Ausstehend ** — DNS-Einträge wurden in Route 53 erstellt, aber noch nicht weitergegeben. Der Operator überprüft es alle 30 Sekunden erneut.
+ **Fehler ** — Die Erstellung oder Weitergabe des DNS-Eintrags ist fehlgeschlagen. Weitere Informationen finden Sie in `Message` dem Feld.

### Testen Sie den bereitgestellten Endpunkt
<a name="sagemaker-hyperpod-model-deployment-custom-certs-verify-test"></a>

Wenn Sie die Route 53-DNS-Verwaltung konfiguriert haben, rufen Sie Ihren Endpunkt mit Ihrer benutzerdefinierten Domain auf, nachdem der DNS-Status angezeigt wird`Active`. Wenn Sie nur ein benutzerdefiniertes Zertifikat ohne DNS-Verwaltung konfiguriert haben, verwenden Sie den ALB-Hostnamen aus dem Eingang (siehe). [Verwenden Sie ein benutzerdefiniertes Zertifikat ohne Route 53-DNS-Verwaltung](#sagemaker-hyperpod-model-deployment-custom-certs-no-dns)

```
curl -X POST https://api.example.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model": "my-llm", "messages": [{"role": "user", "content": "Hello"}]}'
```

**Anmerkung**  
Für den Aufruf über den SageMaker AI-Endpunkt geben Sie `endpointName` in Ihrer `InferenceEndpointConfig` oder `sageMakerEndpoint.name` in Ihrer Spezifikation an. `JumpStartModel` Wenn nicht gesetzt, `endpointName` wird kein SageMaker AI-Endpunkt erstellt und nur ein direkter ALB-Aufruf ist verfügbar.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name my-model \
  --content-type "application/json" \
  --body '{"model": "my-llm", "messages": [{"role": "user", "content": "Hello"}]}' \
  --region us-west-2 \
  --cli-binary-format raw-in-base64-out \
  /dev/stdout
```

## Verwalten Sie Ihre benutzerdefinierten Zertifikate und DNS-Einträge
<a name="sagemaker-hyperpod-model-deployment-custom-certs-manage"></a>

**Änderung der Domain oder der gehosteten Zone **

Sie können das `domainName` (in`customCertificateConfig`) oder `hostedZoneId` (in`dnsConfig`) in einer laufenden Bereitstellung aktualisieren. Eine Änderung des Domainnamens löst sowohl eine erneute Validierung des Zertifikats als auch eine DNS-Umstellung aus. Die neue Domain muss in Ihrem ACM-Zertifikat gültig sein (als SAN- oder Platzhalterübereinstimmung).

Der Betreiber führt eine sichere Umstellung durch:

1. Erstellt neue DNS-Einträge in der neuen Zone oder für die neue Domain.

1. Überprüft, ob die neuen Einträge aufgelöst werden.

1. Löscht die alten DNS-Einträge erst, nachdem bestätigt wurde, dass die neuen Einträge aktiv sind.

Während des Übergangs werden sowohl alte als auch neue Domains in das ALB aufgelöst. Der TXT-Besitzeintrag hat eine TTL von 300 Sekunden (5 Minuten), sodass DNS-Clients den alten Datensatz nach der Bereinigung bis zu 5 Minuten zwischenspeichern können.

**Bereinigen**

Wenn Sie den `dnsConfig` Abschnitt löschen `InferenceEndpointConfig` oder entfernen, löscht der Operator automatisch die Route 53A- und TXT-Einträge, die er erstellt hat. Der Operator löscht nur Datensätze, die ihm gehören (bestätigt durch den TXT-Datensatz, der Eigentümer ist).

## Fehlerbehebung
<a name="sagemaker-hyperpod-model-deployment-custom-certs-troubleshooting"></a>

Verwenden Sie diese Debugging-Schritte, wenn Ihr benutzerdefiniertes Zertifikat oder Ihre DNS-Konfiguration nicht wie erwartet funktioniert.
+ **Die Bereitstellung schlägt mit einem Amazon S3-Zugriffsfehler fehl. ** Stellen Sie sicher, dass der in angegebene Amazon S3-Bucket `tlsCertificateOutputS3Uri` existiert und sich in derselben Region befindet. Stellen Sie sicher, dass die Ausführungsrolle des Operators über `s3:PutObjectTagging` Berechtigungen für den Bucket verfügt`s3:PutObject`. Der Operator validiert den Amazon S3-Schreibzugriff, indem er bei der ersten Bereitstellung ein Null-Byte-Testobjekt hochlädt.
+ **Die Zertifikatsvalidierung schlägt fehl. ** Stellen Sie sicher, dass sich das ACM-Zertifikat im `ISSUED` Status befindet:`aws acm describe-certificate --certificate-arn <arn> --region <region>`. Stellen Sie sicher, dass das Zertifikat mit einer Domäne oder einem SAN `domainName` übereinstimmt. Verwenden Sie für Platzhalterzertifikate (`*.example.com`) eine bestimmte Subdomain wie. `api.example.com`
+ **Die Erstellung des DNS-Eintrags schlägt fehl. ** Stellen Sie sicher, dass die ID der gehosteten Zone korrekt ist und die Ausführungsrolle des Operators über Route 53-Berechtigungen verfügt. Stellen Sie sicher, dass die Domain zur gehosteten Zone gehört (`api.example.com`erfordert beispielsweise eine gehostete Zone für`example.com`). Wenn Sie einen NS-Delegierungskonflikt feststellen, verwenden Sie stattdessen die Host-Zonen-ID der delegierten Zone. Wenn Sie einen Datensatzkonflikt feststellen, besitzt ein anderer Endpunkt oder ein externer Prozess den A-Eintrag in dieser Domäne.
+ **Im DNS-Eintrag wird für einen längeren Zeitraum Ausstehend angezeigt. ** Stellen Sie sicher, dass die NS-Einträge der gehosteten Zone ordnungsgemäß vom übergeordneten Domain-Registrar delegiert wurden. Der Betreiber verwendet den DNS-Resolver des Pods (normalerweise CoreDNS), der Ergebnisse zwischenspeichern kann. Nach 10 Minuten ohne Auflösung wechselt der Status zu. `Error`
+ **Warnungen zum Ablauf des Zertifikats. ** Erneuern oder ersetzen Sie das Zertifikat in ACM. Bei ACM-issued Zertifikaten wickelt ACM die Verlängerung automatisch ab. Importieren Sie für importierte Zertifikate ein neues Zertifikat. Der Betreiber erkennt die Verlängerung automatisch und lädt das öffentliche Zertifikat erneut auf Amazon S3 hoch.