EmrServerlessCreateApplicationOperator多子网ID配置报错求助
正确的EMR Serverless多子网配置示例
你的问题根源在于**subnetIds接收的是单个子网ID组成的列表**,但你传入的是包含逗号分隔字符串的单元素列表,导致AWS API验证失败(逗号分隔的字符串不符合单个子网ID的格式要求)。
以下是正确的配置方式:
情况1:子网ID已经是列表格式
如果subnet_ids本身就是Python列表(比如["subnet-0123456789abcdef0", "subnet-0abcdef1234567890"]),直接传入列表即可:
network_config = { 'subnetIds': subnet_ids, 'securityGroupIds': security_group_ids # 同理,这里也得是单个安全组ID组成的列表 } EmrServerlessCreateApplicationOperator( task_id=task_identifier, job_type="SPARK", release_label="emr-6.6.0", config={"name": config_name, "networkConfiguration": network_config} )
情况2:子网ID是逗号分隔的字符串
如果subnet_ids是逗号分隔的字符串(比如"subnet-0123456789abcdef0,subnet-0abcdef1234567890"),需要先拆分成列表:
# 拆分逗号分隔的子网ID字符串为列表 subnet_ids_list = subnet_ids.split(",") # 同理处理安全组ID(如果也是字符串的话) security_group_ids_list = security_group_ids.split(",") network_config = { 'subnetIds': subnet_ids_list, 'securityGroupIds': security_group_ids_list } EmrServerlessCreateApplicationOperator( task_id=task_identifier, job_type="SPARK", release_label="emr-6.6.0", config={"name": config_name, "networkConfiguration": network_config} )
关键注意点
subnetIds和securityGroupIds的每个元素必须是单个合法的AWS子网/安全组ID,不能包含逗号或其他非法字符- 确保每个ID符合AWS的格式要求:长度1-32位,仅包含
-、数字和大小写字母
内容的提问来源于stack exchange,提问作者singleton
相关产品推荐
相关产品推荐

