aws sqs: сообщение об ошибке «отсутствуют учетные данные в конфигурации» - PullRequest
0 голосов
/ 12 марта 2019

Я использую экземпляр ec2 с ролью IAM, которая дает мне все права на sqs

{
"Version": "2012-10-17",
"Statement": [
    {
        "Action": [
            "sqs:*"
        ],
        "Effect": "Allow",
        "Resource": "*"
    }
]

}

Роль IAM имеет отношение 'ec2' в качестве доверительных отношений.

В этом случае у меня есть приложение node.js, работающее с aws-sdk.Я использую библиотеку sqs-customer для доступа к очереди.

Это мой код инициализации:

const consumer = require('sqs-consumer');
const AWS = require('aws-sdk');

let options = {apiVersion: '2012-11-05', region:'eu-central-1'};

let sqsClient = new AWS.SQS(options);

        const app = consumer.create({
            queueUrl: 'my_sqs_url',
            region:'eu-central-1',
            handleMessage: handleMessage,
            sqs: sqsIncoming,
            messageAttributeNames:['All']
        });

        app.on('error', (err) => {
            console.log(err);
        });

Точное сообщение об ошибке, которое я получаю: «Сбой получения сообщения SQS: отсутствуют учетные данные в конфигурации».Что верно, поскольку роль IAM должна предоставлять учетные данные, в соответствии с документацией это должно работать автоматически ( ссылка ).Я также использую эту настройку для пары экземпляров автоматического масштабирования ecs, и это работает без проблем, хотя я использую там более старую версию sdk (2.324.0).

Я использую aws-sdk версии 2.4.19 (последняя на данный момент).

- РЕДАКТИРОВАТЬ - Я забыл упомянуть, я использую Windows Server AMI.

Вещи, которые я пробовал:

  • определение жестко закодированных учетных данных, тогда это работает
  • создание более широкого профиля sqs (как видно выше)
  • попробовал 2-й ответ из этой темы

Поэтому мне интересно, почему это не работает, мне нужна дополнительная настройка aws-sdk?

- EDIT2-- Оказывается, мне нужно больше установочного кода, см. эту ссылку для получения дополнительной информации.

Когда я вызываю sqs с помощью aws-cli, теперь я получаю сообщение об ошибке: Ошибка при получении учетных данных из Ec2InstanceMetadata: учетные данные не найдены в credential_source, указанном в профиле по умолчанию

Моя конфигурация выглядит как

# In ~/.aws/config
[profile default]
role_arn=arn:aws:iam:...
credential_source=Ec2InstanceMetadata
...