

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation AWS Resilience Hub APIs pour décrire et gérer une application
<a name="using-api"></a>

Comme alternative à la description et à la gestion des applications à l'aide de AWS Resilience Hub la console, vous AWS Resilience Hub permet de décrire et de gérer les applications à l'aide de AWS Resilience Hub APIs. Ce chapitre explique comment créer une application à l'aide de AWS Resilience Hub APIs. Il définit également la séquence dans laquelle vous devez exécuter APIs et les valeurs des paramètres que vous devez fournir avec des exemples appropriés. Pour plus d’informations, consultez les rubriques suivantes :
+ [Préparation de la demande](prepare-app-using-api.md)
+ [Exécution et gestion des AWS Resilience Hub évaluations de résilience](running-app-using-api.md)
+ [Modifier votre application](modify-application-using-api.md)

# Préparation de la demande
<a name="prepare-app-using-api"></a>

Pour préparer une application, vous devez d'abord créer une application, attribuer une politique de résilience, puis importer les ressources de l'application à partir de vos sources d'entrée. Pour plus d'informations sur AWS Resilience Hub APIs les outils utilisés pour préparer une application, consultez les rubriques suivantes :
+ [Création d’une application](#create-app-using-api)
+ [Création d'une politique de résilience](#create-res-policy-using-api)
+ [Importation de ressources depuis une source d'entrée et surveillance de l'état de l'importation](#import-app-resource-using-api)
+ [Publication de la version préliminaire de votre application et attribution d'une politique de résilience](#publish-application-using-api)

## Création d’une application
<a name="create-app-using-api"></a>

Pour créer une nouvelle application dans AWS Resilience Hub, vous devez appeler l'`CreateApp`API et fournir un nom d'application unique. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateApp.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateApp.html).

L'exemple suivant montre comment créer une nouvelle application `newApp` à l' AWS Resilience Hub aide de l'`CreateApp`API. 

### Demande
<a name="create-app-using-api-req"></a>

```
aws resiliencehub create-app --name newApp
```

### Réponse
<a name="create-app-using-api-res"></a>

```
{
    "app": {
        "appArn": "<App_ARN>",
        "name": "newApp",
        "creationTime": "2022-10-26T19:48:00.434000+03:00",
        "status": "Active",
        "complianceStatus": "NotAssessed",
        "resiliencyScore": 0.0,
        "tags": {},
        "assessmentSchedule": "Disabled"
    }
}
```

## Création d'une politique de résilience
<a name="create-res-policy-using-api"></a>

Après avoir créé l'application, vous devez créer une politique de résilience qui vous permet de comprendre la posture de résilience de votre application à l'aide `CreateResiliencyPolicy` de l'API. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateResiliencyPolicy.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateResiliencyPolicy.html).

L'exemple suivant montre comment créer `newPolicy` pour votre application à l' AWS Resilience Hub aide de l'`CreateResiliencyPolicy`API.

### Demande
<a name="create-res-policy-using-api-req"></a>

```
aws resiliencehub create-resiliency-policy \
--policy-name newPolicy --tier NonCritical \
--policy '{"AZ": {"rtoInSecs": 172800,"rpoInSecs": 86400}, \
"Hardware": {"rtoInSecs": 172800,"rpoInSecs": 86400}, \
"Software": {"rtoInSecs": 172800,"rpoInSecs": 86400}}'
```

### Réponse
<a name="create-res-policy-using-api-res"></a>

```
{
    "policy": {
        "policyArn": "<Policy_ARN>",
        "policyName": "newPolicy",
        "policyDescription": "",
        "dataLocationConstraint": "AnyLocation",
        "tier": "NonCritical",
        "estimatedCostTier": "L1",
        "policy": {
            "AZ": {
                "rtoInSecs": 172800,
                "rpoInSecs": 86400
            },
            "Hardware": {
                "rtoInSecs": 172800,
                "rpoInSecs": 86400
            },
            "Software": {
                "rtoInSecs": 172800,
                "rpoInSecs": 86400
            }
        },
        "creationTime": "2022-10-26T20:48:05.946000+03:00",
        "tags": {}
    }
}
```

## Importation de ressources depuis une source d'entrée et surveillance de l'état de l'importation
<a name="import-app-resource-using-api"></a>

AWS Resilience Hub fournit les éléments suivants APIs pour importer des ressources dans votre application :
+ `ImportResourcesToDraftAppVersion`— Cette API vous permet d'importer des ressources vers la version préliminaire de votre application à partir de différentes sources d'entrée. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_ImportResourcesToDraftAppVersion.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_ImportResourcesToDraftAppVersion.html).
+ `PublishAppVersion`— Cette API publie une nouvelle version de l'application en même temps que la mise à jour AppComponents. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_PublishAppVersion.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_PublishAppVersion.html).
+ `DescribeDraftAppVersionResourcesImportStatus`— Cette API vous permet de surveiller le statut d'importation de vos ressources vers une version de l'application. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeDraftAppVersionResourcesImportStatus.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeDraftAppVersionResourcesImportStatus.html).

L'exemple suivant montre comment importer des ressources dans votre application à l' AWS Resilience Hub aide de l'`ImportResourcesToDraftAppVersion`API.

### Demande
<a name="w2aac12b9c11b9"></a>

```
aws resiliencehub import-resources-to-draft-app-version \
--app-arn <App_ARN> \
--terraform-sources '[{"s3StateFileUrl": <S3_URI>}]'
```

### Réponse
<a name="w2aac12b9c11c13"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "sourceArns": [],
    "status": "Pending",
    "terraformSources": [
        {
            "s3StateFileUrl": <S3_URI>
        }
    ]
}
```

L'exemple suivant montre comment ajouter manuellement des ressources à votre application à l' AWS Resilience Hub aide de l'`CreateAppVersionResource`API.

### Demande
<a name="create-res-policy-using-api-req"></a>

```
aws resiliencehub create-app-version-resource \
--app-arn <App_ARN> \
--resource-name "backup-efs" \
--logical-resource-id '{"identifier": "backup-efs"}' \
--physical-resource-id '<Physical_resource_id_ARN>' \
--resource-type AWS::EFS::FileSystem \
--app-components '["new-app-component"]'
```

### Réponse
<a name="create-res-policy-using-api-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "physicalResource": {
        "resourceName": "backup-efs",
        "logicalResourceId": {
            "identifier": "backup-efs"
        },
        "physicalResourceId": {
            "identifier": "<Physical_resource_id_ARN>",
            "type": "Arn"
        },
        "resourceType": "AWS::EFS::FileSystem",
        "appComponents": [
            {
                "name": "new-app-component",
                "type": "AWS::ResilienceHub::StorageAppComponent",
                "id": "new-app-component"
            }
        ]
    }
}
```

L'exemple suivant montre comment surveiller le statut d'importation de vos ressources à AWS Resilience Hub l'aide de l'`DescribeDraftAppVersionResourcesImportStatus`API.

### Demande
<a name="describe-draft-app-policy-req"></a>

```
aws resiliencehub describe-draft-app-version-resources-import-status \
--app-arn <App_ARN>
```

### Réponse
<a name="describe-draft-app-policy-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "status": "Success",
    "statusChangeTime": "2022-10-26T19:55:18.471000+03:00"
}
```

## Publication de la version préliminaire de votre application et attribution d'une politique de résilience
<a name="publish-application-using-api"></a>

Avant d'exécuter une évaluation, vous devez d'abord publier le brouillon de votre application et attribuer une politique de résilience à la version publiée de votre application. 

**Pour publier le brouillon de votre application et attribuer une politique de résilience**

1. Pour publier le brouillon de votre application, utilisez l'`PublishAppVersion`API. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_PublishAppVersion.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_PublishAppVersion.html).

   L'exemple suivant montre comment publier le brouillon de l'application à l' AWS Resilience Hub aide de l'`PublishAppVersion`API.

   

**Demande**  


   ```
   aws resiliencehub publish-app-version \
    --app-arn <App_ARN>
   ```

**Réponse**  


   ```
   {
       "appArn": "<App_ARN>",
       "appVersion": "release"
   }
   ```

1. Appliquez une politique de résilience à la version publiée de votre application à l'aide de l'`UpdateApp`API. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateApp.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateApp.html).

   L'exemple suivant montre comment appliquer une politique de résilience à la version publiée d'une application en AWS Resilience Hub utilisant l'`UpdateApp`API.

**Demande**  


   ```
   aws resiliencehub update-app \
   --app-arn <App_ARN> \
   --policy-arn <Policy_ARN>
   ```

**Réponse**  


   ```
   {
       "app": {
           "appArn": "<App_ARN>",
           "name": "newApp",
           "policyArn": "<Policy_ARN>",
           "creationTime": "2022-10-26T19:48:00.434000+03:00",
           "status": "Active",
           "complianceStatus": "NotAssessed",
           "resiliencyScore": 0.0,
           "tags": {
               "resourceArn": "<App_ARN>"
           },
           "assessmentSchedule": "Disabled"
       }
   }
   ```

# Exécution et gestion des AWS Resilience Hub évaluations de résilience
<a name="running-app-using-api"></a>

Après avoir publié une nouvelle version de votre application, vous devez exécuter une nouvelle évaluation de la résilience et analyser les résultats pour vous assurer que votre application répond au RTO de charge de travail estimé et au RPO estimés définis dans votre politique de résilience. L'évaluation compare la configuration de chaque composant d'application à la politique et émet des recommandations en matière d'alarme, de procédure opérationnelle normalisée et de test. 

Pour plus d’informations, consultez les rubriques suivantes :
+ [Exécution et surveillance des AWS Resilience Hub évaluations de résilience](#run-assess-analyze-using-api)
+ [Examen des résultats d'évaluation](#run-assessment-using-api)

## Exécution et surveillance des AWS Resilience Hub évaluations de résilience
<a name="run-assess-analyze-using-api"></a>

Pour exécuter des évaluations de résilience AWS Resilience Hub et surveiller leur état, vous devez utiliser les éléments suivants : APIs
+ `StartAppAssessment`— Cette API crée une nouvelle évaluation pour une application. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_StartAppAssessment.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_StartAppAssessment.html).
+ `DescribeAppAssessment`— Cette API décrit une évaluation de l'application et indique l'état d'achèvement de l'évaluation. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeAppAssessment.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeAppAssessment.html).

L'exemple suivant montre comment démarrer une nouvelle évaluation à l' AWS Resilience Hub aide de l'`StartAppAssessment`API.

### Demande
<a name="start-app-assessment-req"></a>

```
aws resiliencehub start-app-assessment \
--app-arn <App_ARN> \
--app-version release \
--assessment-name first-assessment
```

### Réponse
<a name="start-app-assessment-res"></a>

```
{
    "assessment": {
        "appArn": "<App_ARN>",
        "appVersion": "release",
        "invoker": "User",
        "assessmentStatus": "Pending",
        "startTime": "2022-10-27T08:15:10.452000+03:00",
        "assessmentName": "first-assessment",
        "assessmentArn": "<Assessment_ARN>",
        "policy": {
            "policyArn": "<Policy_ARN>",
            "policyName": "newPolicy",
            "dataLocationConstraint": "AnyLocation",
            "policy": {
                "AZ": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                },
                "Hardware": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                },
                "Software": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                }
            }
        },
        "tags": {}
    }
}
```

L'exemple suivant montre comment surveiller le statut de votre évaluation à l' AWS Resilience Hub aide de l'`DescribeAppAssessment`API. Vous pouvez extraire le statut de votre évaluation à partir de la `assessmentStatus` variable.

### Demande
<a name="app-monitor-status-req"></a>

```
aws resiliencehub describe-app-assessment \
--assessment-arn <Assessment_ARN>
```

### Réponse
<a name="app-monitor-status-res"></a>

```
{
    "assessment": {
        "appArn": "<App_ARN>",
        "appVersion": "release",
        "cost": {
            "amount": 0.0,
            "currency": "USD",
            "frequency": "Monthly"
        },
        "resiliencyScore": {
            "score": 0.27,
            "disruptionScore": {
                "AZ": 0.42,
                "Hardware": 0.0,
                "Region": 0.0,
                "Software": 0.38
            }
        },
        "compliance": {
            "AZ": {
                "achievableRtoInSecs": 0,
                "currentRtoInSecs": 4500,
                "currentRpoInSecs": 86400,
                "complianceStatus": "PolicyMet",
                "achievableRpoInSecs": 0
            },
            "Hardware": {
                "achievableRtoInSecs": 0,
                "currentRtoInSecs": 2595601,
                "currentRpoInSecs": 2592001,
                "complianceStatus": "PolicyBreached",
                "achievableRpoInSecs": 0
            },
            "Software": {
                "achievableRtoInSecs": 0,
                "currentRtoInSecs": 4500,
                "currentRpoInSecs": 86400,
                "complianceStatus": "PolicyMet",
                "achievableRpoInSecs": 0
            }
        },
        "complianceStatus": "PolicyBreached",
        "assessmentStatus": "Success",
        "startTime": "2022-10-27T08:15:10.452000+03:00",
        "endTime": "2022-10-27T08:15:31.883000+03:00",
        "assessmentName": "first-assessment",
        "assessmentArn": "<Assessment_ARN>",
        "policy": {
            "policyArn": "<Policy_ARN>",
            "policyName": "newPolicy",
            "dataLocationConstraint": "AnyLocation",
            "policy": {
                "AZ": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                },
                "Hardware": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                },
                "Software": {
                    "rtoInSecs": 172800,
                    "rpoInSecs": 86400
                }
            }
        },
        "tags": {}
    }
}
```

## Examen des résultats d'évaluation
<a name="run-assessment-using-api"></a>

Une fois votre évaluation terminée avec succès, vous pouvez examiner les résultats de l'évaluation à l'aide des méthodes suivantes APIs.
+ `DescribeAppAssessment`— Cette API vous permet de suivre l'état actuel de votre application par rapport à la politique de résilience. En outre, vous pouvez également extraire l'état de conformité de la `complianceStatus` variable et le score de résilience pour chaque type de perturbation de la `resiliencyScore` structure. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeAppAssessment.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DescribeAppAssessment.html).
+ `ListAlarmRecommendations`— Cette API vous permet d'obtenir les recommandations d'alarme à l'aide de l'Amazon Resource Name (ARN) de l'évaluation. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_ListAlarmRecommendations.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_ListAlarmRecommendations.html).
**Note**  
Pour obtenir les recommandations des tests SOP et FIS, utilisez `ListSopRecommendations` et. `ListTestRecommendations` APIs

L'exemple suivant montre comment obtenir les recommandations d'alarme à l'aide de l'Amazon Resource Name (ARN) de l'évaluation à l'aide de l'`ListAlarmRecommendations`API.

**Note**  
Pour obtenir les recommandations de test SOP et FIS, remplacez par ou`ListSopRecommendations`. `ListTestRecommendations`

### Demande
<a name="app-alarm-recomm-req"></a>

```
aws resiliencehub list-alarm-recommendations \
--assessment-arn <Assessment_ARN>
```

### Réponse
<a name="app-alarm-recomm-res"></a>

```
{
    "alarmRecommendations": [
        {
            "recommendationId": "78ece7f8-c776-499e-baa8-b35f5e8b8ba2",
            "referenceId": "app_common:alarm:synthetic_canary:2021-04-01",
            "name": "AWSResilienceHub-SyntheticCanaryInRegionAlarm_2021-04-01",
            "description": "A monitor for the entire application, configured to constantly verify that the application API/endpoints are available",
            "type": "Metric",
            "appComponentName": "appcommon",
            "items": [
                {
                    "resourceId": "us-west-2",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ],
            "prerequisite": "Make sure Amazon CloudWatch Synthetics is setup to monitor the application (see the <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html\" target=\"_blank\">docs</a>). \nMake sure that the Synthetics Name passed in the alarm dimension matches the name of the Synthetic Canary. It Defaults to the name of the application.\n"
        },
        {
            "recommendationId": "d9c72c58-8c00-43f0-ad5d-0c6e5332b84b",
            "referenceId": "efs:alarm:percent_io_limit:2020-04-01",
            "name": "AWSResilienceHub-EFSHighIoAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub that reports when Amazon EFS I/O load is more than 90% for too much time",
            "type": "Metric",
            "appComponentName": "storageappcomponent-rlb",
            "items": [
                {
                    "resourceId": "fs-0487f945c02f17b3e",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "09f340cd-3427-4f66-8923-7f289d4a3216",
            "referenceId": "efs:alarm:mount_failure:2020-04-01",
            "name": "AWSResilienceHub-EFSMountFailureAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub that reports when volume failed to mount to EC2 instance",
            "type": "Metric",
            "appComponentName": "storageappcomponent-rlb",
            "items": [
                {
                    "resourceId": "fs-0487f945c02f17b3e",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ],
            "prerequisite": "* Make sure Amazon EFS utils are installed(see the <a href=\"https://github.com/aws/efs-utils#installation\" target=\"_blank\">docs</a>).\n* Make sure cloudwatch logs are enabled in efs-utils (see the <a href=\"https://github.com/aws/efs-utils#step-2-enable-cloudwatch-log-feature-in-efs-utils-config-file-etcamazonefsefs-utilsconf\" target=\"_blank\">docs</a>).\n* Make sure that you've configured `log_group_name` in `/etc/amazon/efs/efs-utils.conf`, for example: `log_group_name = /aws/efs/utils`.\n* Use the created `log_group_name` in the generated alarm. Find `LogGroupName: REPLACE_ME` in the alarm and make sure the `log_group_name` is used instead of REPLACE_ME.\n"
        },
        {
            "recommendationId": "b0f57d2a-1220-4f40-a585-6dab1e79cee2",
            "referenceId": "efs:alarm:client_connections:2020-04-01",
            "name": "AWSResilienceHub-EFSHighClientConnectionsAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub that reports when client connection number deviation is over the specified threshold",
            "type": "Metric",
            "appComponentName": "storageappcomponent-rlb",
            "items": [
                {
                    "resourceId": "fs-0487f945c02f17b3e",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "15f49b10-9bac-4494-b376-705f8da252d7",
            "referenceId": "rds:alarm:health-storage:2020-04-01",
            "name": "AWSResilienceHub-RDSInstanceLowStorageAlarm_2020-04-01",
            "description": "Reports when database free storage is low",
            "type": "Metric",
            "appComponentName": "databaseappcomponent-hji",
            "items": [
                {
                    "resourceId": "terraform-20220623141426115800000001",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "c1906101-cea8-4f77-be7b-60abb07621f5",
            "referenceId": "rds:alarm:health-connections:2020-04-01",
            "name": "AWSResilienceHub-RDSInstanceConnectionSpikeAlarm_2020-04-01",
            "description": "Reports when database connection count is anomalous",
            "type": "Metric",
            "appComponentName": "databaseappcomponent-hji",
            "items": [
                {
                    "resourceId": "terraform-20220623141426115800000001",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "f169b8d4-45c1-4238-95d1-ecdd8d5153fe",
            "referenceId": "rds:alarm:health-cpu:2020-04-01",
            "name": "AWSResilienceHub-RDSInstanceOverUtilizedCpuAlarm_2020-04-01",
            "description": "Reports when database used CPU is high",
            "type": "Metric",
            "appComponentName": "databaseappcomponent-hji",
            "items": [
                {
                    "resourceId": "terraform-20220623141426115800000001",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "69da8459-cbe4-4ba1-a476-80c7ebf096f0",
            "referenceId": "rds:alarm:health-memory:2020-04-01",
            "name": "AWSResilienceHub-RDSInstanceLowMemoryAlarm_2020-04-01",
            "description": "Reports when database free memory is low",
            "type": "Metric",
            "appComponentName": "databaseappcomponent-hji",
            "items": [
                {
                    "resourceId": "terraform-20220623141426115800000001",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "67e7902a-f658-439e-916b-251a57b97c8a",
            "referenceId": "ecs:alarm:health-service_cpu_utilization:2020-04-01",
            "name": "AWSResilienceHub-ECSServiceHighCpuUtilizationAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub that triggers when CPU utilization of ECS tasks of Service exceeds the threshold",
            "type": "Metric",
            "appComponentName": "computeappcomponent-nrz",
            "items": [
                {
                    "resourceId": "aws_ecs_service_terraform-us-east-1-demo",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "fb30cb91-1f09-4abd-bd2e-9e8ee8550eb0",
            "referenceId": "ecs:alarm:health-service_memory_utilization:2020-04-01",
            "name": "AWSResilienceHub-ECSServiceHighMemoryUtilizationAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub for Amazon ECS that indicates if the percentage of memory that is used in the service, is exceeding specified threshold limit",
            "type": "Metric",
            "appComponentName": "computeappcomponent-nrz",
            "items": [
                {
                    "resourceId": "aws_ecs_service_terraform-us-east-1-demo",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ]
        },
        {
            "recommendationId": "1bd45a8e-dd58-4a8e-a628-bdbee234efed",
            "referenceId": "ecs:alarm:health-service_sample_count:2020-04-01",
            "name": "AWSResilienceHub-ECSServiceSampleCountAlarm_2020-04-01",
            "description": "An alarm by AWS Resilience Hub for Amazon ECS that triggers if the count of tasks isn't equal Service Desired Count",
            "type": "Metric",
            "appComponentName": "computeappcomponent-nrz",
            "items": [
                {
                    "resourceId": "aws_ecs_service_terraform-us-east-1-demo",
                    "targetAccountId": "12345678901",
                    "targetRegion": "us-west-2",
                    "alreadyImplemented": false
                }
            ],
            "prerequisite": "Make sure the Container Insights on Amazon ECS is enabled: (see the <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-ECS-cluster.html\" target=\"_blank\">docs</a>)."
        }
    ]
}
```

L'exemple suivant montre comment obtenir les recommandations de configuration (recommandations sur la manière d'améliorer votre résilience actuelle) à l'aide de l'`ListAppComponentRecommendations`API.

### Demande
<a name="config-recomm-req"></a>

```
aws resiliencehub list-app-component-recommendations \
--assessment-arn <Assessment_ARN>
```

### Réponse
<a name="config-recomm-res"></a>

```
{
    "componentRecommendations": [
        {
            "appComponentName": "computeappcomponent-nrz",
            "recommendationStatus": "MetCanImprove",
            "configRecommendations": [
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                },
                    "appComponentName": "computeappcomponent-nrz",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        }
                    },
                    "optimizationType": "LeastCost",
                    "description": "Current Configuration",
                    "suggestedChanges": [],
                    "haArchitecture": "BackupAndRestore",
                    "referenceId": "original"
                },
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "computeappcomponent-nrz",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        }
                    },
                    "optimizationType": "LeastChange",
                    "description": "Current Configuration",
                    "suggestedChanges": [],
                    "haArchitecture": "BackupAndRestore",
                    "referenceId": "original"
                },
                {
                    "cost": {
                        "amount": 14.74,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "computeappcomponent-nrz",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 0,
                            "expectedRtoDescription": "No expected downtime. You're launching using EC2, with DesiredCount > 1 in multiple AZs and CapacityProviders with MinSize > 1",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "ECS Service state is saved on Amazon EFS file system. No data loss is expected as objects are be stored in multiple AZs."
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 0,
                            "expectedRtoDescription": "No expected downtime. You're launching using EC2, with DesiredCount > 1 and CapacityProviders with MinSize > 1",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "ECS Service state is saved on Amazon EFS file system. No data loss is expected as objects are be stored in multiple AZs."
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": " Estimated time to restore cluster with volumes. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Based on the frequency of the backups"
                        }
                    },
                    "optimizationType": "BestAZRecovery",
                    "description": "Stateful Amazon ECS service with launch type Amazon EC2 and Amazon EFS storage, deployed in multiple AZs. AWS Backup is used to backup Amazon EFS and copy snapshots in-Region.",
                    "suggestedChanges": [
                        "Add AWS Auto Scaling Groups and Capacity Providers in multiple AZs",
                        "Change desired count of the setup",
                        "Remove Amazon EBS volume"
                    ],
                    "haArchitecture": "BackupAndRestore",
                    "referenceId": "ecs:config:ec2-multi_az-efs-backups:2022-02-16"
                }
            ]
        },
        {
            "appComponentName": "databaseappcomponent-hji",
            "recommendationStatus": "MetCanImprove",
            "configRecommendations": [
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "databaseappcomponent-hji",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from an RDS backup. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from snapshot. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from snapshot. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        }
                    },
                    "optimizationType": "LeastCost",
                    "description": "Current Configuration",
                    "suggestedChanges": [],
                    "haArchitecture": "BackupAndRestore",
                    "referenceId": "original"
                },
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "databaseappcomponent-hji",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from an RDS backup. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from snapshot. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 1800,
                            "expectedRtoDescription": "Estimated time to restore from snapshot. (Estimates are averages based on size, real time may vary greatly from estimate).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Estimate based on the backup schedule. (Estimates are calculated from backup schedule, real time restore may vary)."
                        }
                    },
                    "optimizationType": "LeastChange",
                    "description": "Current Configuration",
                    "suggestedChanges": [],
                    "haArchitecture": "BackupAndRestore",
                    "referenceId": "original"
                },
                {
                    "cost": {
                        "amount": 76.73,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "databaseappcomponent-hji",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 120,
                            "expectedRtoDescription": "Estimated time to promote a secondary instance.",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "Aurora data is automatically replicated across multiple Availability Zones in a Region."
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 120,
                            "expectedRtoDescription": "Estimated time to promote a secondary instance.",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "Aurora data is automatically replicated across multiple Availability Zones in a Region."
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 900,
                            "expectedRtoDescription": "Estimate time to backtrack to a stable state.",
                            "expectedRpoInSecs": 300,
                            "expectedRpoDescription": "Estimate for latest restorable time for point in time recovery."
                        }
                    },
                    "optimizationType": "BestAZRecovery",
                    "description": "Aurora database cluster with one read replica, with backtracking window of 24 hours.",
                    "suggestedChanges": [
                        "Add read replica in the same Region",
                        "Change DB instance to a supported class (db.t3.small)",
                        "Change to Aurora",
                        "Enable cluster backtracking",
                        "Enable instance backup with retention period 7"
                    ],
                    "haArchitecture": "WarmStandby",
                    "referenceId": "rds:config:aurora-backtracking"
                }
            ]
        },
        {
            "appComponentName": "storageappcomponent-rlb",
            "recommendationStatus": "BreachedUnattainable",
            "configRecommendations": [
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "storageappcomponent-rlb",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 0,
                            "expectedRtoDescription": "No data loss in your system",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "No data loss in your system"
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyBreached",
                            "expectedRtoInSecs": 2592001,
                            "expectedRtoDescription": "No recovery option configured",
                            "expectedRpoInSecs": 2592001,
                            "expectedRpoDescription": "No recovery option configured"
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 900,
                            "expectedRtoDescription": "Time to recover Amazon EFS from backup. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Recovery Point Objective for Amazon EFS from backups, derived from backup frequency"
                        }
                    },
                    "optimizationType": "BestAZRecovery",
                    "description": "Amazon EFS with backups configured",
                    "suggestedChanges": [
                        "Add additional availability zone"
                    ],
                    "haArchitecture": "MultiSite",
                    "referenceId": "efs:config:with_backups:2020-04-01"
                },
                {
                    "cost": {
                        "amount": 0.0,
                        "currency": "USD",
                        "frequency": "Monthly"
                    },
                    "appComponentName": "storageappcomponent-rlb",
                    "recommendationCompliance": {
                        "AZ": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 0,
                            "expectedRtoDescription": "No data loss in your system",
                            "expectedRpoInSecs": 0,
                            "expectedRpoDescription": "No data loss in your system"
                        },
                        "Hardware": {
                            "expectedComplianceStatus": "PolicyBreached",
                            "expectedRtoInSecs": 2592001,
                            "expectedRtoDescription": "No recovery option configured",
                            "expectedRpoInSecs": 2592001,
                            "expectedRpoDescription": "No recovery option configured"
                        },
                        "Software": {
                            "expectedComplianceStatus": "PolicyMet",
                            "expectedRtoInSecs": 900,
                            "expectedRtoDescription": "Time to recover Amazon EFS from backup. (Estimate is based on averages, real time restore may vary).",
                            "expectedRpoInSecs": 86400,
                            "expectedRpoDescription": "Recovery Point Objective for Amazon EFS from backups, derived from backup frequency"
                        }
                    },
                    "optimizationType": "BestAttainable",
                    "description": "Amazon EFS with backups configured",
                    "suggestedChanges": [
                        "Add additional availability zone"
                    ],
                    "haArchitecture": "MultiSite",
                    "referenceId": "efs:config:with_backups:2020-04-01"
                }
            ]
        }
    ]
}
```

# Modifier votre application
<a name="modify-application-using-api"></a>

AWS Resilience Hub vous permet de modifier les ressources de votre application en éditant un brouillon de votre application et en publiant les modifications apportées à une nouvelle version (publiée). AWS Resilience Hub utilise la version publiée de votre application, qui inclut les ressources mises à jour, pour exécuter des évaluations de résilience. 

Pour plus d’informations, consultez les rubriques suivantes :
+ [Ajout manuel de ressources à votre application](#manually-add-resource-using-api)
+ [Regroupement des ressources dans un seul composant d'application](#group-resource-using-api)
+ [Exclure une ressource d'un AppComponent](#exclude-resource-using-api)

## Ajout manuel de ressources à votre application
<a name="manually-add-resource-using-api"></a>

Si la ressource n'est pas déployée dans le cadre d'une source d'entrée, vous AWS Resilience Hub permet d'ajouter manuellement la ressource à votre application à l'aide de l'`CreateAppVersionResource`API. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateAppVersionResource.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_CreateAppVersionResource.html).

Vous devez fournir les paramètres suivants à cette API :
+ Amazon Resource Name (ARN) de l'application
+ ID logique de la ressource
+ Identifiant physique de la ressource
+ AWS CloudFormation type

L'exemple suivant montre comment ajouter manuellement des ressources à votre application à l' AWS Resilience Hub aide de l'`CreateAppVersionResource`API.

### Demande
<a name="manually-add-resource-req"></a>

```
aws resiliencehub create-app-version-resource \
--app-arn <App_ARN> \
--resource-name "backup-efs" \
--logical-resource-id '{"identifier": "backup-efs"}' \
--physical-resource-id '<Physical_resource_id_ARN>' \
--resource-type AWS::EFS::FileSystem \
--app-components '["new-app-component"]'
```

### Réponse
<a name="manually-add-resource-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "physicalResource": {
        "resourceName": "backup-efs",
        "logicalResourceId": {
            "identifier": "backup-efs"
        },
        "physicalResourceId": {
            "identifier": "<Physical_resource_id_ARN>",
            "type": "Arn"
        },
        "resourceType": "AWS::EFS::FileSystem",
        "appComponents": [
            {
                "name": "new-app-component",
                "type": "AWS::ResilienceHub::StorageAppComponent",
                "id": "new-app-component"
            }
        ]
    }
}
```

## Regroupement des ressources dans un seul composant d'application
<a name="group-resource-using-api"></a>

Un composant d'application (AppComponent) est un groupe de AWS ressources connexes qui fonctionnent et échouent en tant qu'unité unique. Par exemple, lorsque vous avez des charges de travail interrégionales utilisées comme déploiements de secours. AWS Resilience Hub dispose de règles régissant quelles AWS ressources peuvent appartenir à quel type de AppComponent. AWS Resilience Hub vous permet de regrouper les ressources en une seule à AppComponent l'aide de la gestion des ressources suivante APIs.
+ `UpdateAppVersionResource`— Cette API met à jour les détails des ressources d'une application. Pour plus d'informations sur cette API, consultez [UpdateAppVersionResource](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateAppVersionResource.html).
+ `DeleteAppVersionAppComponent`— Cette API les supprime AppComponent de l'application. Pour plus d'informations sur cette API, consultez [DeleteAppVersionAppComponent](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_DeleteAppVersionAppComponent.html).

L'exemple suivant montre comment mettre à jour les détails des ressources de votre application à l' AWS Resilience Hub aide de l'`DeleteAppVersionAppComponent`API.

### Demande
<a name="update-resource-req"></a>

```
aws resiliencehub delete-app-version-app-component \
--app-arn <App_ARN> \
--id new-app-component
```

### Réponse
<a name="update-resource-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "appComponent": {
        "name": "new-app-component",
        "type": "AWS::ResilienceHub::StorageAppComponent",
        "id": "new-app-component"
    }
}
```

L'exemple suivant montre comment supprimer le vide créé dans AppComponent les exemples précédents à l' AWS Resilience Hub aide de l'`UpdateAppVersionResource`API.

### Demande
<a name="delete-appComp-req"></a>

```
aws resiliencehub delete-app-version-app-component \
--app-arn <App_ARN> \
--id new-app-component
```

### Réponse
<a name="delete-appComp-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "appComponent": {
        "name": "new-app-component",
        "type": "AWS::ResilienceHub::StorageAppComponent",
        "id": "new-app-component"
    }
}
```

## Exclure une ressource d'un AppComponent
<a name="exclude-resource-using-api"></a>

AWS Resilience Hub vous permet d'exclure des ressources des évaluations à l'aide de l'`UpdateAppVersionResource`API. Ces ressources ne seront pas prises en compte lors du calcul de la résilience de votre application. Pour plus d'informations sur cette API, consultez [https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateAppVersionResource.html](https://docs.aws.amazon.com/resilience-hub/latest/APIReference/API_UpdateAppVersionResource.html).

**Note**  
Vous ne pouvez exclure que les ressources importées depuis une source d'entrée.

L'exemple suivant montre comment exclure une ressource de votre application lors de l' AWS Resilience Hub utilisation de l'`UpdateAppVersionResource`API.

### Demande
<a name="update-appComp-resource-req"></a>

```
aws resiliencehub update-app-version-resource \
--app-arn <App_ARN> \
--resource-name "ec2instance-nvz" \
--excluded
```

### Réponse
<a name="update-appComp-resource-res"></a>

```
{
    "appArn": "<App_ARN>",
    "appVersion": "draft",
    "physicalResource": {
        "resourceName": "ec2instance-nvz",
        "logicalResourceId": {
            "identifier": "ec2",
            "terraformSourceName": "test.state.file"
        },
        "physicalResourceId": {
            "identifier": "i-0b58265a694e5ffc1",
            "type": "Native",
            "awsRegion": "us-west-2",
            "awsAccountId": "123456789101"
        },
        "resourceType": "AWS::EC2::Instance",
        "appComponents": [
            {
                "name": "computeappcomponent-nrz",
                "type": "AWS::ResilienceHub::ComputeAppComponent"
            }
        ]
    }
}
```