Как отправить сообщение из AWS Lambda в AWS SQS в другой учетной записи AWS?

У меня есть вариант использования для отправки сообщения из функции AWS Lambda, скажем, из учетной записи A,в AWS SQS в учетной записи B, В учетной записи A я написал функцию Lambda, которая использует библиотеку aws-sdk в NodeJs для использования sendMessage method to send a message to the Queue URL in Account B, У функции Lambda есть роль с разрешением на отправку сообщений сервису SQS

В учетной записи B я создал SQS, у которого есть разрешение на использование ARN of the IAM role of the Lambda function in Account A as a Principal, и SQS в качестве ресурса.

Лямбда-код -

import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
const sqsClient = new SQSClient({ region: "ap-southeast-1" });

export const handler = async (event) => {
  let response;

  const params = {
    MessageGroupId: "test",
    MessageBody: "some message here",
    QueueUrl: "https://sqs.ap-southeast-1.amazonaws.com/AWS_ACCOUNT_B_NUMBER/TEST.fifo"
  };

  try {
    const data = await sqsClient.send(new SendMessageCommand(params));
    if (data) {
      console.info("Success, message sent. MessageID:", data.MessageId);
      const bodyMessage = 'Message Sent, MessageId: ' +data.MessageId;
      response = {
        statusCode: 200,
        body: JSON.stringify(bodyMessage),
      };
    }else{
      response = {
        statusCode: 500,
        body: JSON.stringify('Some error occured !!')
      };
    }
    return response;
  }
  catch (err) {
    console.info("Error", err);
  }

};

Заявление о разрешении SQS —

{
      "Sid": "Stmt1676274704834",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::AWS_ACCOUNT_A_NUMBER:role/test-ap-southeast-1-lambdaRole"
      },
      "Action": "sqs:SendMessage",
      "Resource": "*"
}

Я получаю следующую ошибку -

The specified queue does not exist or you do not have access to it.

Есть ли у вашей лямбда-роли политика, разрешающая отправку сообщений? Для действий между учетными записями вам необходимо разрешение на вашу роль и на целевой ресурс.

luk2302 13.02.2023 11:36

Как прошло? это помогло?

Jatin Mehrotra 14.02.2023 03:51
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
0
2
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть 2 способа сделать это: -

  1. Используйте политику доступа для очередей Sqs, чтобы разрешить разные очереди доступа к учетным записям. Обычно в политике вы добавляете лямбда-роль, чтобы разрешить доступ.

  2. Настройте роль в учетной записи sqs, которую возьмет на себя лямбда. Дайте Lambda права на принятие роли, чтобы принять роль, созданную в учетной записи sqs, а затем lambda примет и получит временные учетные данные для выполнения операции.

Другие вопросы по теме