Je souhaite identifier les comptes de commentateurs principaux qui effectuent un grand nombre d'appels d'API dans le cadre de mon AWS Organizations.
Résolution
Pour identifier les comptes qui effectuent un grand nombre d'appels d'API, il est recommandé d'utiliser à la fois vos Amazon CloudWatch Logs et vos métriques CloudWatch.
La résolution suivante utilise l'API DescribeVpcEndpoints d'Amazon Virtual Private Cloud (Amazon VPC).
Remarque : Amazon Elastic Compute Cloud (Amazon EC2) limite les requêtes d'API au niveau du compte. Pour améliorer les performances, Amazon EC2 limite également les requêtes d'API au niveau de l'organisation.
Utiliser CloudWatch Logs pour identifier les commentateurs principaux
Pour identifier les commutateurs principaux et agréger le total des appels d'API sur tous les comptes au cours d'une période donnée, utilisez CloudWatch Logs. Pour créer un tableau de bord CloudWatch Logs, procédez comme suit :
- Créez une nouvelle piste AWS CloudTrail pour votre organisation ou modifiez une piste existante pour publier la piste dans CloudWatch Logs.
Remarque : Vous devez définir CloudWatch Logs sur Activé.
- Ouvrez la console CloudWatch.
Remarque : Utilisez le compte que vous avez utilisé pour créer les CloudWatch Logs.
- Dans le volet de navigation, sélectionnez Journaux, puis Contributor Insights.
- Créez une règle Contributor Insights, puis sélectionnez Syntaxe.
- Pour connaître le nombre d'appels d'API effectués par chaque compte, saisissez le code suivant dans l'Éditeur de syntaxe :
{
"AggregateOn": "Count",
"Contribution": {
"Filters": [
{
"Match": "$.eventName",
"In": [
"DescribeVpcEndpoints"
]
}
],
"Keys": [
"$.userIdentity.accountId",
"$.eventName"
]
},
"LogFormat": "JSON",
"Schema": {
"Name": "CloudWatchLogRule",
"Version": 1
},
"LogGroupARNs": [
"arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace"
]
}
Pour obtenir un agrégat de tous les appels d'API sur tous les comptes, saisissez le code suivant :
{
"AggregateOn": "Count",
"Contribution": {
"Filters": [
{
"Match": "$.eventName",
"In": [
"DescribeVpcEndpoints"
]
}
],
"Keys": [
"$.eventName"
]
},
"LogFormat": "JSON",
"Schema": {
"Name": "CloudWatchLogRule",
"Version": 1
},
"LogGroupARNs": [
"arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace"
]
}
Remarque : Remplacez DescribeVpcEndpoints par votre appel d'API et arn:aws:logs:us-west-2:account:log-group:aws-cloudtrail-logs-73008ace par l'ARN de votre groupe de journaux.
- Sélectionnez Action, puis cliquez sur Ajouter au tableau de bord.
- Sélectionnez un tableau de bord existant ou créez-en un nouveau.
- Sélectionnez Enregistrer.
Pour trouver les commentateurs principaux sur une période donnée, vous pouvez également exécuter la requête CloudWatch Logs Insights suivante :
fields @timestamp, @message, @logStream, @log
| filter eventName = 'DescribeVpcEndpoints'
| sort @timestamp desc
| stats count() by bin(1m)
Remarque : Remplacez DescribeVpcEndpoints par votre appel d'API.
Utiliser les métriques CloudWatch pour identifier les commentateurs principaux
Remarque : Assurez-vous que votre configuration respecte les quotas Metrics Insights.
Il est recommandé de créer une alarme CloudWatch qui vous alerte lorsque vous atteignez 60 % du quota maximum pour les appels d'API.
Pour configurer un tableau de bord des métriques CloudWatch, procédez comme suit :
- Configurez l'observabilité entre comptes.
- Ouvrez la console CloudWatch.
- Sélectionnez Utiliser les métriques, puis choisissez l’onglet Toutes les métriques.
- Sélectionnez Source, puis saisissez le code suivant :
{
"metrics": [
[
{
"expression": "SELECT SUM(CallCount) FROM SCHEMA(\"AWS/Usage\", Class,Resource,Service,Type) WHERE Resource = 'DescribeVpcEndpoints'",
"label": "Query1",
"id": "q1",
"period": 60
}
]
],
"view": "timeSeries",
"stacked": false,
"region": "us-east-1",
"stat": "Average",
"period": 60,
"annotations": {
"horizontal": [
{
"label": "Org throttle",
"value": 225
}
]
}
}
Remarque : Remplacez DescribeVpcEndpoints par votre appel d'API, us-east-1 par votre région AWS et 225 par le quota de votre alarme.
- Sélectionnez Mettre à jour.
- Sélectionnez Action, puis cliquez sur Ajouter au tableau de bord.
- Sélectionnez un tableau de bord existant ou créez-en un nouveau. Il est recommandé d'utiliser le même tableau de bord que celui qui contient vos données CloudWatch Logs.
- Sélectionnez Enregistrer.
Informations connexes
Analyse d'AWS CloudTrail dans Amazon CloudWatch
Quotas AWS PrivateLink