2016-03-20 7 views
0

Ich möchte in SNS veröffentlichen oder eine Nachricht an SQS von Lambda mit der Anrufer-ID senden, die über API-Gateway kam.Übergeben Sie IAM an Lambda über API-Gateway und senden Sie eine Nachricht an SQS mit übergebenem IAM

In unserem Fall erhalten wir eine Nachricht und eine Reihe von Warteschlangen über API Gateway. Lambda ruft die Nachricht ab und sendet sie an verschiedene Warteschlangen, die in der Nachricht selbst erwähnt werden. Der Aufrufer kann Zugriff auf die in der Anforderung angegebene Warteschlange haben oder nicht. Wie können wir sicherstellen, dass jeder Anrufer nur seine eigene Warteschlange senden kann?

Anrufer können den Namen einer Warteschlange senden, auf die sie keinen Zugriff haben. Ich möchte die Anruferidentität innerhalb von Lambda zum Senden von Nachrichten verwenden.

Antwort

1

Es ist nicht möglich, Anruferanmeldeinformationen innerhalb Ihrer Lambda-Integration zu verwenden. Ihr Lambda verwendet immer die Berechtigungsnachweise aus der Ihrer Lambda-Funktion zugewiesenen Rolle. Sie können die $ context.identity in Ihrer API-Gateway-Umwandlung verwenden, um den Aufrufer an Ihre Lambda-Funktion zu übergeben und dann eine Entscheidung in Ihrem Lambda zu treffen, ob der Aufrufer Zugriff hat oder nicht.

Sie können Ihr API-Gateway auch so einrichten, dass SNS/SQS direkt über die AWS service proxy mit aktivierten Anruferanmeldeinformationen angerufen wird. Dies würde sicherstellen, dass die Anrufer Berechtigungen haben. Sie verlieren etwas Flexibilität, die die Lambda-Funktion bietet, aber das ist der Kompromiss, den Sie berücksichtigen müssen.

Verwandte Themen