PutDraftAppVersionTemplate - AWS Resilience Hub

PutDraftAppVersionTemplate

Adds or updates the app template for an AWS Resilience Hub application draft version.

Request Syntax

POST /put-draft-app-version-template HTTP/1.1 Content-type: application/json { "appArn": "string", "appTemplateBody": "string" }

URI Request Parameters

The request does not use any URI parameters.

Request Body

The request accepts the following data in JSON format.

appArn

Amazon Resource Name (ARN) of the AWS Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see Amazon Resource Names (ARNs) in the AWS General Reference guide.

Type: String

Pattern: ^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+.-]{0,1023}$

Required: Yes

appTemplateBody

A JSON string that provides information about your application structure. To learn more about the appTemplateBody template, see the sample template provided in the Examples section.

The appTemplateBody JSON string has the following structure:

  • resources

    The list of logical resources that must be included in the AWS Resilience Hub application.

    Type: Array

    Note

    Don't add the resources that you want to exclude.

    Each resources array item includes the following fields:

    • logicalResourceId

      Logical identifier of the resource.

      Type: Object

      Each logicalResourceId object includes the following fields:

      • identifier

        Identifier of the resource.

        Type: String

      • logicalStackName

        The name of the AWS CloudFormation stack this resource belongs to.

        Type: String

      • resourceGroupName

        The name of the resource group this resource belongs to.

        Type: String

      • terraformSourceName

        The name of the Terraform S3 state file this resource belongs to.

        Type: String

      • eksSourceName

        Name of the Amazon Elastic Kubernetes Service cluster and namespace this resource belongs to.

        Note

        This parameter accepts values in "eks-cluster/namespace" format.

        Type: String

    • type

      The type of resource.

      Type: string

    • name

      The name of the resource.

      Type: String

    • additionalInfo

      Additional configuration parameters for an AWS Resilience Hub application. If you want to implement additionalInfo through the AWS Resilience Hub console rather than using an API call, see Configure the application configuration parameters.

      Note

      Currently, this parameter accepts a key-value mapping (in a string format) of only one failover region and one associated account.

      Key: "failover-regions"

      Value: "[{"region":"<REGION>", "accounts":[{"id":"<ACCOUNT_ID>"}]}]"

  • appComponents

    List of Application Components that this resource belongs to. If an Application Component is not part of the AWS Resilience Hub application, it will be added.

    Type: Array

    Each appComponents array item includes the following fields:

    • name

      Name of the Application Component.

      Type: String

    • type

      Type of Application Component. For more information about the types of Application Component, see Grouping resources in an AppComponent.

      Type: String

    • resourceNames

      The list of included resources that are assigned to the Application Component.

      Type: Array of strings

    • additionalInfo

      Additional configuration parameters for an AWS Resilience Hub application. If you want to implement additionalInfo through the AWS Resilience Hub console rather than using an API call, see Configure the application configuration parameters.

      Note

      Currently, this parameter accepts a key-value mapping (in a string format) of only one failover region and one associated account.

      Key: "failover-regions"

      Value: "[{"region":"<REGION>", "accounts":[{"id":"<ACCOUNT_ID>"}]}]"

  • excludedResources

    The list of logical resource identifiers to be excluded from the application.

    Type: Array

    Note

    Don't add the resources that you want to include.

    Each excludedResources array item includes the following fields:

    • logicalResourceIds

      Logical identifier of the resource.

      Type: Object

      Note

      You can configure only one of the following fields:

      • logicalStackName

      • resourceGroupName

      • terraformSourceName

      • eksSourceName

      Each logicalResourceIds object includes the following fields:

      • identifier

        Identifier of the resource.

        Type: String

      • logicalStackName

        The name of the AWS CloudFormation stack this resource belongs to.

        Type: String

      • resourceGroupName

        The name of the resource group this resource belongs to.

        Type: String

      • terraformSourceName

        The name of the Terraform S3 state file this resource belongs to.

        Type: String

      • eksSourceName

        Name of the Amazon Elastic Kubernetes Service cluster and namespace this resource belongs to.

        Note

        This parameter accepts values in "eks-cluster/namespace" format.

        Type: String

  • version

    AWS Resilience Hub application version.

  • additionalInfo

    Additional configuration parameters for an AWS Resilience Hub application. If you want to implement additionalInfo through the AWS Resilience Hub console rather than using an API call, see Configure the application configuration parameters.

    Note

    Currently, this parameter accepts a key-value mapping (in a string format) of only one failover region and one associated account.

    Key: "failover-regions"

    Value: "[{"region":"<REGION>", "accounts":[{"id":"<ACCOUNT_ID>"}]}]"

Type: String

Length Constraints: Minimum length of 0. Maximum length of 409600.

Pattern: ^[\w\s:,-\.'\/{}\[\]:"\\]+$

Required: Yes

Response Syntax

HTTP/1.1 200 Content-type: application/json { "appArn": "string", "appVersion": "string" }

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.

appArn

Amazon Resource Name (ARN) of the AWS Resilience Hub application. The format for this ARN is: arn:partition:resiliencehub:region:account:app/app-id. For more information about ARNs, see Amazon Resource Names (ARNs) in the AWS General Reference guide.

Type: String

Pattern: ^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:([a-z]{2}-((iso[a-z]{0,1}-)|(gov-)){0,1}[a-z]+-[0-9]):[0-9]{12}:[A-Za-z0-9/][A-Za-z0-9:_/+.-]{0,1023}$

appVersion

The version of the application.

Type: String

Pattern: ^\S{1,50}$

Errors

For information about the errors that are common to all actions, see Common Errors.

AccessDeniedException

You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions.

HTTP Status Code: 403

ConflictException

This exception occurs when a conflict with a previous successful write is detected. This generally occurs when the previous write did not have time to propagate to the host serving the current request. A retry (with appropriate backoff logic) is the recommended response to this exception.

HTTP Status Code: 409

InternalServerException

This exception occurs when there is an internal failure in the AWS Resilience Hub service.

HTTP Status Code: 500

ResourceNotFoundException

This exception occurs when the specified resource could not be found.

HTTP Status Code: 404

ThrottlingException

This exception occurs when you have exceeded the limit on the number of requests per second.

HTTP Status Code: 429

ValidationException

This exception occurs when a request is not valid.

HTTP Status Code: 400

Examples

Sample appTemplateBody template

This example illustrates one usage of PutDraftAppVersionTemplate.

{ "resources": [{ "logicalResourceId": { "identifier": "testResourceID1", "logicalStackName": "testResourceStack1", "resourceGroupName": null }, "type": "AWS::RDS::DBInstance", "name": "testResourceName" }], "appComponents": [{ "name": "testappcomponent-test", "type": "AWS::ResilienceHub::AppComponent", "resourceNames": [ "testResourceName" ] }, { "name": "testappcommon", "type": "AWS::ResilienceHub::AppComponent", "resourceNames": "[testResourceName]" } ], "excludedResources": { "logicalResourceIds": [{ "identifier": "testResourceID2", "logicalStackName": "testResourceStack2", "resourceGroupName": "" }] }, "version": 2.0 }

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: