Создайте кластер внутри VP C, используя AWS Step Functions - PullRequest
1 голос
/ 10 июля 2020

Я пытаюсь создать кластер EMR внутри своего VP C, используя существующие настройки безопасности, скопированные из кластеров EMR, которые я создаю через интерфейс командной строки в задании Jenkins.

Я не могу заставить это работать. Если я не укажу атрибуты ec2, произойдет сбой (и я попытаюсь создать кластер вне моего VP C, чего я не хочу). Если я их включу, ничего не получится. Либо он пытается запустить кластер (так что я думаю, что с IAM все в порядке):

The field "Ec2InstanceAttributes" is not supported by Step Functions

Вот конфигурация, которую я пытаюсь использовать:

"Create_A_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
  "Parameters": {
    "Name": "WorkflowCluster",
    "VisibleToAllUsers": true,
    "ReleaseLabel": "emr-6.0.0",
    "Applications": [
      {
        "Name": "Hive"
      }
    ],
    "Ec2InstanceAttributes": {
        "Ec2KeyName": "URMOM",
        "Ec2SubnetId": "subnet-4543b1f",
        "RequestedEc2SubnetIds": [
            "subnet-1235cb1f"
        ],
        "Ec2AvailabilityZone": "us-east-1a",
        "RequestedEc2AvailabilityZones": [],
        "IamInstanceProfile": "emr-ec2-role-sexy-dev",
        "EmrManagedMasterSecurityGroup": "sg-669e32158412f98b6",
        "EmrManagedSlaveSecurityGroup": "sg-2169f6e0142047ed1",
        "ServiceAccessSecurityGroup": "sg-04d4a4db4cac4c1d7",
        "AdditionalMasterSecurityGroups": [],
        "AdditionalSlaveSecurityGroups": []
    },
    "ServiceRole": "emr-service-role-sexy-dev",
    "JobFlowRole": "emr-ec2-role-sexy-dev",
    "LogUri": "s3n://emr-logs-sexy-dev/logs/sexy/dev/",
    "Instances": {
      "KeepJobFlowAliveWhenNoSteps": true,
      "InstanceFleets": [
        {
          "InstanceFleetType": "CORE",
          "TargetOnDemandCapacity": 2,
          "TargetSpotCapacity": 0,
          "LaunchSpecifications": {},
          "InstanceTypeConfigs": [
            {
              "WeightedCapacity": 4,
              "EbsConfiguration": {
                "EbsBlockDeviceConfigs": [
                  {
                    "VolumeSpecification": {
                      "SizeInGB": 32,
                      "VolumeType": "gp2"
                    },
                    "VolumesPerInstance": 2
                  }
                ]
              },
              "BidPriceAsPercentageOfOnDemandPrice": 100,
              "InstanceType": "m5.xlarge"
            }
          ],
          "Name": "Core - 2"
        },
        {
          "InstanceFleetType": "MASTER",
          "TargetOnDemandCapacity": 1,
          "TargetSpotCapacity": 0,
          "LaunchSpecifications": {},
          "InstanceTypeConfigs": [
            {
              "WeightedCapacity": 1,
              "EbsConfiguration": {
                "EbsBlockDeviceConfigs": [
                  {
                    "VolumeSpecification": {
                      "SizeInGB": 32,
                      "VolumeType": "gp2"
                    },
                    "VolumesPerInstance": 2
                  }
                ]
              },
              "BidPriceAsPercentageOfOnDemandPrice": 100,
              "InstanceType": "m5.xlarge"
            }
          ],
          "Name": "Master - 1"
        }
      ]
    }
  }

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Для людей, которые могут найти это через веб-поиск, я смог сделать это, указав Ec2SubnetId как дочерний элемент Instances , и он был встроен в VP C по желанию.

0 голосов
/ 10 июля 2020

Небольшой опыт работы с EMR, но у меня есть опыт работы с пошаговыми функциями. В документации по целевому API в вашем случае нет параметра Ec2InstanceAttributes. Его содержимое несколько разбросано по другим полям, например Экземплярам.

Я бы посоветовал попытаться привести его в соответствие со спецификациями здесь: https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html

...