我们可以从aws Glue PySpark作业触发AWS Lambda函数吗?

时间:2018-11-14 08:09:36

标签: pyspark aws-lambda aws-glue

当前我可以运行Glue PySpark job,但是可以从lambda function调用此工作的Glue吗?使用我的PySpark胶水工作中的以下代码,我正在调用lambda函数。

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

错误:

  

botocore.exceptions.ClientError:调用Invoke操作时发生错误(AccessDeniedException):用户:arn:aws:sts :: 208244724522:assumed-role / AWSGlueServiceRoleDefault / GlueJobRunnerSession无权执行:资源上的lambda:InvokeFunction :arn:aws:lambda:us-west-2:208244724522:function:hw-test

但是我在我的Glue iam角色中添加了适当的lambda角色,但仍然出现错误。是否需要添加任何特定角色?

谢谢。

1 个答案:

答案 0 :(得分:1)

要调用AWS Lambda,您可以使用以下policy

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

您的角色不适合Lambda调用,因为

  

AWSLambdaBasicExecutionRole –仅授予Amazon CloudWatch Logs操作写入日志的权限。您可以使用此政策   如果您的Lambda函数不访问任何其他AWS资源,除了   写日志。

     

AWSLambdaVPCAccessExecutionRole –为Amazon Elastic Compute Cloud(Amazon EC2)操作授予权限以管理弹性网络   接口(ENI)。

请参阅有关这些角色的文档here