我正在使用EmrCreateJobFlowOperator创建一个EMR集群,但我需要为它指定一个配置文件来查找角色"EMR_EC2_默认角色";。下面的代码与";aws_default"如果我将我的配置文件配置设置为"~/"。aws/config";进入默认配置文件,但这是我不想做的事情,因为我有很多不同的配置文件,默认配置文件应该是干净的。周围有工作吗?
为我的配置文件配置了正确的角色,但没有为默认角色配置,这是非常基本的:
aws iam list-roles --profile my_specific_profile | grep 'EMR_DefaultRole|EMR_EC2_DefaultRole'
只有当我在"~/"中更改默认配置文件时,这才有效。aws/config";。
create_emr_cluster = EmrCreateJobFlowOperator(
task_id="create_emr_cluster",
job_flow_overrides=job_flow_overrides,
aws_conn_id="aws_default",
emr_conn_id="emr_default",
region_name="my_region",
dag=dag,
)
为了避免更改我的"~/"。aws/config";,我也尝试过以下方法,但没有成功:
create_emr_cluster = EmrCreateJobFlowOperator(
task_id="create_emr_cluster",
job_flow_overrides=job_flow_overrides,
aws_conn_id="aws_default",
emr_conn_id="emr_default",
region_name="my_region",
profile_name="my_specific_profile",
dag=dag,
)
和
create_emr_cluster = EmrCreateJobFlowOperator(
task_id="create_emr_cluster",
job_flow_overrides=job_flow_overrides,
aws_conn_id="aws_default",
emr_conn_id="emr_default",
region_name="my_region",
dag=dag,
)
boto3.setup_default_session(profile_name="my_specific_profile")
和
create_emr_cluster = EmrCreateJobFlowOperator(
task_id="create_emr_cluster",
job_flow_overrides=job_flow_overrides,
aws_conn_id="my_specific_profile",
emr_conn_id="emr_default",
region_name="my_region",
dag=dag,
)
错误为:
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the RunJobFlow operation: Invalid InstanceProfile: EMR_EC2_DefaultRole.
解决方案很简单。事实上,我只需要通过在创建集群的代码之前添加以下命令来设置默认配置文件:
os.environ["AWS_DEFAULT_PROFILE"] = "my_specific_profile"