Arbeiten mit Instance-Benutzerdaten - Amazon Elastic Compute Cloud

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.

Arbeiten mit Instance-Benutzerdaten

Sie können Instance-Benutzerdaten verwenden, um Ihre Instances anzupassen. Wenn Sie eine Instance starten, können Sie Parameter oder Skripts als Benutzerdaten speichern. Alle Skripts in Benutzerdaten werden beim Start der Instance ausgeführt. Sie können Benutzerdaten als Instance-Attribut anzeigen. Sie können Benutzerdaten aus Ihrer Instance auch über den Instance Metadata Service (IMDS) anzeigen.

Überlegungen
  • Benutzerdaten werden als undurchsichtige Daten behandelt: Was Sie angeben, ist das, was Sie beim Abrufen zurückerhalten. Es ist Sache der Instanz, Benutzerdaten zu interpretieren und darauf zu reagieren.

  • Benutzerdaten müssen mit Base64 codiert werden. Je nachdem, welches Tool oder SDK Sie verwenden, wird die Base64-Kodierung möglicherweise für Sie durchgeführt. Beispielsweise:

    • Die Amazon EC2-Konsole kann die base64-Codierung für Sie durchführen oder base64-codierte Eingaben entgegennehmen.

    • AWS CLI Version 2 führt standardmäßig die Base64-Kodierung von Binärparametern für Sie durch. AWS CLI Version 1 führt die Base64-Kodierung des Parameters für Sie durch. --user-data

    • Die AWS SDK for Python (Boto3) führt die Base64-Kodierung des Parameters für Sie durch. UserData

  • Benutzerdaten sind auf 16 KB an Rohdaten, bevor diese base64-codiert werden, begrenzt. Die Länge einer Zeichenfolge n nach base64-Codierung ist ceil(n/3)*4.

  • Benutzerdaten müssen base64-decodiert werden, wenn Sie sie abrufen. Wenn Sie die Daten über Instance-Metadaten oder die Konsole abrufen, werden sie automatisch für Sie dekodiert.

  • Wenn Sie eine Instance anhalten, ihre Benutzerdaten ändern und die Instance wieder starten, werden die aktualisierten Benutzerdaten nicht automatisch ausgeführt, wenn Sie die Instance starten. Bei Windows-Instanzen können Sie Einstellungen so konfigurieren, dass aktualisierte Benutzerdatenskripts einmal ausgeführt werden, wenn Sie die Instanz starten oder bei jedem Neustart oder Start der Instanz.

  • Benutzerdaten sind ein Instance-Attribut. Wenn Sie ein AMI auf der Grundlage einer Instance erstellen, sind die Instance-Benutzerdaten nicht im AMI enthalten.

Angeben von Instance-Benutzerdaten beim Start

Sie können Benutzerdaten angeben, wenn Sie eine Instance starten. Eine Anleitung für die Konsole finden Sie unter Angeben von Instance-Benutzerdaten beim Start. Ein Linux-Beispiel, das den verwendet AWS CLI, finden Sie unterBenutzerdaten und die AWS CLI. Ein Windows-Beispiel, das die Tools für Windows verwendet PowerShell, finden Sie unterBenutzerdaten und die Tools für Windows PowerShell.

Ändern von Instance-Benutzerdaten

Sie können Benutzerdaten für Instances mit einem EBS-Stamm-Volume ändern. Die Instances muss angehalten werden. Eine Anleitung für die Konsole finden Sie unter Anzeigen und Aktualisieren der Instance-Benutzerdaten. Ein Linux-Beispiel, das die verwendet AWS CLI, finden Sie unter modify-instance-attribute. Ein Windows-Beispiel, das die Tools für Windows verwendet PowerShell, finden Sie unterBenutzerdaten und die Tools für Windows PowerShell.

Abrufen von Instance-Benutzerdaten aus Ihrer Instance

Verwenden Sie eine der folgenden URIs, um Benutzerdaten aus einer Instanz abzurufen. Um Benutzerdaten mithilfe der IPv6-Adresse abzurufen, müssen Sie sie aktivieren, und die Instanz muss eine Instanz sein, die auf dem AWS Nitro-System in einem Subnetz basiert, das IPv6 unterstützt.

IPv4

http://169.254.169.254/latest/user-data

IPv6

http://[fd00:ec2::254]/latest/user-data

Eine Anfrage für Benutzerdaten geben die Daten unverändert zurück (Content-Type application/octet-stream). Wenn die Instance keine Benutzerdaten hat, gibt die Anfrage 404 - Not Found zurück.

Beispiel: Durch Kommas getrennten Text abrufen

In diesem Beispiel werden Benutzerdaten abgerufen, die als kommagetrennter Text angegeben wurden.

cURL

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
PowerShell

IMDSv2

PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

IMDSv1

PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} ` -Method PUT -Uri http://169.254.169.254/latest/api/token} -Method GET -uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
Beispiel: Rufen Sie ein Skript ab

In diesem Beispiel werden Benutzerdaten abgerufen, die als Skript angegeben wurden.

cURL

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on
Powershell

IMDSv2

PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

IMDSv1

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

Abrufen von Instance-Benutzerdaten von Ihrem Computer

Sie können Benutzerdaten für eine Instance von Ihrem eigenen Computer abrufen. Eine Anleitung für die Konsole finden Sie unter Anzeigen und Aktualisieren der Instance-Benutzerdaten. Ein Beispiel, das die verwendet AWS CLI, finden Sie unterBenutzerdaten und die AWS CLI. Ein Beispiel, das die Tools für Windows verwendet PowerShell, finden Sie unterBenutzerdaten und die Tools für Windows PowerShell.