Как программно зарегистрировать правило прослушивателя лямбды в ALB? - PullRequest
0 голосов
/ 07 января 2019

Учитывая, что интеграция ALB Lambda в настоящее время не поддерживается Cloudformation, я пытаюсь написать простой скрипт для создания целевой группы, зарегистрировать лямбду в целевой группе и затем указать правило прослушивателя для этой целевой группы.

Это работает, когда я делаю это через пользовательский интерфейс, однако мои попытки зарегистрировать лямбда-мишень в целевой группе не удаются (как в скрипте python, так и в cli):

botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the RegisterTargets operation: elasticloadbalancing principal does not have permission to invoke <LAMBDA ARN> from target group <TARGET GROUP ARN>

Ниже приведен скрипт Python, который делает это:

import boto3
import os

environment = os.environ['ENV']
cloudformation = boto3.resource('cloudformation')
elb = boto3.client('elbv2')

stack = cloudformation.Stack('boomerang')

output = [x for x in stack.outputs if x['ExportName'] == 'boomerang-beacon-lambda'][0]
beacon_arn = output['OutputValue']

response = elb.create_target_group(
  TargetType='lambda',
  Name='public-%s-boomerang-beacon' % environment
)

target_group_arn = response['TargetGroups'][0]['TargetGroupArn']

elb.register_targets(
  TargetGroupArn=target_group_arn,
  Targets=[
    {
      'Id': beacon_arn
    },
  ]
)

Спасибо

1 Ответ

0 голосов
/ 25 января 2019

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

  LambdaFunctionPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !GetAtt LambdaTargetFunction.Arn
      Principal: elasticloadbalancing.amazonaws.com
      SourceArn: !Ref TargetGroup

Дополнительную информацию о функциональности Lambda Add Permission можно найти здесь: https://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...