From 948a7df7bd61a2b7ae2179ce982864fb7e77777f Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen Date: Thu, 17 Jun 2021 18:55:58 -0700 Subject: [PATCH 1/9] feature: Add support for Glue DataBrew service integration --- doc/services.rst | 6 ++++ src/stepfunctions/steps/__init__.py | 1 + src/stepfunctions/steps/service.py | 45 +++++++++++++++++++++++++++++ tests/unit/test_service_steps.py | 29 +++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/doc/services.rst b/doc/services.rst index 1ac3738..100e965 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -8,6 +8,8 @@ This module provides classes to build steps that integrate with Amazon DynamoDB, - `Amazon DynamoDB <#amazon-dynamodb>`__ +- `Amazon Glue DataBrew <#amazon-glue-databrew>`__ + - `Amazon SNS <#amazon-sns>`__ - `Amazon SQS <#amazon-sqs>`__ @@ -25,6 +27,10 @@ Amazon DynamoDB .. autoclass:: stepfunctions.steps.service.DynamoDBUpdateItemStep +Amazon Glue DataBrew +-------------------- +.. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep + Amazon SNS ----------- .. autoclass:: stepfunctions.steps.service.SnsPublishStep diff --git a/src/stepfunctions/steps/__init__.py b/src/stepfunctions/steps/__init__.py index 92598f1..369ad62 100644 --- a/src/stepfunctions/steps/__init__.py +++ b/src/stepfunctions/steps/__init__.py @@ -18,6 +18,7 @@ from stepfunctions.steps.states import Graph, FrozenGraph from stepfunctions.steps.sagemaker import TrainingStep, TransformStep, ModelStep, EndpointConfigStep, EndpointStep, TuningStep, ProcessingStep from stepfunctions.steps.compute import LambdaStep, BatchSubmitJobStep, GlueStartJobRunStep, EcsRunTaskStep +from stepfunctions.steps.service import DataBrewStartJobRunStep from stepfunctions.steps.service import DynamoDBGetItemStep, DynamoDBPutItemStep, DynamoDBUpdateItemStep, DynamoDBDeleteItemStep from stepfunctions.steps.service import SnsPublishStep, SqsSendMessageStep from stepfunctions.steps.service import EmrCreateClusterStep, EmrTerminateClusterStep, EmrAddStepStep, EmrCancelStepStep, EmrSetClusterTerminationProtectionStep, EmrModifyInstanceFleetByNameStep, EmrModifyInstanceGroupByNameStep diff --git a/src/stepfunctions/steps/service.py b/src/stepfunctions/steps/service.py index 6bf155f..16dbdcf 100644 --- a/src/stepfunctions/steps/service.py +++ b/src/stepfunctions/steps/service.py @@ -18,6 +18,7 @@ from stepfunctions.steps.integration_resources import IntegrationPattern, get_service_integration_arn DYNAMODB_SERVICE_NAME = "dynamodb" +DATABREW_SERVICE_NAME = "databrew" SNS_SERVICE_NAME = "sns" SQS_SERVICE_NAME = "sqs" ELASTICMAPREDUCE_SERVICE_NAME = "elasticmapreduce" @@ -30,6 +31,10 @@ class DynamoDBApi(Enum): UpdateItem = "updateItem" +class DataBrewApi(Enum): + StartJobRun = "startJobRun" + + class SnsApi(Enum): Publish = "publish" @@ -48,6 +53,46 @@ class ElasticMapReduceApi(Enum): ModifyInstanceGroupByName = "modifyInstanceGroupByName" +class DataBrewStartJobRunStep(Task): + + """ + Creates a Task state to run a DataBrew job. See `Manage AWS Glue DataBrew Jobs with Step Functions `_ for more details. + """ + + def __init__(self, state_id, wait_for_completion=True, **kwargs): + """ + Args: + state_id (str): State name whose length **must be** less than or equal to 128 unicode characters. State names **must be** unique within the scope of the whole state machine. + comment (str, optional): Human-readable comment or description. (default: None) + timeout_seconds (int, optional): Positive integer specifying timeout for the state in seconds. If the state runs longer than the specified timeout, then the interpreter fails the state with a `States.Timeout` Error Name. (default: 60) + timeout_seconds_path (str, optional): Path specifying the state's timeout value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. + heartbeat_seconds (int, optional): Positive integer specifying heartbeat timeout for the state in seconds. This value should be lower than the one specified for `timeout_seconds`. If more time than the specified heartbeat elapses between heartbeats from the task, then the interpreter fails the state with a `States.Timeout` Error Name. + heartbeat_seconds_path (str, optional): Path specifying the state's heartbeat value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. + input_path (str, optional): Path applied to the state’s raw input to select some or all of it; that selection is used by the state. (default: '$') + parameters (dict, optional): The value of this field becomes the effective input for the state. + result_path (str, optional): Path specifying the raw input’s combination with or replacement by the state’s result. (default: '$') + output_path (str, optional): Path applied to the state’s output after the application of `result_path`, producing the effective output which serves as the raw input for the next state. (default: '$') + wait_for_completion (bool, optional): Boolean value set to `True` if the Task state should wait to complete before proceeding to the next step in the workflow. (default: True) + """ + if wait_for_completion: + """ + Example resource arn: arn:aws:states:::databrew:startJobRun.sync + """ + + kwargs[Field.Resource.value] = get_service_integration_arn(DATABREW_SERVICE_NAME, + DataBrewApi.StartJobRun, + IntegrationPattern.WaitForCompletion) + else: + """ + Example resource arn: arn:aws:states:::databrew:startJobRun + """ + + kwargs[Field.Resource.value] = get_service_integration_arn(DATABREW_SERVICE_NAME, + DataBrewApi.StartJobRun) + + super(DataBrewStartJobRunStep, self).__init__(state_id, **kwargs) + + class DynamoDBGetItemStep(Task): """ Creates a Task state to get an item from DynamoDB. See `Call DynamoDB APIs with Step Functions `_ for more details. diff --git a/tests/unit/test_service_steps.py b/tests/unit/test_service_steps.py index 6576aaf..f66ca6d 100644 --- a/tests/unit/test_service_steps.py +++ b/tests/unit/test_service_steps.py @@ -16,6 +16,7 @@ import boto3 from unittest.mock import patch +from stepfunctions.steps.service import DataBrewStartJobRunStep from stepfunctions.steps.service import DynamoDBGetItemStep, DynamoDBPutItemStep, DynamoDBUpdateItemStep, DynamoDBDeleteItemStep from stepfunctions.steps.service import SnsPublishStep, SqsSendMessageStep from stepfunctions.steps.service import EmrCreateClusterStep, EmrTerminateClusterStep, EmrAddStepStep, EmrCancelStepStep, EmrSetClusterTerminationProtectionStep, EmrModifyInstanceFleetByNameStep, EmrModifyInstanceGroupByNameStep @@ -596,3 +597,31 @@ def test_emr_modify_instance_group_by_name_step_creation(): 'End': True } + +@patch.object(boto3.session.Session, 'region_name', 'us-east-1') +def test_databrew_start_job_run_step_creation(): + step = DataBrewStartJobRunStep('Start Databrew Job Run', parameters={ + "Name": "MyWorkflowJobRun" + }) + + assert step.to_dict() == { + 'Type': 'Task', + 'Resource': 'arn:aws:states:::databrew:startJobRun.sync', + 'Parameters': { + 'Name': 'MyWorkflowJobRun' + }, + 'End': True + } + + step = DataBrewStartJobRunStep('Start Databrew Job Run', wait_for_completion=False, parameters={ + "Name": "MyWorkflowJobRun" + }) + + assert step.to_dict() == { + 'Type': 'Task', + 'Resource': 'arn:aws:states:::databrew:startJobRun', + 'Parameters': { + 'Name': 'MyWorkflowJobRun' + }, + 'End': True + } From e876288f546d3ea86b64fadc3ad3dfba2beae0d2 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen Date: Fri, 18 Jun 2021 17:48:30 -0700 Subject: [PATCH 2/9] Updated task description --- src/stepfunctions/steps/service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stepfunctions/steps/service.py b/src/stepfunctions/steps/service.py index 16dbdcf..e21c973 100644 --- a/src/stepfunctions/steps/service.py +++ b/src/stepfunctions/steps/service.py @@ -56,7 +56,7 @@ class ElasticMapReduceApi(Enum): class DataBrewStartJobRunStep(Task): """ - Creates a Task state to run a DataBrew job. See `Manage AWS Glue DataBrew Jobs with Step Functions `_ for more details. + Creates a Task state that starts a DataBrew job. See `Manage AWS Glue DataBrew Jobs with Step Functions `_ for more details. """ def __init__(self, state_id, wait_for_completion=True, **kwargs): From 459bd17b712c641a06cae74d0d55e6f7565ebb3d Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen Date: Thu, 8 Jul 2021 10:45:05 -0700 Subject: [PATCH 3/9] Correct merge in service doc --- doc/services.rst | 8 -------- 1 file changed, 8 deletions(-) diff --git a/doc/services.rst b/doc/services.rst index 50d0a37..4af266f 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -33,14 +33,6 @@ Amazon Glue DataBrew -------------------- .. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep -Amazon SNS ------------ -.. autoclass:: stepfunctions.steps.service.SnsPublishStep - -Amazon SQS ------------ -.. autoclass:: stepfunctions.steps.service.SqsSendMessageStep - Amazon EMR ----------- .. autoclass:: stepfunctions.steps.service.EmrCreateClusterStep From db21afaffaf747ed2495f2e7d2b1226d72e82eb0 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen Date: Thu, 8 Jul 2021 10:47:36 -0700 Subject: [PATCH 4/9] Reorder service doc alphabetically --- doc/services.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/services.rst b/doc/services.rst index 4af266f..39d25a1 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -8,12 +8,12 @@ This module provides classes to build steps that integrate with Amazon DynamoDB, - `Amazon DynamoDB <#amazon-dynamodb>`__ -- `Amazon Glue DataBrew <#amazon-glue-databrew>`__ - - `Amazon EMR <#amazon-emr>`__ - `Amazon EventBridge <#amazon-eventbridge>`__ +- `Amazon Glue DataBrew <#amazon-glue-databrew>`__ + - `Amazon SNS <#amazon-sns>`__ - `Amazon SQS <#amazon-sqs>`__ @@ -29,10 +29,6 @@ Amazon DynamoDB .. autoclass:: stepfunctions.steps.service.DynamoDBUpdateItemStep -Amazon Glue DataBrew --------------------- -.. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep - Amazon EMR ----------- .. autoclass:: stepfunctions.steps.service.EmrCreateClusterStep @@ -53,6 +49,10 @@ Amazon EventBridge ----------- .. autoclass:: stepfunctions.steps.service.EventBridgePutEventsStep +Amazon Glue DataBrew +-------------------- +.. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep + Amazon SNS ----------- .. autoclass:: stepfunctions.steps.service.SnsPublishStep From a7e3f3ac63b47d9307fc11a376c10f06a663f2af Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen <83104894+ca-nguyen@users.noreply.github.com> Date: Mon, 19 Jul 2021 14:14:46 -0700 Subject: [PATCH 5/9] Update doc/services.rst service name Co-authored-by: Shiv Lakshminarayan --- doc/services.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/services.rst b/doc/services.rst index 39d25a1..3779cc3 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -12,7 +12,7 @@ This module provides classes to build steps that integrate with Amazon DynamoDB, - `Amazon EventBridge <#amazon-eventbridge>`__ -- `Amazon Glue DataBrew <#amazon-glue-databrew>`__ +- `AWS Glue DataBrew <#amazon-glue-databrew>`__ - `Amazon SNS <#amazon-sns>`__ From 1b22677a14bb2e9b19a13ced09e78ca0016b8199 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen <83104894+ca-nguyen@users.noreply.github.com> Date: Mon, 19 Jul 2021 14:15:06 -0700 Subject: [PATCH 6/9] Update doc/services.rst AWS instead of Amazon Co-authored-by: Shiv Lakshminarayan --- doc/services.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/services.rst b/doc/services.rst index 3779cc3..01049a4 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -49,7 +49,7 @@ Amazon EventBridge ----------- .. autoclass:: stepfunctions.steps.service.EventBridgePutEventsStep -Amazon Glue DataBrew +AWS Glue DataBrew -------------------- .. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep From 7533be3ff3937190c482abd0d9673720236e2c82 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen Date: Mon, 19 Jul 2021 14:32:15 -0700 Subject: [PATCH 7/9] Renamed class and variables to include Glue --- doc/services.rst | 2 +- src/stepfunctions/steps/__init__.py | 2 +- src/stepfunctions/steps/service.py | 94 ++++++++++++++--------------- tests/unit/test_service_steps.py | 13 ++-- 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/doc/services.rst b/doc/services.rst index 01049a4..d77b63c 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -51,7 +51,7 @@ Amazon EventBridge AWS Glue DataBrew -------------------- -.. autoclass:: stepfunctions.steps.service.DataBrewStartJobRunStep +.. autoclass:: stepfunctions.steps.service.GlueDataBrewStartJobRunStep Amazon SNS ----------- diff --git a/src/stepfunctions/steps/__init__.py b/src/stepfunctions/steps/__init__.py index 7832994..4e85666 100644 --- a/src/stepfunctions/steps/__init__.py +++ b/src/stepfunctions/steps/__init__.py @@ -18,8 +18,8 @@ from stepfunctions.steps.states import Graph, FrozenGraph from stepfunctions.steps.sagemaker import TrainingStep, TransformStep, ModelStep, EndpointConfigStep, EndpointStep, TuningStep, ProcessingStep from stepfunctions.steps.compute import LambdaStep, BatchSubmitJobStep, GlueStartJobRunStep, EcsRunTaskStep -from stepfunctions.steps.service import DataBrewStartJobRunStep from stepfunctions.steps.service import DynamoDBGetItemStep, DynamoDBPutItemStep, DynamoDBUpdateItemStep, DynamoDBDeleteItemStep from stepfunctions.steps.service import EmrCreateClusterStep, EmrTerminateClusterStep, EmrAddStepStep, EmrCancelStepStep, EmrSetClusterTerminationProtectionStep, EmrModifyInstanceFleetByNameStep, EmrModifyInstanceGroupByNameStep from stepfunctions.steps.service import EventBridgePutEventsStep +from stepfunctions.steps.service import GlueDataBrewStartJobRunStep from stepfunctions.steps.service import SnsPublishStep, SqsSendMessageStep diff --git a/src/stepfunctions/steps/service.py b/src/stepfunctions/steps/service.py index 0e8ada1..4f4a538 100644 --- a/src/stepfunctions/steps/service.py +++ b/src/stepfunctions/steps/service.py @@ -17,10 +17,10 @@ from stepfunctions.steps.fields import Field from stepfunctions.steps.integration_resources import IntegrationPattern, get_service_integration_arn -DATABREW_SERVICE_NAME = "databrew" DYNAMODB_SERVICE_NAME = "dynamodb" ELASTICMAPREDUCE_SERVICE_NAME = "elasticmapreduce" EVENTBRIDGE_SERVICE_NAME = "events" +GLUE_DATABREW_SERVICE_NAME = "databrew" SNS_SERVICE_NAME = "sns" SQS_SERVICE_NAME = "sqs" @@ -33,18 +33,6 @@ class DynamoDBApi(Enum): UpdateItem = "updateItem" -class DataBrewApi(Enum): - StartJobRun = "startJobRun" - - -class SnsApi(Enum): - Publish = "publish" - - -class SqsApi(Enum): - SendMessage = "sendMessage" - - class ElasticMapReduceApi(Enum): CreateCluster = "createCluster" TerminateCluster = "terminateCluster" @@ -59,44 +47,16 @@ class EventBridgeApi(Enum): PutEvents = "putEvents" -class DataBrewStartJobRunStep(Task): +class GlueDataBrewApi(Enum): + StartJobRun = "startJobRun" - """ - Creates a Task state that starts a DataBrew job. See `Manage AWS Glue DataBrew Jobs with Step Functions `_ for more details. - """ - def __init__(self, state_id, wait_for_completion=True, **kwargs): - """ - Args: - state_id (str): State name whose length **must be** less than or equal to 128 unicode characters. State names **must be** unique within the scope of the whole state machine. - comment (str, optional): Human-readable comment or description. (default: None) - timeout_seconds (int, optional): Positive integer specifying timeout for the state in seconds. If the state runs longer than the specified timeout, then the interpreter fails the state with a `States.Timeout` Error Name. (default: 60) - timeout_seconds_path (str, optional): Path specifying the state's timeout value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. - heartbeat_seconds (int, optional): Positive integer specifying heartbeat timeout for the state in seconds. This value should be lower than the one specified for `timeout_seconds`. If more time than the specified heartbeat elapses between heartbeats from the task, then the interpreter fails the state with a `States.Timeout` Error Name. - heartbeat_seconds_path (str, optional): Path specifying the state's heartbeat value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. - input_path (str, optional): Path applied to the state’s raw input to select some or all of it; that selection is used by the state. (default: '$') - parameters (dict, optional): The value of this field becomes the effective input for the state. - result_path (str, optional): Path specifying the raw input’s combination with or replacement by the state’s result. (default: '$') - output_path (str, optional): Path applied to the state’s output after the application of `result_path`, producing the effective output which serves as the raw input for the next state. (default: '$') - wait_for_completion (bool, optional): Boolean value set to `True` if the Task state should wait to complete before proceeding to the next step in the workflow. (default: True) - """ - if wait_for_completion: - """ - Example resource arn: arn:aws:states:::databrew:startJobRun.sync - """ - - kwargs[Field.Resource.value] = get_service_integration_arn(DATABREW_SERVICE_NAME, - DataBrewApi.StartJobRun, - IntegrationPattern.WaitForCompletion) - else: - """ - Example resource arn: arn:aws:states:::databrew:startJobRun - """ +class SnsApi(Enum): + Publish = "publish" - kwargs[Field.Resource.value] = get_service_integration_arn(DATABREW_SERVICE_NAME, - DataBrewApi.StartJobRun) - super(DataBrewStartJobRunStep, self).__init__(state_id, **kwargs) +class SqsApi(Enum): + SendMessage = "sendMessage" class DynamoDBGetItemStep(Task): @@ -258,6 +218,46 @@ def __init__(self, state_id, **kwargs): super(DynamoDBUpdateItemStep, self).__init__(state_id, **kwargs) +class GlueDataBrewStartJobRunStep(Task): + + """ + Creates a Task state that starts a DataBrew job. See `Manage AWS Glue DataBrew Jobs with Step Functions `_ for more details. + """ + + def __init__(self, state_id, wait_for_completion=True, **kwargs): + """ + Args: + state_id (str): State name whose length **must be** less than or equal to 128 unicode characters. State names **must be** unique within the scope of the whole state machine. + comment (str, optional): Human-readable comment or description. (default: None) + timeout_seconds (int, optional): Positive integer specifying timeout for the state in seconds. If the state runs longer than the specified timeout, then the interpreter fails the state with a `States.Timeout` Error Name. (default: 60) + timeout_seconds_path (str, optional): Path specifying the state's timeout value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. + heartbeat_seconds (int, optional): Positive integer specifying heartbeat timeout for the state in seconds. This value should be lower than the one specified for `timeout_seconds`. If more time than the specified heartbeat elapses between heartbeats from the task, then the interpreter fails the state with a `States.Timeout` Error Name. + heartbeat_seconds_path (str, optional): Path specifying the state's heartbeat value in seconds from the state input. When resolved, the path must select a field whose value is a positive integer. + input_path (str, optional): Path applied to the state’s raw input to select some or all of it; that selection is used by the state. (default: '$') + parameters (dict, optional): The value of this field becomes the effective input for the state. + result_path (str, optional): Path specifying the raw input’s combination with or replacement by the state’s result. (default: '$') + output_path (str, optional): Path applied to the state’s output after the application of `result_path`, producing the effective output which serves as the raw input for the next state. (default: '$') + wait_for_completion (bool, optional): Boolean value set to `True` if the Task state should wait to complete before proceeding to the next step in the workflow. (default: True) + """ + if wait_for_completion: + """ + Example resource arn: arn:aws:states:::databrew:startJobRun.sync + """ + + kwargs[Field.Resource.value] = get_service_integration_arn(GLUE_DATABREW_SERVICE_NAME, + GlueDataBrewApi.StartJobRun, + IntegrationPattern.WaitForCompletion) + else: + """ + Example resource arn: arn:aws:states:::databrew:startJobRun + """ + + kwargs[Field.Resource.value] = get_service_integration_arn(GLUE_DATABREW_SERVICE_NAME, + GlueDataBrewApi.StartJobRun) + + super(GlueDataBrewStartJobRunStep, self).__init__(state_id, **kwargs) + + class SnsPublishStep(Task): """ diff --git a/tests/unit/test_service_steps.py b/tests/unit/test_service_steps.py index 25c0bb7..e92f65c 100644 --- a/tests/unit/test_service_steps.py +++ b/tests/unit/test_service_steps.py @@ -16,11 +16,11 @@ import boto3 from unittest.mock import patch -from stepfunctions.steps.service import DataBrewStartJobRunStep from stepfunctions.steps.service import DynamoDBGetItemStep, DynamoDBPutItemStep, DynamoDBUpdateItemStep, DynamoDBDeleteItemStep -from stepfunctions.steps.service import SnsPublishStep, SqsSendMessageStep from stepfunctions.steps.service import EmrCreateClusterStep, EmrTerminateClusterStep, EmrAddStepStep, EmrCancelStepStep, EmrSetClusterTerminationProtectionStep, EmrModifyInstanceFleetByNameStep, EmrModifyInstanceGroupByNameStep from stepfunctions.steps.service import EventBridgePutEventsStep +from stepfunctions.steps.service import SnsPublishStep, SqsSendMessageStep +from stepfunctions.steps.service import GlueDataBrewStartJobRunStep @patch.object(boto3.session.Session, 'region_name', 'us-east-1') @@ -664,8 +664,8 @@ def test_emr_modify_instance_group_by_name_step_creation(): @patch.object(boto3.session.Session, 'region_name', 'us-east-1') -def test_databrew_start_job_run_step_creation(): - step = DataBrewStartJobRunStep('Start Databrew Job Run', parameters={ +def test_databrew_start_job_run_step_creation_sync(): + step = GlueDataBrewStartJobRunStep('Start Glue DataBrew Job Run', parameters={ "Name": "MyWorkflowJobRun" }) @@ -678,7 +678,10 @@ def test_databrew_start_job_run_step_creation(): 'End': True } - step = DataBrewStartJobRunStep('Start Databrew Job Run', wait_for_completion=False, parameters={ + +@patch.object(boto3.session.Session, 'region_name', 'us-east-1') +def test_databrew_start_job_run_step_creation(): + step = GlueDataBrewStartJobRunStep('Start Glue DataBrew Job Run', wait_for_completion=False, parameters={ "Name": "MyWorkflowJobRun" }) From a7fbe961ff450928be1ef0e3f17a88f832312dc0 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen <83104894+ca-nguyen@users.noreply.github.com> Date: Wed, 4 Aug 2021 17:50:40 -0700 Subject: [PATCH 8/9] Update anchor link Co-authored-by: Shiv Lakshminarayan --- doc/services.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/services.rst b/doc/services.rst index d77b63c..76b09a0 100644 --- a/doc/services.rst +++ b/doc/services.rst @@ -12,7 +12,7 @@ This module provides classes to build steps that integrate with Amazon DynamoDB, - `Amazon EventBridge <#amazon-eventbridge>`__ -- `AWS Glue DataBrew <#amazon-glue-databrew>`__ +- `AWS Glue DataBrew <#aws-glue-databrew>`__ - `Amazon SNS <#amazon-sns>`__ From 61850f4dac8dee886a41ba497111acd2f527bba6 Mon Sep 17 00:00:00 2001 From: Carolyn Nguyen <83104894+ca-nguyen@users.noreply.github.com> Date: Wed, 4 Aug 2021 17:53:33 -0700 Subject: [PATCH 9/9] Update tests/unit/test_service_steps.py Co-authored-by: Shiv Lakshminarayan --- tests/unit/test_service_steps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/test_service_steps.py b/tests/unit/test_service_steps.py index e92f65c..627ae55 100644 --- a/tests/unit/test_service_steps.py +++ b/tests/unit/test_service_steps.py @@ -665,7 +665,7 @@ def test_emr_modify_instance_group_by_name_step_creation(): @patch.object(boto3.session.Session, 'region_name', 'us-east-1') def test_databrew_start_job_run_step_creation_sync(): - step = GlueDataBrewStartJobRunStep('Start Glue DataBrew Job Run', parameters={ + step = GlueDataBrewStartJobRunStep('Start Glue DataBrew Job Run - Sync', parameters={ "Name": "MyWorkflowJobRun" })