2

Nodeのaws-libモジュールを使用しています。これはノードAPIのかなり薄いラッパーであると理解しています。たとえば、call( "CreateTags")を実行すると、APIに記載されているようにCreateTags呼び出しがラップされます。

RunInstanceやDescribeInstancesが正常に機能するなど、他のAPI関数を正常に呼び出しています。ただし、CreateTagsは問題を引き起こします。

ec2.call("CreateTags", {
  'ResourceId.1':notmyrealresourceid,
  'Tag.1.Key':'Name'
  'Tag.1.Value':'Somemachine'
}, function(err, result){
  if ( err) {
    console.log('Failure tagging image');
    console.log(err)
  }
}) 

エラーで次のように応答します。

The action CreateTags is not valid for this web service.

APIは、CreateTagsが存在することを明確に示しています。どうすればそれを機能させることができますか?私は何が欠けていますか?ありがとう!

4

2 に答える 2

2

これは、 aws-libのオプションのAmazon EC2API'version 'パラメーターの疑わしいデフォルトに起因しているようです。varec2Clientの現在のマスターブランチ定義を参照してください。

  // Amazon EC2 API handler which is wrapped around the genericAWSClient
  var ec2Client = function(obj) {
    var aws = genericAWSClient({
      host: obj.host, path: obj.path, accessKeyId: obj.accessKeyId,
      secretAccessKey: obj.secretAccessKey, secure: obj.secure
    });
    obj.call = function(action, query, callback) {
      query["Action"] = action
      query["Version"] = obj.version || '2009-11-30'
      query["SignatureMethod"] = "HmacSHA256"
      query["SignatureVersion"] = "2"
      return aws.call(action, query, callback);
    }
    return obj;
  }

つまり、選択されたEC2 APIバージョンのデフォルトはかなり古い「2009-11-30」(現在は「2012-04-01」)であり、タグのサポートはAPIバージョン「2010-08-31」でのみ導入されています(を参照)。リリース:2010-09-19のAmazon EC2-バージョンに依存しない概要は、 Amazon Elastic Compute Cloud APIリファレンス内のドキュメント履歴から入手できます)。

したがって、十分に新しいEC2 APIバージョンを提供するだけで、問題はありません。

于 2012-05-03T19:22:41.617 に答える
1

また...

パラメータに意図しない余分なスペースがないことを確認してください。例えば

https://ec2.amazonaws.com/?Action=RunInstances&ImageId=ami-7ba91a12&MaxCount=3&MinCount=1&Placement.AvailabilityZone=us-east-1b&Monitoring.Enabled=true&AWSAccessKeyId=AKIAJTLX2WXU44OXMBKQ&Version=2012-07-20&Timestamp = 2012-09-19T21: 07:32&SignatureVersion = 2&SignatureMethod = HmacSHA256&Signature = XXXXXXXXXXXXXXXXXXXXX

または、そのエラーメッセージが表示されます。バージョン以外の他のパラメータのスペースでさえ、このエラーを引き起こします。

このWebサイトでec2ツールの最新リリースを見つけることができます。 http://aws.amazon.com/developertools/351

于 2012-09-20T01:09:33.410 に答える