UpdateStateMachine
Updates an existing state machine by modifying its definition
,
roleArn
, loggingConfiguration
, or EncryptionConfiguration
. Running executions will continue
to use the previous definition
and roleArn
. You must include at
least one of definition
or roleArn
or you will receive a
MissingRequiredParameter
error.
A qualified state machine ARN refers to a Distributed Map state defined within a state machine. For example, the qualified state machine ARN arn:partition:states:region:account-id:stateMachine:stateMachineName/mapStateLabel
refers to a Distributed Map state with a label mapStateLabel
in the state machine named stateMachineName
.
A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, a version ARN, or an alias ARN.
The following are some examples of qualified and unqualified state machine ARNs:
-
The following qualified state machine ARN refers to a Distributed Map state with a label
mapStateLabel
in a state machine namedmyStateMachine
.arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel
Note
If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails with
ValidationException
. -
The following qualified state machine ARN refers to an alias named
PROD
.arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine:PROD>
Note
If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts execution for that version or alias.
-
The following unqualified state machine ARN refers to a state machine named
myStateMachine
.arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine>
After you update your state machine, you can set the publish
parameter to
true
in the same action to publish a new version. This
way, you can opt-in to strict versioning of your state machine.
Note
Step Functions assigns monotonically increasing integers for state machine versions, starting at version number 1.
Note
All StartExecution
calls within a few seconds use the updated
definition
and roleArn
. Executions started immediately after you
call UpdateStateMachine
may use the previous state machine
definition
and roleArn
.
Request Syntax
{
"definition": "string
",
"encryptionConfiguration": {
"kmsDataKeyReusePeriodSeconds": number
,
"kmsKeyId": "string
",
"type": "string
"
},
"loggingConfiguration": {
"destinations": [
{
"cloudWatchLogsLogGroup": {
"logGroupArn": "string
"
}
}
],
"includeExecutionData": boolean
,
"level": "string
"
},
"publish": boolean
,
"roleArn": "string
",
"stateMachineArn": "string
",
"tracingConfiguration": {
"enabled": boolean
},
"versionDescription": "string
"
}
Request Parameters
For information about the parameters that are common to all actions, see Common Parameters.
The request accepts the following data in JSON format.
- definition
-
The Amazon States Language definition of the state machine. See Amazon States Language.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 1048576.
Required: No
- encryptionConfiguration
-
Settings to configure server-side encryption.
Type: EncryptionConfiguration object
Required: No
- loggingConfiguration
-
Use the
LoggingConfiguration
data type to set CloudWatch Logs options.Type: LoggingConfiguration object
Required: No
- publish
-
Specifies whether the state machine version is published. The default is
false
. To publish a version after updating the state machine, setpublish
totrue
.Type: Boolean
Required: No
- roleArn
-
The Amazon Resource Name (ARN) of the IAM role of the state machine.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 256.
Required: No
- stateMachineArn
-
The Amazon Resource Name (ARN) of the state machine.
Type: String
Length Constraints: Minimum length of 1. Maximum length of 256.
Required: Yes
- tracingConfiguration
-
Selects whether AWS X-Ray tracing is enabled.
Type: TracingConfiguration object
Required: No
- versionDescription
-
An optional description of the state machine version to publish.
You can only specify the
versionDescription
parameter if you've setpublish
totrue
.Type: String
Length Constraints: Maximum length of 256.
Required: No
Response Syntax
{
"revisionId": "string",
"stateMachineVersionArn": "string",
"updateDate": number
}
Response Elements
If the action is successful, the service sends back an HTTP 200 response.
The following data is returned in JSON format by the service.
- revisionId
-
The revision identifier for the updated state machine.
Type: String
- stateMachineVersionArn
-
The Amazon Resource Name (ARN) of the published state machine version.
If the
publish
parameter isn't set totrue
, this field returns null.Type: String
Length Constraints: Minimum length of 1. Maximum length of 256.
- updateDate
-
The date and time the state machine was updated.
Type: Timestamp
Errors
For information about the errors that are common to all actions, see Common Errors.
- ConflictException
-
Updating or deleting a resource can cause an inconsistent state. This error occurs when there're concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or UpdateStateMachine with the
publish
parameter set totrue
.HTTP Status Code: 409
HTTP Status Code: 400
- InvalidArn
-
The provided Amazon Resource Name (ARN) is not valid.
HTTP Status Code: 400
- InvalidDefinition
-
The provided Amazon States Language definition is not valid.
HTTP Status Code: 400
- InvalidEncryptionConfiguration
-
Received when
encryptionConfiguration
is specified but various conditions exist which make the configuration invalid. For example, iftype
is set toCUSTOMER_MANAGED_KMS_KEY
, butkmsKeyId
is null, orkmsDataKeyReusePeriodSeconds
is not between 60 and 900, or the AWS KMS key is not symmetric or inactive.HTTP Status Code: 400
- InvalidLoggingConfiguration
-
Configuration is not valid.
HTTP Status Code: 400
- InvalidTracingConfiguration
-
Your
tracingConfiguration
key does not match, orenabled
has not been set totrue
orfalse
.HTTP Status Code: 400
- KmsAccessDeniedException
-
Either your AWS KMS key policy or API caller does not have the required permissions.
HTTP Status Code: 400
- KmsThrottlingException
-
Received when AWS KMS returns
ThrottlingException
for a AWS KMS call that Step Functions makes on behalf of the caller.HTTP Status Code: 400
- MissingRequiredParameter
-
Request is missing a required parameter. This error occurs if both
definition
androleArn
are not specified.HTTP Status Code: 400
- ServiceQuotaExceededException
-
The request would cause a service quota to be exceeded.
HTTP Status Code: 402
HTTP Status Code: 400
- StateMachineDeleting
-
The specified state machine is being deleted.
HTTP Status Code: 400
- StateMachineDoesNotExist
-
The specified state machine does not exist.
HTTP Status Code: 400
- ValidationException
-
The input does not satisfy the constraints specified by an AWS service.
HTTP Status Code: 400
See Also
For more information about using this API in one of the language-specific AWS SDKs, see the following: