AWS SDK и NODE JS -> Неизвестная конечная точка - PullRequest
0 голосов
/ 14 января 2019

Я следовал этому руководству: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/ec2-example-creating-an-instance.html

Когда я запускаю код ниже - я получаю ошибку UnknowEndPoint.

  1. Я создал пользователя AWS IAM и добавил его в группу с именем политики «IAMFullAccess» - я не знаю, какая другая политика подойдет (я вижу на информационной панели AWS, что мои учетные данные имеют был использован программно - так что я думаю, эта часть работает хорошо ...)?

  2. Я поместил свои учетные данные в папку .aws в файле с именем учетные данные.

  3. Я не уверен, что на самом деле поместить внутри «KeyName» ниже - в настоящее время я ввел имя пары ключей, которое нашел, щелкнув по одному из моих существующих экземпляров AWS EC2 на панели инструментов. Это правильно?

Есть ли какая-либо группа безопасности или аналогичная, которую мне нужно отредактировать - чтобы можно было подключить NodeJS к моей учетной записи AWS? В противном случае я понятия не имею, что делать?

В файле start.js:

process.env.AWS_SDK_LOAD_CONFIG=1;    
var AWS_SDK = require('./aws_sdk');
var aws_sdk = new AWS_SDK();

aws_sdk.CopyInstance();

В файле aws_sdk.js:

function AWS_SDK() {

    this.CopyInstance = function() {

        try {

            // Load the AWS SDK for Node.js
            var AWS = require('aws-sdk');

            //Set the region
            AWS.config.update({region: 'us-east-2a'});

            var instanceParams = {
                ImageId: 'ami-0...',
                InstanceType: 't1.micro',
                KeyName: '<Key_name>',
                MinCount: 1,
                MaxCount: 1
            };

            // Create a promise on an EC2 service object
            var instancePromise = new AWS.EC2({apiVersion: '2016-11-15'}).runInstances(instanceParams).promise();

            // Handle promise's fulfilled/rejected states
            instancePromise.then(
                function (data) {
                    console.log(data);
                    var instanceId = data.Instances[0].InstanceId;
                    console.log("Created instance", instanceId);
                    // Add tags to the instance
                    var tagParams = {
                        Resources: [instanceId], Tags: [
                            {
                                Key: 'Name',
                                Value: 'SDK Sample'
                            }
                        ]
                    };

                    // Create a promise on an EC2 service object
                    var tagPromise = new AWS.EC2({apiVersion: '2016-11-15'}).createTags(tagParams).promise();
                    // Handle promise's fulfilled/rejected states
                    tagPromise.then(
                        function (data) {
                            console.log("Instance tagged");
                        }).catch(
                        function (err) {
                            console.error(err, err.stack);
                        });
                }).catch(
                function (err) {
                    console.error(err, err.stack);
                });
        }
        catch(e){
            wl.info('Error: ' + e);
        }
    } 

function create() {

    if(globalAWS === null)
        globalAWS = new AWS_SDK();

    return globalAWS;
}

module.exports = create;

ОШИБКА:

{UnknownEndpoint: недоступный хост: ec2.us-east-2a.amazonaws.com'. This service may not be available in the регион us-east-2a '. at Request.ENOTFOUND_ERROR (D: \ Workspace \ BitBucket \ Test \ node_modules \ aws-sdk \ lib \ event_listeners.js: 486: 46) в Request.callListeners (D: \ Workspace \ BitBucket \ Test \ node_modules \ aws-sdk \ lib \ sequential_executor.js: 106: 20) at Request.emit (D: \ Workspace \ BitBucket \ Test \ node_modules \ aws-sdk \ lib \ sequential_executor.js: 78: 10) at Request.emit (D: \ Workspace \ BitBucket \ Test \ node_modules \ aws-sdk \ lib \ request.js: 683: 14) в ClientRequest.error (D: \ Workspace \ BitBucket \ Test \ node_modules \ aws-sdk \ lib \ event_listeners.js: 325: 22) по требованию клиента. (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ HTTP \ Node.js: 93: 19) на ClientRequest.emit (events.js: 182: 13) в ClientRequest.EventEmitter.emit (domain.js: 442: 20) в TLSSocket.socketErrorListener (_http_client.js: 391: 9) в TLSSocket.emit (events.js: 182: 13) сообщение: «Недоступный хост: ec2.us-east-2a.amazonaws.com\'. This service may not be available in the us-east-2a \ 'region.', код:« UnknownEndpoint »,
регион: 'us-east-2a', имя хоста: 'ec2.us-east-2a.amazonaws.com',
retryable: true, originalError: {Ошибка: getaddrinfo ENOTFOUND ec2.us-east-2a.amazonaws.com ec2.us-east-2a.amazonaws.com:443 в GetAddrInfoReqWrap.onlookup [как oncomplete] (dns.js: 57: 26) сообщение: 'getaddrinfo ENOTFOUND ec2.us-east-2a.amazonaws.com ec2.us-east-2a.amazonaws.com:443', errno: «ENOTFOUND», код: 'NetworkingError', системный вызов: 'getaddrinfo', имя хоста: 'ec2.us-east-2a.amazonaws.com', хост: 'ec2.us-east-2a.amazonaws.com', порт: 443, регион: "сша-восток-2а", повторяемый: правда, время: 2019-01-14T20: 03: 42.177Z}, время: 2019-01-14T20: 03: 42.177Z} 'UnknownEndpoint: недоступный хост: ec2.us-east-2a.amazonaws.com\'. This service may not be available in the us-east-2a \ 'region. \ N at Request.ENOTFOUND_ERROR (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ event_listeners.js: 486: 46) \ п в Request.callListeners (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ sequential_executor.js: 106: 20) \ п по запросу. (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ sequential_executor.js: 78: 10) \ п по запросу. (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ request.js: 683: 14) \ п на ClientRequest.error (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ event_listeners.js: 325: 22) \ п по требованию клиента. (D: \ Рабочая область \ Bitbucket \ Test \ node_modules \ AWS-SDK \ Lib \ HTTP \ Node.js: 93: 19) \ п на ClientRequest.emit (events.js: 182: 13) \ n на ClientRequest.EventEmitter.emit (domain.js: 442: 20) \ n в TLSSocket.socketErrorListener (_http_client.js: 391: 9) \ n в TLSSocket.emit (events.js: 182: 13) '

Процесс завершен с кодом выхода 0

Если я изменю РЕГИОН на «us-east-2» (удалите «a» в конце), ошибка изменится на это:

{ Unsupported: The requested configuration is currently not supported. Please check the documentation for supported configurations.
    at Request.extractError (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\services\ec2.js:50:35)
    at Request.callListeners (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\request.js:683:14)
    at Request.transition (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\request.js:38:9)
    at Request.<anonymous> (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\request.js:685:12)
    at Request.callListeners (D:\Workspace\BitBucket\Test\node_modules\aws-sdk\lib\sequential_executor.js:116:18)
  message:
   'The requested configuration is currently not supported. Please check the documentation for supported configurations.',
  code: 'Unsupported',
  time: 2019-01-14T20:31:55.954Z,
  requestId: '815a44e2-5d0d-453e-a4ff-6faac2695064',
  statusCode: 400,
  retryable: false,
  retryDelay: 51.269952198296934 } 'Unsupported: The requested configuration is currently not supported. Please check the documentation for supported configurations.\n    at Request.extractError (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\services\\ec2.js:50:35)\n    at Request.callListeners (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\sequential_executor.js:106:20)\n    at Request.emit (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\sequential_executor.js:78:10)\n    at Request.emit (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\request.js:683:14)\n    at Request.transition (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\request.js:22:10)\n    at AcceptorStateMachine.runTo (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\state_machine.js:14:12)\n    at D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\state_machine.js:26:10\n    at Request.<anonymous> (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\request.js:38:9)\n    at Request.<anonymous> (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\request.js:685:12)\n    at Request.callListeners (D:\\Workspace\\BitBucket\\Test\\node_modules\\aws-sdk\\lib\\sequential_executor.js:116:18)'

Обновление 1:

Я изменил РЕГИОН с 'us-est-2' и теперь также обновил мой файл ~ / .aws / config (до того, как файл содержал только 1 строку / строку: 'region = us-west-2'):

[default]
region=us-west-2
output=json

Теперь я получаю эту ошибку (когда я пытаюсь декодировать ее в CMD) - я все еще не понимаю, какие дополнительные роли мне нужно дать / предоставить моему пользователю IAM-AWS, чтобы он мог прочитать сообщение об ошибке?

An error occurred (AccessDenied) when calling the DecodeAuthorizationMessage operation: User: arn:aws:iam::0046xxxxxxx:user/user_name is not authorized to perform: sts:DecodeAuthorizationMessage

Ответы [ 2 ]

0 голосов
/ 15 января 2019

После того, как я добавил роль IAM: «AdministratorAccess», все проблемы исчезли :) Теперь возникает вопрос - какую роль (и) на самом деле нужно предоставить, чтобы она работала ... «AdministratorAccess» был только для целей тестирования .

0 голосов
/ 15 января 2019

Вы настроили свой регион AWS как us-east-2a. Это не регион, это зона доступности. Ваш регион должен быть настроен как us-east-2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...