cari

Rumah  >  Soal Jawab  >  teks badan

Cara mendapatkan metadata contoh menggunakan PHP AWS SDK

<p>Saya mahu menggunakan SDK AWS untuk mendapatkan metadata tika (cth AZ) tika EC2 semasa. Saya menemui alternatif, tetapi ia tidak menggunakan SDK, cuma <kod>file_get_contents</kod>. Bagaimana untuk menggunakan SDK untuk melaksanakan fungsi ini? </p>
P粉032649413P粉032649413484 hari yang lalu627

membalas semua(1)saya akan balas

  • P粉360266095

    P粉3602660952023-08-28 00:00:45

    Penyelesaian yang dicadangkan oleh JasonQ-AWS sangat berguna untuk mendapatkan maklumat semua kejadian dan aplikasi dalam akaun. Walau bagaimanapun, ia tidak memberitahu anda maklumat yang menerangkan contoh di mana proses semasa sedang dilaksanakan.

    Untuk mencapai ini, anda perlu menggunakan IMDSv2, yang memerlukan dua arahan CURL, yang pertama untuk mendapatkan token dan yang kedua untuk mendapatkan metadata sebenar tika semasa.

    Dalam PHP, kodnya boleh menjadi:

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

    Anda hanya perlu mengekstrak maklumat yang anda perlukan. Anda juga boleh meminta maklumat unik seperti ID contoh menggunakan URL yang lebih khusus:

    $url = "http://169.254.169.254/latest/meta-data/instance-id";

    balas
    0
  • Batalbalas