インスタンスユーザーデータの使用 - Amazon Elastic Compute Cloud

インスタンスユーザーデータの使用

インスタンスユーザーデータを使用する場合は、次の点に注意してください。

  • ユーザーデータは、base64 でエンコードされている必要があります。Amazon EC2コンソールは、base64 エンコードを実行したり、base64 エンコード入力を受け入れたりできます。

  • ユーザーデータは raw 形式の 16 KB に制限されます (以前は base64 エンコード)。base64 エンコード後の 文字列の長さサイズ n は、ceil(n/3)*4 です。

  • ユーザーデータを取得するときにユーザーデータを base64 デコードする必要があります。インスタンスのメタデータあるいはコンソールを使用してデータを取得する場合、自動的にデコードされます。

  • ユーザーデータは非透過的なデータとして取り扱われ、指定したデータがそのまま返されます。このデータを解釈できるかどうかは、インスタンスによって異なります。

  • インスタンスを停止してユーザーデータを変更した後に、インスタンスを起動した場合でも、更新されたユーザーデータは自動的には実行されません。ただし、インスタンスを起動するか、インスタンスを再起動または起動するたびに、更新されたユーザーデータスクリプトが 1 回実行されるように設定することができます。

起動時にインスタンスユーザーデータを指定する

インスタンスの起動時のユーザーデータを指定できます。ユーザーデータが起動時に 1 回実行されるように指定するか、またはインスタンスを再起動または起動するたびに実行されるように指定することができます。詳細については、「Windows インスタンスでの起動時のコマンドの実行」を参照してください。

インスタンスユーザーデータを変更する

ルートボリュームが EBS ボリュームの場合は、停止状態のインスタンスのユーザーデータを変更することができます。詳細については、「インスタンスユーザーデータの表示と更新」を参照してください。

インスタンスユーザーデータを取得する

実行中のインスタンス内からユーザーデータを取得するには、次の URI を使用します。

http://169.254.169.254/latest/user-data

ユーザーデータのリクエストは、データをそのままの状態で返します (コンテンツタイプ application/octet-stream)。

この例は、カンマで区切られたテキストとして指定されたユーザーデータを返します。

IMDSv2
PS C:\> $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,,,

この例では、スクリプトとして指定されたユーザーデータを返します。

IMDSv2
PS C:\> $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>

お使いのコンピュータからインスタンスのユーザーデータを取得するには、ユーザーデータと Tools for Windows PowerShell をご参照ください。