AWSLambdaBasicExecutionRole не может описать экземпляры - PullRequest
0 голосов
/ 11 ноября 2019

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

Произошла ошибка (UnauthorizedOperation) при вызове операции DescribeInstances: Вы не авторизованы для выполнения этой операции .: ClientError

import boto3
ec2 = boto3.client('ec2')
# get the list of all the ec2 instances
def get_all_ec2_ids():
    response = ec2.describe_instances(DryRun=False)
    instances = []
    for reservation in response["Reservations"]:
        for instance in reservation["Instances"]:
            # This sample print will output entire Dictionary object
            # This will print will output the value of the Dictionary key 'InstanceId'
            instances.append(instance["InstanceId"])
    return instances

1 Ответ

0 голосов
/ 11 ноября 2019

Прежде всего, AWSLambdaBasicExecutionRole - это ПОЛИТИКА, а не роль, несмотря на то, что следует из ее названия. И эта политика дает только следующие разрешения:

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

Это, как вы можете видеть, НЕ дает никакого разрешения для DescribeInstances. Если бы вы добавили управляемую политику AWS:

AmazonEC2ReadOnlyAccess

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

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