此问题可能由于Lambda的安全组和EMR实例的安全组之间的限制导致。因此,可以尝试将Lambda和EMR实例的安全组更新为相同的安全组,并使用以下代码示例来授权Lambda向EMR Livy端点发出请求。
import requests
import json
def lambda_handler(event, context):
emr_master_dns = '' # Replace with EMR master DNS
emr_livy_port = '' # Replace with EMR Livy Port
data = {
'code': '''<>'''
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post('http://{}:{}/batches'.format(emr_master_dns, emr_livy_port), data=json.dumps(data), headers=headers)
return {
'statusCode': response.status_code,
'message': response.json()
}
注意:确保替换EMR主DNS和Livy端口,并使用适当的Livy Spark代码来填充数据变量。
此解决方法应该允许Lambda顺利访问EMR中的Livy端点。