So erhalten Sie Instanzmetadaten mit dem PHP AWS SDK
P粉032649413
P粉032649413 2023-08-27 11:20:25
0
1
606
<p>Ich möchte das AWS SDK verwenden, um die Instanzmetadaten (z. B. AZ) der aktuellen EC2-Instanz abzurufen. Ich habe eine Alternative gefunden, aber sie verwendet nicht das SDK, sondern nur <code>file_get_contents</code>. Wie verwende ich das SDK, um diese Funktion zu implementieren? </p>
P粉032649413
P粉032649413

Antworte allen(1)
P粉360266095

JasonQ-AWS提出的解决方案对于获取帐户中所有实例和应用程序的信息非常有用。然而,它并不告诉您描述当前进程执行的实例的信息。

为了实现这一点,您需要使用IMDSv2,它需要两个CURL命令,第一个用于获取令牌,第二个用于获取当前实例的实际元数据。

在PHP中,代码可以是:

$ch = curl_init();

// 获取有效的令牌
$headers = array (
        'X-aws-ec2-metadata-token-ttl-seconds: 10' );
$url = "http://169.254.169.254/latest/api/token";

curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "PUT" );
curl_setopt( $ch, CURLOPT_URL, $url );
$token = curl_exec( $ch );

echo "<p> TOKEN :" . $token;

// 获取当前实例的元数据
$headers = array (
        'X-aws-ec2-metadata-token: '.$token );
$url = "http://169.254.169.254/latest/dynamic/instance-identity/document";

curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "GET" );
$result = curl_exec( $ch );

echo "<p> RESULT :" . $result;

您只需要提取所需的信息。您还可以使用更具体的URL请求唯一的信息,例如实例ID:

$url = "http://169.254.169.254/latest/meta-data/instance-id";
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage