EC2 ではキーペア(公開鍵と秘密鍵)が必要になりますが、
Management Console から自動生成せずに
手元で生成したキーペアを AWS へ登録する方法のメモです。
実際の注意点などは
http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-ImportKeyPair.html
http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/index.html?ApiReference-query-ImportKeyPair.html
に記載されています。
Windows での方法の一例です。
(Putty ですが日本語パッチを当てた状態での説明となっています。)
まず PuTTY の鍵生成アプリ(puttygen.exe)を使用して鍵を生成します。
- 鍵を生成
- SSH-2 RSA の形式の鍵を選択してください。
- サポートされている鍵の長さですが
現時点では 1024,2048,4096 のどれかを選択してください。
(REST API を使用する場合は 1024 だけのサポートのようです。)
- パスフレーズを設定
厄介なのが ec2-api-tools の ec2-import-keypair で公開鍵を登録なのですが
この段階ですでにキーペアが必要になります…
ec2-api-tools は http://aws.amazon.com/developertools から
Amazon EC2 API Tools で探し出せます。
(http://aws.amazon.com/developertools/351)
EC2 自体は REST API をサポートしているのですが、
なぜかコンソールツール(ec2-api-tools)はリニューアルされていません。
PHP で REST API を使用してキーのアップロードを行うスクリプト例
<?php require_once 'AWSSDKforPHP/sdk.class.php'; $ec2 = new AmazonEC2(); // リージョンの設定は必須です。 $ec2->set_region( AmazonEC2::REGION_APAC_NE1 ); $ec2->debug_mode = true; $ec2->use_ssl = true; $key_name = 'キーの名前'; $public_key_material = file_get_contents('公開鍵が含まれているファイル名'); $response = $ec2->import_key_pair( $key_name, $public_key_material ); var_dump( $response ); if ( $response->isOK() ) { echo "success."; } else { echo "failed"; } ?>
REST API を使用してキーペアを登録する場合は鍵の長さが 1024 ビットでない場合は
for parameter PublicKeyMaterial is invalid. Length exceeds maximum of 1024.
こんなエラーメッセージが帰ってきます。
1024 ビットより大きい長さの鍵を使用したい場合は
ec2-api-tools でコマンドラインから登録が必要みたいです…