Accès à l'API AWS Health - AWS Health

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.

Accès à l'API AWS Health

AWS Healthest un service Web RESTful qui utilise HTTPS comme moyen de transport et JSON comme format de sérialisation des messages. Votre code applicatif peut effectuer des requêtes directement à l'API AWS Health. Lorsque vous utilisez l'API REST directement, vous devez écrire le code nécessaire pour signer et authentifier vos demandes. Pour plus d'informations sur lesAWS Health opérations et les paramètres, consultez le document AWS HealthAPI Reference.

Note

Vous devez posséder un plan de support Business, Enterprise On-Ramp ou Enterprise AWS Supportpour utiliser l'AWS HealthAPI. Si vous appelez l'AWS HealthAPI depuis unAWS compte qui ne possède pas de plan de support Business, Enterprise On-Ramp ou Enterprise, vous recevez unSubscriptionRequiredException message d'erreur.

Vous pouvez utiliser lesAWS SDK pour encapsuler les appels d'AWS HealthAPI REST, ce qui peut simplifier le développement de votre application. Vous spécifiez vosAWS informations d'identification et ces bibliothèques se chargent de l'authentification et des demandes de signature à votre place.

AWS Healthfournit également unAWS Health tableau de bordAWS Management Console que vous pouvez utiliser pour afficher et rechercher des événements et des entités concernées. Consultez Commencer à utiliser votre AWS Health tableau de bord — État de santé de votre compte.

Points de terminaison

L'AWS HealthAPI suit une architecture d'application multirégion, une architecture et possède deux points de terminaison régionaux dans une configuration active-passive. Pour prendre en charge le basculement DNS actif-passif,AWS Health fournit un point de terminaison global unique. Vous pouvez effectuer une recherche DNS sur le point de terminaison global afin de déterminer le point de terminaison actif et laAWS région de signature correspondante. Cela vous permet de savoir quel point de terminaison utiliser dans votre code, afin d'obtenir les informations les plus récentesAWS Health.

Lorsque vous envoyez une demande au point de terminaison global, vous devez spécifier vos informations d'AWSaccès au point de terminaison régional que vous ciblez et configurer la signature pour votre région. Dans le cas contraire, votre authentification risque d'échouer. Pour plus d'informations, veuillez consulter Signature des demandes d'API AWS Health.

Le tableau suivant illustre la configuration par défaut.

Description Région de signature Point de terminaison Protocole
Actif

us-east-1

health.us-east-1.amazonaws.com

HTTPS
Passif

us-east-2

health.us-east-2.amazonaws.com

HTTPS
International

us-east-1

Note

Il s'agit de la région de signature du point de terminaison actif actuel.

global.health.amazonaws.com

HTTPS

Pour déterminer si un point de terminaison est le point de terminaison actif, effectuez une recherche DNS sur le point de terminaison global CNAME, puis extrayez laAWS région du nom résolu.

Exemple : recherche DNS sur un point de terminaison global

La commande suivante effectue une recherche DNS sur le point de terminaison global.health.amazonaws.com . La commande renvoie ensuite le point de terminaison de la région us-east-1 . Cette sortie vous indique pour quel point de terminaison vous devez utiliserAWS Health.

dig global.health.amazonaws.com | grep CNAME global.health.amazonaws.com. 10 IN CNAME health.us-east-1.amazonaws.com
Astuce

Les points de terminaison actifs et passifs renvoientAWS Health des données. Toutefois, lesAWS Health données les plus récentes ne sont disponibles qu'à partir du point de terminaison actif. Les données du paramètre passif seront finalement cohérentes avec celles du paramètre actif. Nous vous recommandons de redémarrer tous les flux de travail lorsque le point de terminaison actif change.

Utilisation de la démo de haute disponibilité des terminaux

Dans les exemples de code suivants,AWS Health utilise une recherche DNS par rapport au point de terminaison global pour déterminer le point de terminaison régional actif et la région de signature. Ensuite, le code redémarre le flux de travail si le point de terminaison actif change.

Utilisation de la démo Java

Prérequis

Vous devez installer Gradle.

Pour utiliser l'exemple Java
  1. Téléchargez la démo des terminaux àAWS Health haute disponibilité à partir de GitHub.

  2. Accédez auhigh-availability-endpoint/java répertoire du projet de démonstration.

  3. Dans une fenêtre de ligne de commande, entrez la commande suivante.

    gradle build
  4. Pour spécifier vosAWS informations d'identification, entrez les commandes suivantes.

    export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="your-aws-token"
  5. Pour exécuter la démonstration, entrez la commande suivante.

    gradle run
    Exemple : sortie deAWS Health l'événement

    L'exemple de code renvoie l'AWS Healthévénement récent des sept derniers jours dans votreAWS compte. Dans l'exemple suivant, la sortie inclut unAWS Health événement pour leAWS Config service.

    > Task :run [main] INFO aws.health.high.availability.endpoint.demo.HighAvailabilityV2Workflow - EventDetails(Event=Event(Arn=arn:aws:health:global::event/CONFIG/AWS_CONFIG_OPERATIONAL_NOTIFICATION/AWS_CONFIG_OPERATIONAL_NOTIFICATION_88a43e8a-e419-4ca7-9baa-56bcde4dba3, Service=CONFIG, EventTypeCode=AWS_CONFIG_OPERATIONAL_NOTIFICATION, EventTypeCategory=accountNotification, Region=global, StartTime=2020-09-11T02:55:49.899Z, LastUpdatedTime=2020-09-11T03:46:31.764Z, StatusCode=open, EventScopeCode=ACCOUNT_SPECIFIC), EventDescription=EventDescription(LatestDescription=As part of our ongoing efforts to optimize costs associated with recording changes related to certain ephemeral workloads, AWS Config is scheduled to release an update to relationships modeled within ConfigurationItems (CI) for 7 EC2 resource types on August 1, 2021. Examples of ephemeral workloads include changes to Amazon Elastic Compute Cloud (Amazon EC2) Spot Instances, Amazon Elastic MapReduce jobs, and Amazon EC2 Autoscaling. This update will optimize CI models for EC2 Instance, SecurityGroup, Network Interface, Subnet, VPC, VPN Gateway, and Customer Gateway resource types to record direct relationships and deprecate indirect relationships. A direct relationship is defined as a one-way relationship (A->B) between a resource (A) and another resource (B), and is typically derived from the Describe API response of resource (A). An indirect relationship, on the other hand, is a relationship that AWS Config infers (B->A), in order to create a bidirectional relationship. For example, EC2 instance -> Security Group is a direct relationship, since security groups are returned as part of the describe API response for an EC2 instance. But Security Group -> EC2 instance is an indirect relationship, since EC2 instances are not returned when describing an EC2 Security group. Until now, AWS Config has recorded both direct and indirect relationships. With the launch of Advanced queries in March 2019, indirect relationships can easily be answered by running Structured Query Language (SQL) queries such as: SELECT resourceId, resourceType WHERE resourceType ='AWS::EC2::Instance' AND relationships.resourceId = 'sg-234213' By deprecating indirect relationships, we can optimize the information contained within a Configuration Item while reducing AWS Config costs related to relationship changes. This is especially useful in case of ephemeral workloads where there is a high volume of configuration changes for EC2 resource types. Which resource relationships are being removed? Resource Type: Related Resource Type 1 AWS::EC2::CustomerGateway: AWS::VPN::Connection 2 AWS::EC2::Instance: AWS::EC2::EIP, AWS::EC2::RouteTable 3 AWS::EC2::NetworkInterface: AWS::EC2::EIP, AWS::EC2::RouteTable 4 AWS::EC2::SecurityGroup: AWS::EC2::Instance, AWS::EC2::NetworkInterface 5 AWS::EC2::Subnet: AWS::EC2::Instance, AWS::EC2::NetworkACL, AWS::EC2::NetworkInterface, AWS::EC2::RouteTable 6 AWS::EC2::VPC: AWS::EC2::Instance, AWS::EC2::InternetGateway, AWS::EC2::NetworkACL, AWS::EC2::NetworkInterface, AWS::EC2::RouteTable, AWS::EC2::Subnet, AWS::EC2::VPNGateway, AWS::EC2::SecurityGroup 7 AWS::EC2::VPNGateway: AWS::EC2::RouteTable, AWS::EC2::VPNConnection Alternate mechanism to retrieve this relationship information: The SelectResourceConfig API accepts a SQL SELECT command, performs the corresponding search, and returns resource configurations matching the properties. You can use this API to retrieve the same relationship information. For example, to retrieve the list of all EC2 Instances related to a particular VPC vpc-1234abc, you can use the following query: SELECT resourceId, resourceType WHERE resourceType ='AWS::EC2::Instance' AND relationships.resourceId = 'vpc-1234abc' If you have any questions regarding this deprecation plan, please contact AWS Support [1]. Additional sample queries to retrieve the relationship information for the resources listed above is provided in [2]. [1] https://aws.amazon.com/support [2] https://docs.aws.amazon.com/config/latest/developerguide/examplerelationshipqueries.html), EventMetadata={})

Ressources Java

  • Pour plus d'informations, consultez l'interface HealthClient dans la référence de l'AWS SDK for JavaAPI et le code source.

  • Pour plus d'informations sur la bibliothèque utilisée dans cette démonstration pour les recherches DNS, consultez le fichier dnsjava dans GitHub.

Utilisation de la démo Python

Prérequis

Vous devez installer Python 3.

Pour utiliser l'exemple Python
  1. Téléchargez la démo des terminaux àAWS Health haute disponibilité à partir de GitHub.

  2. Accédez auhigh-availability-endpoint/python répertoire du projet de démonstration.

  3. Dans une fenêtre de ligne de commande, entrez les commandes suivantes.

    pip3 install virtualenv virtualenv -p python3 v-aws-health-env
    Note

    Pour Python 3.3 et versions ultérieures, vous pouvez utiliser levenv module intégré pour créer l'environnement virtuel au lieu de l'installervirtualenv. Pour plus d'informations, consultez venv - Création d'environnements virtuels sur le site Web de Python.

    python3 -m venv v-aws-health-env
  4. Pour activer l'environnement virtuel, entrez la commande suivante :

    source v-aws-health-env/bin/activate
  5. Pour installer les dépendances, entrez la commande suivante :

    pip install -r requirements.txt
  6. Pour spécifier vosAWS informations d'identification, entrez les commandes suivantes.

    export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="your-aws-token"
  7. Pour exécuter la démonstration, entrez la commande suivante.

    python3 main.py
    Exemple : sortie deAWS Health l'événement

    L'exemple de code renvoie l'AWS Healthévénement récent des sept derniers jours dans votreAWS compte. La sortie suivante renvoie unAWS Health événement pour une notificationAWS de sécurité.

    INFO:botocore.credentials:Found credentials in environment variables.
    INFO:root:Details: {'arn': 'arn:aws:health:global::event/SECURITY/AWS_SECURITY_NOTIFICATION/AWS_SECURITY_NOTIFICATION_0e35e47e-2247-47c4-a9a5-876544042721', 
    'service': 'SECURITY', 'eventTypeCode': 'AWS_SECURITY_NOTIFICATION', 'eventTypeCategory': 'accountNotification', 'region': 'global', 'startTime': datetime.datetime(2020, 8, 19, 23, 30, 42, 476000, 
    tzinfo=tzlocal()), 'lastUpdatedTime': datetime.datetime(2020, 8, 20, 20, 44, 9, 547000, tzinfo=tzlocal()), 'statusCode': 'open', 'eventScopeCode': 'PUBLIC'}, description: 
    {'latestDescription': 'This is the second notice regarding TLS requirements on FIPS endpoints.\n\nWe
    are in the process of updating all AWS Federal Information Processing Standard (FIPS) endpoints across all AWS regions 
    to Transport Layer Security (TLS) version 1.2 by March 31, 2021 . In order to avoid an interruption in service, we encourage you to act now, by ensuring that you connect to AWS FIPS endpoints at a TLS version of 1.2. 
    If your client applications fail to support TLS 1.2 it will result in connection failures when TLS versions below 1.2 are no longer supported.\n\nBetween now and March 31, 2021 AWS will remove TLS 1.0 and TLS 1.1 support from each FIPS endpoint where no connections below TLS 1.2 are detected over a 30-day period. 
    After March 31, 2021 we may deploy this change to all AWS FIPS endpoints, even if there continue
    to be customer connections detected at TLS versions below 1.2. \n\nWe will provide additional updates and reminders on the AWS Security Blog, with a ‘TLS’ tag [1]. If you need further guidance or assistance, please contact AWS Support [2] or your Technical Account Manager (TAM). 
    Additional information is below.\n\nHow can I identify clients that are connecting with TLS
    1.0/1.1?\nFor customers using S3 [3], Cloudfront [4] or Application Load Balancer [5] you can use
    your access logs to view the TLS connection information for these services, and identify client
    connections that are not at TLS 1.2. If you are using the AWS Developer Tools on your clients, 
    you can find information on how to properly configure your client’s TLS versions by visiting Tools to Build on AWS [7] or our associated AWS Security Blog has a link for each unique code language [7].\n\nWhat is Transport Layer Security (TLS)?\nTransport Layer Security (TLS Protocols) are cryptographic protocols designed to provide secure communication across a computer network 
    [6].\n\nWhat are AWS FIPS endpoints? \nAll AWS services offer Transport Layer Security (TLS) 1.2 encrypted endpoints that can be used for all API calls. Some AWS services also offer FIPS 140-2 endpoints [9] for customers that require use of FIPS validated cryptographic libraries. \n\n[1] https://aws.amazon.com/blogs/security/tag/tls/\n[2] https://aws.amazon.com/support\n[3] 
    https://docs.aws.amazon.com/AmazonS3/latest/dev/LogFormat.html\n[4] https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html\n[5] https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html\n[6] https://aws.amazon.com/tools\n[7] https://aws.amazon.com/blogs/security/tls-1-2-to-become-the-minimum-for-all-aws-fips-endpoints\n[8] 
    https://en.wikipedia.org/wiki/Transport_Layer_Security\n[9] https://aws.amazon.com/compliance/fips'}
  8. Lorsque vous avez terminé, entrez la commande suivante pour désactiver la machine virtuelle.

    deactivate

Ressources Python

Signature des demandes d'API AWS Health

Lorsque vous utilisez l'AWSAWS Command Line Interface(AWS CLI) pour effectuer des demandes auprès d'AWS, ces outils signent automatiquement les demandes avec la clé d'accès que vous spécifiez lors de la configuration des outils. Par exemple, si vous utilisez l' () lorsAWS SDK for Java de la précédente démonstration des points de terminaison à haute disponibilité, vous n'avez pas besoin de signer vous-même les demandes.

Exemples de code Java

Pour plus d'exemples d'utilisation de l'AWS HealthAPI avec leAWS SDK for Java, consultez cet exemple de code.

Lorsque vous effectuez des demandes, nous vous recommandons vivement de ne pas utiliser vos informations d'identification du compteAWS racine pour un accès régulier àAWS Health. Vous pouvez utiliser les informations d'identification d'un utilisateur IAM. Pour plus d'informations, consultez la section Verrouiller les clés d'accès utilisateur root de votreAWS compte dans le guide de l'utilisateur IAM.

Si vous n'utilisez pas lesAWS kits SDK ou lesAWS CLI, vous devez signer vos demandes vous-même. Nous vous recommandons d'utiliser la version 4 deAWS Signature. Pour plus d'informations, consultez Signature des demandes d'API AWS dans le Références générales AWS.