Можем ли мы запустить функцию AWS Lambda из задания AWS Glue PySpark? - PullRequest
0 голосов
/ 14 ноября 2018

В настоящее время я могу запустить Glue PySpark job, но можно ли вызвать lambda function из Glue этой работы?Используя приведенный ниже код из моей работы PySpark Glue, я вызываю лямбда-функцию.

lambda_client = boto3.client('lambda', region_name='us-west-2')
response = lambda_client.invoke(FunctionName='test-lambda') 

Ошибка:

botocore.exceptions.ClientError: Anпроизошла ошибка (AccessDeniedException) при вызове операции Invoke: пользователь: arn: aws: sts :: 208244724522: предполагаемая роль / AWSGlueServiceRoleDefault / GlueJobRunnerSession не авторизован для выполнения: lambda: InvokeFunction на ресурсе: arn: aws: lambda: нас-запад-2: 208244724522: function: hw-test

Но я добавил правильные лямбда-роли в свою роль Glue Iam, все еще получая ошибку выше.Какую конкретную роль нужно добавить?

Спасибо.

1 Ответ

0 голосов
/ 14 ноября 2018

Для вызова AWS Lambda вы можете использовать следующую политику :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowToExampleFunction",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:<region>:<123456789012>:function:<example_function>"
        }
    ]
}

Ваши роли не подходят для лямбда-вызовов, так как

AWSLambdaBasicExecutionRole - Предоставляет разрешения только для действий Amazon CloudWatch Logs для записи журналов. Вы можете использовать эту политику если ваша функция Lambda не имеет доступа ни к каким другим ресурсам AWS, кроме запись логов.

AWSLambdaVPCAccessExecutionRole - Предоставляет разрешения для действий Amazon Elastic Compute Cloud (Amazon EC2) для управления эластичной сетью. интерфейсы (ENI).

Пожалуйста, смотрите документацию здесь об этих ролях.

...