Как вызвать сервис в другом регионе с помощью лямбда и AWS SDK

Попытка вызвать PutRecord службы AWS Firehose с помощью AWS SDK из функции Lambda, расположенной в другом регионе, с использованием среды NodeJS. Это работает, когда Lambda Function и Firehose находятся в одном регионе, и не работает, когда Function находится в другом регионе. Прикреплена ли к нему настройка роли Firehose или IAM, которая может разрешать эти межрегиональные звонки?


person Anatoly Leonov    schedule 30.10.2020    source источник


Ответы (2)


Вы просто указываете название региона в своем sdk. Например, в Python должно быть достаточно следующего:

import boto3

client = boto3.client('firehose', region_name='us-west-2')

client.put_record(...)

Никаких других специальных настроек не требуется.

В nodejs это будет:


var fh = new AWS.Firehose({region: 'us-west-2'});

person Marcin    schedule 30.10.2020
comment
Спасибо за ваш ответ. На самом деле я использую его сейчас, как вы описали. Проблема на самом деле в том, что вызовы SDK не достигают Firehose. - person Anatoly Leonov; 30.10.2020
comment
@AnatolyLeonov Это должно быть вызвано чем-то другим. Без более подробной информации в ваших вопросах трудно рассуждать. - person Marcin; 31.10.2020
comment
Спасибо за внимание. Похоже, этот случай нужно настроить по-другому - person Anatoly Leonov; 13.11.2020

Проблема была в том, что я неправильно указал регион. Вместо того, чтобы указывать регион только для Firehose, нужно указать регион для SDK:

Вместо:

const AWS = require('aws-sdk');
const firehose = new AWS.Firehose({ region: 'us-east-1' });

С использованием:

const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });
const firehose = new AWS.Firehose();
person Anatoly Leonov    schedule 13.11.2020