Serverless Framework - Как отключить все маршруты API для функции AWS Lambda и использовать только SNS - PullRequest
0 голосов
/ 07 июля 2019

Я использую Serverless Framework и хочу создать функцию AWS Lambda, которая запускается только через уведомления SNS.

functions:
  myHandler:
    handler: handler.foo
    events:
      - sns: mySNSTopic

Однако при этом создается маршрут POST:

Serverless: Routes for myHandler:
Serverless: POST /{apiVersion}/functions/my-app-staging-myHandler/invocations

Почему это происходит?Как я могу его отключить?

Обновление Я вижу, что теперь оно только в автономном режиме

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

После игры с ним я вижу, что он создается только без сервера и не запускается. Я использовал sls, чтобы самому вызывать лямбду, используя sls lambda invoke.

0 голосов
/ 07 июля 2019

Почему он это делает?Я не знаю.

Как я могу его отключить?Я могу помочь вам с этим.Я не знаю, как остановить генерацию POST-маршрута, но я могу показать вам, как остановить вызов вашей функции чем-либо, кроме SNS.

Вы можете прикрепить политику IAM на основе ресурсов к своей лямбда-функции .В частности, вы можете прикрепить политику, которая запрещает любой доступ для вызова лямбда-функции, за исключением разрешения SNS вызывать ее.

Политика будет выглядеть примерно так:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "InvokeMyLambdaFunctionOnlyFromSNS",
        "NotPrincipal": {
            "Service": [
                "sns.amazon.com"
            ]
        },
        "Effect": "Deny",
        "Action": "lambda:InvokeFunction",
        "Resource": "arn:aws:lambda:region:AccountID:function:function_name"
    }]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...