Beispiel #1
0
def test_run_job_flow_builder():
    default_task_json = {
        'End': True,
        'Parameters': {
            'FunctionName': {
                'Ref': 'RunJobFlow9B18A53F'
            },
            'Payload': {
                'ExecutionInput.$': '$$.Execution.Input',
                'ClusterConfiguration.$': '$.ClusterConfiguration',
                'TaskToken.$': '$$.Task.Token',
                'CheckStatusLambda': {
                    'Fn::GetAtt': ['CheckClusterStatusA7C1019E', 'Arn']
                },
                'RuleName': {
                    'Ref': 'testtaskEventRule9A04A93E'
                },
                'FireAndForget': False
            }
        },
        'Type': 'Task',
        'Resource': {
            'Fn::Join': [
                '',
                [
                    'arn:', {
                        'Ref': 'AWS::Partition'
                    }, ':states:::lambda:invoke.waitForTaskToken'
                ]
            ]
        }
    }

    stack = core.Stack(core.App(), 'test-stack')

    task = emr_tasks.RunJobFlowBuilder.build(
        stack,
        'test-task',
        roles=emr_profile.EMRRoles(stack,
                                   'test-emr-roles',
                                   role_name_prefix='test-roles'),
        kerberos_attributes_secret=secretsmanager.Secret(
            stack, 'test-kerberos-secret'),
        secret_configurations={
            'Secret':
            secretsmanager.Secret(stack, 'test-secret-configurations-secret')
        },
    )

    print_and_assert(default_task_json, task)
Beispiel #2
0
def test_emr_create_cluster_task():
    default_task_json = {
        'End': True,
        'Parameters': {
            'AdditionalInfo.$':
            '$.ClusterConfiguration.Cluster.AdditionalInfo',
            'AmiVersion.$':
            '$.ClusterConfiguration.Cluster.AmiVersion',
            'Applications.$':
            '$.ClusterConfiguration.Cluster.Applications',
            'AutoScalingRole.$':
            '$.ClusterConfiguration.Cluster.AutoScalingRole',
            'BootstrapActions.$':
            '$.ClusterConfiguration.Cluster.BootstrapActions',
            'Configurations.$':
            '$.ClusterConfiguration.Cluster.Configurations',
            'CustomAmiId.$':
            '$.ClusterConfiguration.Cluster.CustomAmiId',
            'EbsRootVolumeSize.$':
            '$.ClusterConfiguration.Cluster.EbsRootVolumeSize',
            'Instances': {
                'AdditionalMasterSecurityGroups.$':
                '$.ClusterConfiguration.Cluster.Instances.AdditionalMasterSecurityGroups',
                'AdditionalSlaveSecurityGroups.$':
                '$.ClusterConfiguration.Cluster.Instances.AdditionalSlaveSecurityGroups',
                'Ec2KeyName.$':
                '$.ClusterConfiguration.Cluster.Instances.Ec2KeyName',
                'Ec2SubnetId.$':
                '$.ClusterConfiguration.Cluster.Instances.Ec2SubnetId',
                'Ec2SubnetIds.$':
                '$.ClusterConfiguration.Cluster.Instances.Ec2SubnetIds',
                'EmrManagedMasterSecurityGroup.$':
                '$.ClusterConfiguration.Cluster.Instances.EmrManagedMasterSecurityGroup',
                'EmrManagedSlaveSecurityGroup.$':
                '$.ClusterConfiguration.Cluster.Instances.EmrManagedSlaveSecurityGroup',
                'HadoopVersion.$':
                '$.ClusterConfiguration.Cluster.Instances.HadoopVersion',
                'InstanceCount.$':
                '$.ClusterConfiguration.Cluster.Instances.InstanceCount',
                'InstanceFleets.$':
                '$.ClusterConfiguration.Cluster.Instances.InstanceFleets',
                'InstanceGroups.$':
                '$.ClusterConfiguration.Cluster.Instances.InstanceGroups',
                'KeepJobFlowAliveWhenNoSteps':
                True,
                'MasterInstanceType.$':
                '$.ClusterConfiguration.Cluster.Instances.MasterInstanceType',
                'Placement.$':
                '$.ClusterConfiguration.Cluster.Instances.Placement',
                'ServiceAccessSecurityGroup.$':
                '$.ClusterConfiguration.Cluster.Instances.ServiceAccessSecurityGroup',
                'SlaveInstanceType.$':
                '$.ClusterConfiguration.Cluster.Instances.SlaveInstanceType',
                'TerminationProtected.$':
                '$.ClusterConfiguration.Cluster.Instances.TerminationProtected'
            },
            'JobFlowRole.$':
            '$.ClusterConfiguration.Cluster.JobFlowRole',
            'KerberosAttributes.$':
            '$.ClusterConfiguration.Cluster.KerberosAttributes',
            'LogUri.$':
            '$.ClusterConfiguration.Cluster.LogUri',
            'ManagedScalingPolicy.$':
            '$.ClusterConfiguration.Cluster.ManagedScalingPolicy',
            'Name.$':
            '$.ClusterConfiguration.Cluster.Name',
            'NewSupportedProducts.$':
            '$.ClusterConfiguration.Cluster.NewSupportedProducts',
            'ReleaseLabel.$':
            '$.ClusterConfiguration.Cluster.ReleaseLabel',
            'RepoUpgradeOnBoot.$':
            '$.ClusterConfiguration.Cluster.RepoUpgradeOnBoot',
            'ScaleDownBehavior.$':
            '$.ClusterConfiguration.Cluster.ScaleDownBehavior',
            'SecurityConfiguration.$':
            '$.ClusterConfiguration.Cluster.SecurityConfiguration',
            'ServiceRole.$':
            '$.ClusterConfiguration.Cluster.ServiceRole',
            'StepConcurrencyLevel.$':
            '$.ClusterConfiguration.Cluster.StepConcurrencyLevel',
            'SupportedProducts.$':
            '$.ClusterConfiguration.Cluster.SupportedProducts',
            'Tags.$':
            '$.ClusterConfiguration.Cluster.Tags',
            'VisibleToAllUsers.$':
            '$.ClusterConfiguration.Cluster.VisibleToAllUsers'
        },
        'Resource': {
            'Fn::Join': [
                '',
                [
                    'arn:', {
                        'Ref': 'AWS::Partition'
                    }, ':states:::elasticmapreduce:createCluster.sync'
                ]
            ]
        },
        'Type': 'Task'
    }

    stack = core.Stack(core.App(), 'test-stack')

    task = sfn.Task(
        stack,
        'test-task',
        task=emr_tasks.EmrCreateClusterTask(
            roles=emr_profile.EMRRoles(stack,
                                       'test-emr-roles',
                                       role_name_prefix='test-roles'),
            cluster_configuration_path='$.ClusterConfiguration.Cluster',
        ))

    print_and_assert(default_task_json, task)