0

クライアントから必要なアクセス キー/署名を取得したので、今すぐ Ruby SDK を介して API を操作できます。つまり、Ruby SDK には、スポット インスタンスを要求するための高レベル API メソッドがまったくありません。そのため、生の REST API リクエストを介して手動でこれを行う必要があります。

基本的に、私が使用している認証情報は (Ruby SDK を介して機能するため) 正しいのですが、生のリクエストを機能させることができません... スポット リクエスト ウィザードの Web ページが応答として返されるか、エラーが発生します。 :The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

私が使用しているURLは次のとおりです。

https://ec2.amazonaws.com/?Action=RequestSpotInstances
&SpotPrice.1=0.05
&AvailabilityZoneGroup.1=us-east-1c
&LaunchSpecification.ImageId.1=THE_AMI_ID
&LaunchSpecification.KeyName.1=THE_KEYPAIR
&LaunchSpecification.InstanceType.1=m1.medium
&AWSAccessKeyId=THE_ACCESS_KEY
&Signature=THE_ACCESS_SIGNATURE
&Version=>2013-10-01
&Expires=>THE_EXPIRATION_TIME_36000_SECONDS_LATER_THAN_NOW
&SignatureVersion=2
&SignatureMethod=HmacSHA256

なぜこれがうまくいかないのかについてのアイデアはありますか? Ruby SDK コードを調査して、彼らがどのようにそれを行っているかを調べてみましたが、非常に複雑で、このアクションが実際にどこで行われるのかわかりません。ありがとう!

4

1 に答える 1

2

どのように署名を計算しますか? まず、正しい署名プロセス バージョンを使用していることを確認します。AWS api は実際にはバージョン v2 と v4 をサポートしています。一部の aws リソースは両方のバージョンをサポートし、一部は v2 または v4 のみをサポートします。これに基づいて、次のことをお勧めします。

  1. 実装した署名のバージョンを確認してください。バージョンの詳細: http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

  2. ここで説明されているアルゴリズムとの実装の一致を確認してください: http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html

于 2013-11-10T06:34:40.347 に答える