无法使用带有 browserify 的 nodejs aws-sdk 找到 EC2 服务

Cannot find EC2 service using nodejs aws-sdk with browserify

我将 Node.js 与 browserify 一起使用,并且我已经像这样设置了 AWS:

var AWS = require('aws-sdk');
AWS.config.region = 'us-west-2b';

这很好用。当我打印到控制台时返回一个对象。

然而,当我这样做时:

var ec2 = new AWS.EC2();
console.log(ec2);

找不到 EC2。我得到 undefined is not a function

EC2 似乎不存在。所有文档都以这种方式指导我。

试试这个脚本,对我来说没问题。

// ec2script.js
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
AWS.config.update({accessKeyId: 'XXXXXXXXXXXXXXXXXXXX', secretAccessKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
var ec2 = new AWS.EC2();
console.log('EC2');
console.log(ec2);

只需执行

>node ec2script.js

这是我得到的回复。

EC2
{ config:
   { credentials:
      { expired: false,
        expireTime: null,
        accessKeyId: 'XXXXXXXXXXXXXXXXXXXX',
        sessionToken: undefined },
     credentialProvider: { providers: [Object] },
     region: 'us-east-1',
     logger: null,
     apiVersions: {},
     apiVersion: null,
     endpoint: 'ec2.us-east-1.amazonaws.com',
     httpOptions: { timeout: 120000 },
     maxRetries: undefined,
     maxRedirects: 10,
     paramValidation: true,
     sslEnabled: true,
     s3ForcePathStyle: false,
     s3BucketEndpoint: false,
     computeChecksums: true,
     convertResponseTypes: true,
     dynamoDbCrc32: true,
     systemClockOffset: 0,
     signatureVersion: 'v4' },
  isGlobalEndpoint: false,
  endpoint:
   { protocol: 'https:',
     host: 'ec2.us-east-1.amazonaws.com',
     port: 443,
     hostname: 'ec2.us-east-1.amazonaws.com',
     pathname: '/',
     path: '/',
     href: 'https://ec2.us-east-1.amazonaws.com/' } }

如果这不起作用,请检查您使用的访问密钥和秘密密钥是否正确。如果密钥正确但您仍然遇到问题,请检查以确保为密钥制定了正确的策略。

希望对您有所帮助。