わーくあうと!

日々の作業でためになったことをアウトプットすることで自分の成長につながればなと。

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」のファイルのパスを環境変数に指定し直せば通るはずです。

こんな所でハマる人はあまり居ないかもしれないけど、一応残しておく。