Лямбда-функция не добавляет правило в группу безопасности

#amazon-web-services #aws-lambda

#amazon-web-services #aws-lambda

Вопрос:

У меня есть этот код python 3.7, который также запускается с моего локального компьютера. Это код для моей лямбда-функции. Однако, когда я тестирую его в AWS, оно не добавляет входящее правило в группу безопасности. Я хотел бы получить помощь в том, чтобы заставить его работать. Опять же, когда я запускаю его со своего локального компьютера, он работает.

     import boto3
    
    ec2 = boto3.client('ec2')
    
    def modify_sg_add_rules(event, context):
            response = ec2.authorize_security_group_ingress(
            GroupName='boto3-sg',
            IpPermissions=[
                { 
                    'FromPort': 1521,
                    'IpProtocol': 'tcp',
                    'IpRanges': [
                        {
                            'CidrIp': '12.345.67.890/32',
                            'Description': 'My home IP',
                        },
                    ],
                    'ToPort': 1521,
                },
                ],
                DryRun=False
            ) #closes response
            return response

#if __name__ == '__main__':
#    modify_sg_add_rules()
 

Это разрешения в политике, которые привязаны к роли:

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSecurityGroups",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": "*"
        }
    ]
}
 

Пожалуйста, помогите мне!
Спасибо!
—Вилли

Комментарии:

1. Разрешения указаны правильно. Можете ли вы показать фактический лямбда-код, а не ваш скрипт на локальной рабочей станции? Кроме того, проверяли ли вы журналы CloudWatch на наличие каких-либо ошибок?

2. Приведенный выше фактический лямбда-код. Спасибо!

3. Я вижу, обработчик есть modify_sg_add_rules . Код и разрешения указаны правильно. Сидр '12.345.67.890/32' неправильный, но я думаю, что это только для SO. Вы проверяли журналы CW?

4. Просто переименуйте modify_sg_add_rules в lambda_handler .

5. Да! Это сделало это! Кроме того, я хотел бы отметить, что после переименования функции из modify_sg_add_rules в lamdba_function мне также пришлось нажать на Deploy . Даже после изменения имени функции на lambda_function она не работала, пока я не нажал на Deploy . Большое спасибо, Марчин. Это работает!

Ответ №1:

На основе комментариев.

Проблема была вызвана использованием неправильного имени для обработчика лямбда-функции. Вместо modify_sg_add_rules него должно быть lambda_handler имя по умолчанию для обработчика.

Таким образом, решением было переименовать modify_sg_add_rules в lambda_handler . Альтернативой является изменение имени обработчика по умолчанию на modify_sg_add_rules .