public async Task <bool> Run()
        {
            //Create dependencies
            IBuilderSettings             settings          = this.CreateSettings();
            AmazonElasticMapReduceClient emrClient         = this.CreateEmrClient();
            IEmrJobLogger               emrJobLogger       = new EmrJobLogger();
            IEmrJobStateChecker         emrJobStateChecker = new EmrJobStateChecker();
            DemoEmrActivitiesEnumerator activitiesIterator = new DemoEmrActivitiesEnumerator();

            using (EmrActivitiesRunner emrRunner = new EmrActivitiesRunner(emrJobLogger, emrJobStateChecker, emrClient, settings, activitiesIterator))
            {
                //explicitly set an existing jobFlowId, if you want to work with an existing job
                //emrRunner.JobFlowId = "j-36G3NHTVEP1Q7";

                return(await emrRunner.Start());
            }
        }
        public async Task <bool> Run()
        {
            //Create dependencies
            var settings           = this.CreateSettings();
            var emrJobLogger       = new EmrJobLogger();
            var emrJobStateChecker = new EmrJobStateChecker();

            var emrClient = new AmazonElasticMapReduceClient(AccessKey, SecretKey, RegionEndpoint.USEast1);
            var swfClient = new AmazonSimpleWorkflowClient(AccessKey, SecretKey, RegionEndpoint.USEast1);
            var swfConfig = new DemoSwfConfiguration();

            SwfManager swfManager = new SwfManager(emrJobLogger, swfClient, swfConfig);
            await swfManager.SetupAsync();

            using (var decider = new SwfEmrJobDecider(emrJobLogger, swfClient, swfConfig))
                using (var runner = new SwfActivitiesRunner(emrJobLogger, emrJobStateChecker, settings, emrClient, swfClient, swfConfig))
                {
                    //decider.Start
                }

            return(true);
        }