如何使用boto3创建预加载S3文件的EMR Studio笔记本?
如何通过boto3创建预加载S3存储笔记本文件的EMR Studio笔记本
注意:EMR Studio没有单独的静态笔记本文件创建/删除接口,所有文件操作都基于绑定的S3存储实现
你之前查阅的EMR通用client接口仅负责EMR Studio实例本身的生命周期管理,笔记本相关的操作需要结合emr和emr-containers两个boto3客户端完成,具体操作逻辑如下:
- EMR Studio的笔记本文件默认存储在你绑定的S3路径下,预加载操作本质是将提前上传到S3的
.ipynb文件映射到Studio的工作空间中 - 静态笔记本文件无需额外调用创建接口,只要配置好S3路径映射,Studio会自动识别路径下的笔记本文件;运行态的笔记本会话则需要调用
emr-containers的作业启动接口创建
具体操作步骤
1. 配置EMR Studio实例的S3路径映射
创建EMR Studio实例时,指定DefaultS3Location参数为你存放预加载笔记本文件的S3前缀,你需要提前把所有要预加载的.ipynb文件上传到该S3路径下。
如果已经创建了Studio实例,可以调用update_studio接口修改该参数。
2. (可选)给指定用户配置专属预加载路径
如果需要给不同用户配置不同的预加载笔记本集合,可以调用create_studio_session_mapping接口,为特定用户/用户组绑定独立的S3工作路径,该路径下的笔记本文件只会对绑定的用户可见。
3. (可选)启动运行态的笔记本会话
如果需要自动创建一个处于运行状态的笔记本实例,而非仅提供静态文件,需要调用emr-containers客户端的start_job_run接口,指定作业类型关联到你预加载的S3笔记本文件。
示例代码
import boto3 # 初始化对应区域的客户端 emr_client = boto3.client('emr', region_name='你的AWS区域') emr_containers_client = boto3.client('emr-containers', region_name='你的AWS区域') # 示例1:创建带预加载S3路径的EMR Studio实例 studio_response = emr_client.create_studio( Name='你的Studio名称', AuthMode='SSO', # 也可根据实际情况改为IAM VpcId='你的VPC ID', SubnetIds=['子网ID1', '子网ID2'], ServiceRole='EMR Studio服务角色ARN', UserRole='EMR Studio用户角色ARN', DefaultS3Location='s3://你的Bucket名称/预加载笔记本存储前缀/' ) studio_id = studio_response['StudioId'] # 示例2:为指定用户绑定专属预加载路径 emr_client.create_studio_session_mapping( StudioId=studio_id, IdentityId='用户的SSO ID或IAM ARN', IdentityType='USER', SessionPolicyArn='会话权限策略ARN', S3Location='s3://你的Bucket名称/专属用户预加载笔记本前缀/' ) # 示例3:启动运行态的预加载笔记本会话 session_response = emr_containers_client.start_job_run( VirtualClusterId='绑定到Studio的EMR on EKS虚拟集群ID', ExecutionRoleArn='EMR作业执行角色ARN', ReleaseLabel='emr-6.10.0-latest', # 可根据需求更换对应的EMR版本 JobDriver={ 'SparkSubmitJobDriver': { 'EntryPoint': 's3://你的Bucket名称/预加载笔记本路径/目标笔记本.ipynb', 'SparkSubmitParameters': '--conf spark.executor.instances=2 --conf spark.driver.cores=1' } } )
笔记本删除操作
- 删除静态笔记本文件:直接删除对应S3路径下的
.ipynb文件即可,Studio刷新后会自动同步文件列表 - 删除运行态笔记本会话:调用
emr_containers_client.cancel_job_run()接口,传入对应会话的job run ID即可终止运行的会话
内容的提问来源于stack exchange,提问作者Randomize
相关产品推荐
相关产品推荐

