AWSのコマンドラインツールで接続できなかった件
EBSのボリュームサイズを変更したり、インスタンスタイプのストレージをアタッチしたりするのにはManagementConsoleからの起動では指定できないらしいのでコマンドラインツール使ってみた。が、認証に失敗して接続できなくて困ったので解決法をメモっておく。
環境
Mac osx lion 10.7.2
状況
「Amazon EC2 API Tools」をダウンロードして適当に鍵ファイルもダウンロードしてきて環境設定の設定をしてec2verコマンドは通った。
$ ec2ver 1.5.2.4 2011-12-15
で、descrive-imagesするとエラーが出る。
$ ec2-describe-images -x all Client.MalformedSOAPSignature: Invalid SOAP Signature. Failed to check signature with X.509 cert
ついでに--debugでも実行した結果
$ ec2-describe-images -a --debug Client.MalformedSOAPSignature: Invalid SOAP Signature. Failed to check signature with X.509 cert com.amazon.aes.webservices.client.Jec2SoapFaultException: SOAP Fault[code=Client.MalformedSOAPSignature, str='Invalid SOAP Signature. Failed to check signature with X.509 cert'] at com.amazon.aes.webservices.client.Jec2Impl.UnwrapException(Jec2Impl.java:280) at com.amazon.aes.webservices.client.Jec2Impl.describeImages(Jec2Impl.java:469) at com.amazon.aes.webservices.client.cmd.DescribeImages.invokeOnline(DescribeImages.java:165) at com.amazon.aes.webservices.client.cmd.BaseCmd.invoke(BaseCmd.java:876) at com.amazon.aes.webservices.client.cmd.DescribeImages.main(DescribeImages.java:181)
ちゃんと「cert-XXX.pem」と「pk-XXX.pem」を入れてるのになんでー?と。
解決
で、色々調べてたら違う鍵ファイル使ってたみたい。
「cert-XXX.pem」と「pk-XXX.pem」のXXXの部分は同じ文字列のファイルが正解でした。
僕はamazonの証明書取得ページから「一対の鍵」の欄の所から鍵ダウンロードしてました。アホス。。
正しい取得方法は
・ X.509 証明書タブから新しいアクセスキーを作成するをクリック
・出てきたダイアログで2つのキーファイルをダウンロードしてくださいって画面が出るので両方ダウンロード。
その二つの「cert-XXX.pem」と「pk-XXX.pem」のファイルのパスを環境変数に指定し直せば通るはずです。
こんな所でハマる人はあまり居ないかもしれないけど、一応残しておく。