使用boto3将现有的EMR集群克隆到新集群中

Ame*_*ale 5 amazon-web-services amazon-emr emr

使用boto3创建新集群时,我想使用现有集群(已终止)中的配置,然后克隆它。据我所知,emr_client.run_job_flow要求将所有configuration(Instances, InstanceFleets etc)作为参数提供。有什么办法可以像从AMR控制台中为EMR进行克隆那样从现有集群中克隆。

在此处输入图片说明

Rop*_*s42 1

我可以推荐您的是使用AWS CLI来启动您的集群。
它允许对集群配置进行版本控制,并且您可以使用json文件轻松加载步骤配置。

aws create-cluster --name "Cluster's name" --ec2-attributes KeyName=SSH_KEY --instance-type m3.xlarge --release-label emr-5.2.1 --log-uri s3://mybucket/logs/ --enable-debugging --instance-count 1 --use-default-roles --applications Name=Spark --steps file://step.json
Run Code Online (Sandbox Code Playgroud)

其中step.json如下所示:

     [
      {
        "Name": "Step #1",
        "Type":"SPARK",
        "Jar":"command-runner.jar",
        "Args":
        [
          "--deploy-mode", "cluster",
          "--class", "com.your.data.set.class",
          "s3://path/to/your/spark-job.jar",
          "-c", "s3://path/to/your/config/or/not",
          "--aws-access-key", "ACCESS_KEY",
          "--aws-secret-key", "SECRET_KEY"
        ],
        "ActionOnFailure": "CANCEL_AND_WAIT"
      }
     ]
Run Code Online (Sandbox Code Playgroud)

(多步骤也可以)

之后,您始终可以启动相同配置的集群。
例如,从一个AirFlow作业中安排整个集群和步骤。

但如果你真的想使用Boto3,我想describe_cluster()方法可以帮助你获取完整的信息并使用返回的对象来启动一个新的对象。