使用EmrServerlessCreateApplicationOperator创建应用遇NoRegionError求助
解决EmrServerlessCreateApplicationOperator的NoRegionError问题
你遇到的问题是因为错误地将region_name放在了config参数中,这个参数是用来配置EMR Serverless应用本身的(比如资源规格、网络设置等),而非AWS客户端的区域配置。
正确的两种解决方式:
方式一:直接传递AWS客户端参数
将region_name、密钥信息作为Operator的顶层参数传入,而非嵌套在config里:
create_app = EmrServerlessCreateApplicationOperator( task_id="create_spark_app", job_type="SPARK", release_label="emr-6.6.0", aws_access_key_id=args["aws_access_key_id"], aws_secret_access_key=args["aws_secret_access_key"], aws_session_token=args["aws_session_token"], region_name='us-east-1' )
方式二:使用Airflow AWS连接(推荐)
在Airflow UI中创建一个AWS连接,配置好密钥、区域等信息,然后通过aws_conn_id引用:
create_app = EmrServerlessCreateApplicationOperator( task_id="create_spark_app", job_type="SPARK", release_label="emr-6.6.0", aws_conn_id="your_aws_connection_id" )
EmrServerlessCreateApplicationOperator继承自AWSBaseOperator,AWS客户端的配置参数(区域、密钥等)都是Operator的独立参数,和用于应用配置的config参数是分开的。
内容的提问来源于stack exchange,提问作者Hasham
相关产品推荐
相关产品推荐

