Comment obtenir des métadonnées d'instance à l'aide du SDK PHP AWS
P粉032649413
P粉032649413 2023-08-27 11:20:25
0
1
624
<p>Je souhaite utiliser le SDK AWS pour obtenir les métadonnées d'instance (par exemple AZ) de l'instance EC2 actuelle. J'ai trouvé une alternative, mais elle n'utilise pas le SDK, juste <code>file_get_contents</code>. Comment utiliser le SDK pour implémenter cette fonction ? </p>
P粉032649413
P粉032649413

répondre à tous(1)
P粉360266095

La solution proposée par JasonQ-AWS est très utile pour obtenir les informations de toutes les instances et applications du compte. Cependant, il ne vous fournit pas d'informations décrivant l'instance dans laquelle le processus en cours s'exécute.

Pour y parvenir, vous devez utiliser IMDSv2, qui nécessite deux commandes CURL, la première pour obtenir le jeton et la seconde pour obtenir les métadonnées réelles de l'instance actuelle.

En PHP, le code peut être :

$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;

Il vous suffit d'extraire les informations dont vous avez besoin. Vous pouvez également demander des informations uniques telles que l'ID de l'instance en utilisant une URL plus spécifique :

$url = "http://169.254.169.254/latest/meta-data/instance-id";
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal