Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Integrazione dei consigli operativi nella tua applicazione con AWS CloudFormation
Dopo aver scelto Crea CloudFormation modello nella pagina Consigli operativi, AWS Resilience Hub crea un AWS CloudFormation modello che descrive l'allarme specifico, la procedura operativa standard (SOP) o l' AWS FIS esperimento per l'applicazione. Il AWS CloudFormation modello è archiviato in un bucket Amazon S3 e puoi controllare il percorso S3 verso il modello nella scheda Dettagli del modello nella pagina Consigli operativi.
Ad esempio, l'elenco seguente mostra un AWS CloudFormation modello in JSON formato -format che descrive una raccomandazione di allarme resa da. AWS Resilience HubÈ un allarme di limitazione della lettura per una tabella DynamoDB chiamata. Employees
La Resources
sezione del modello descrive l'AWS::CloudWatch::Alarm
allarme che si attiva quando il numero di eventi di accelerazione della lettura per la tabella DynamoDB supera 1. Inoltre, le due AWS::SSM::Parameter
risorse definiscono i metadati che consentono di identificare le risorse installate senza dover AWS Resilience Hub scansionare l'applicazione effettiva.
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "SNSTopicARN" : { "Type" : "String", "Description" : "The ARN of the Amazon SNS topic to which alarm status changes are to be sent. This must be in the same Region being deployed.", "AllowedPattern" : "^arn:(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):sns:([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:_/+=,@.-]{1,256}$" } }, "Resources" : { "ReadthrottleeventsthresholdexceededEmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9Alarm" : { "Type" : "AWS::CloudWatch::Alarm", "Properties" : { "AlarmDescription" : "An Alarm by AWS Resilience Hub that alerts when the number of read-throttle events are greater than 1.", "AlarmName" : "ResilienceHub-ReadThrottleEventsAlarm-2020-04-01_Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9", "AlarmActions" : [ { "Ref" : "SNSTopicARN" } ], "MetricName" : "ReadThrottleEvents", "Namespace" : "AWS/DynamoDB", "Statistic" : "Sum", "Dimensions" : [ { "Name" : "TableName", "Value" : "Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9" } ], "Period" : 60, "EvaluationPeriods" : 1, "DatapointsToAlarm" : 1, "Threshold" : 1, "ComparisonOperator" : "GreaterThanOrEqualToThreshold", "TreatMissingData" : "notBreaching", "Unit" : "Count" }, "Metadata" : { "AWS::ResilienceHub::Monitoring" : { "recommendationId" : "dynamodb:alarm:health-read_throttle_events:2020-04-01" } } }, "dynamodbalarmhealthreadthrottleevents20200401EmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9AlarmSSMParameter" : { "Type" : "AWS::SSM::Parameter", "Properties" : { "Name" : "/ResilienceHub/Alarm/3f904525-4bfa-430f-96ef-58ec9b19aa73/dynamodb-alarm-health-read-throttle-events-2020-04-01_Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9", "Type" : "String", "Value" : { "Fn::Sub" : "${ReadthrottleeventsthresholdexceededEmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9Alarm}" }, "Description" : "SSM Parameter for identifying installed resources." } }, "dynamodbalarmhealthreadthrottleevents20200401EmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9AlarmInfoSSMParameter" : { "Type" : "AWS::SSM::Parameter", "Properties" : { "Name" : "/ResilienceHub/Info/Alarm/3f904525-4bfa-430f-96ef-58ec9b19aa73/dynamodb-alarm-health-read-throttle-events-2020-04-01_Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9", "Type" : "String", "Value" : { "Fn::Sub" : "{\"alarmName\":\"${ReadthrottleeventsthresholdexceededEmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9Alarm}\",\"referenceId\":\"dynamodb:alarm:health_read_throttle_events:2020-04-01\",\"resourceId\":\"Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9\",\"relatedSOPs\":[\"dynamodb:sop:update_provisioned_capacity:2020-04-01\"]}" }, "Description" : "SSM Parameter for identifying installed resources." } } } }
Modificare il modello AWS CloudFormation
Il modo più semplice per integrare un allarme o una AWS FIS risorsa nell'applicazione principale consiste semplicemente nell'aggiungerlo come altra risorsa nel modello che descrive il modello dell'applicazione. SOP Il file JSON -formatted fornito di seguito fornisce una descrizione di base di come una tabella DynamoDB viene descritta in un modello. AWS CloudFormation È probabile che un'applicazione reale includa molte altre risorse, come tabelle aggiuntive.
{ "AWSTemplateFormatVersion": "2010-09-09T00:00:00.000Z", "Description": "Application Stack with Employees Table", "Outputs": { "DynamoDBTable": { "Description": "The DynamoDB Table Name", "Value": {"Ref": "Employees"} } }, "Resources": { "Employees": { "Type": "AWS::DynamoDB::Table", "Properties": { "BillingMode": "PAY_PER_REQUEST", "AttributeDefinitions": [ { "AttributeName": "USER_ID", "AttributeType": "S" }, { "AttributeName": "RANGE_ATTRIBUTE", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "USER_ID", "KeyType": "HASH" }, { "AttributeName": "RANGE_ATTRIBUTE", "KeyType": "RANGE" } ], "PointInTimeRecoverySpecification": { "PointInTimeRecoveryEnabled": true }, "Tags": [ { "Key": "Key", "Value": "Value" } ], "LocalSecondaryIndexes": [ { "IndexName": "resiliencehub-index-local-1", "KeySchema": [ { "AttributeName": "USER_ID", "KeyType": "HASH" }, { "AttributeName": "RANGE_ATTRIBUTE", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "ALL" } } ], "GlobalSecondaryIndexes": [ { "IndexName": "resiliencehub-index-1", "KeySchema": [ { "AttributeName": "USER_ID", "KeyType": "HASH" } ], "Projection": { "ProjectionType": "ALL" } } ] } } } }
Per consentire l'implementazione della risorsa di allarme con l'applicazione, ora è necessario sostituire le risorse codificate con un riferimento dinamico negli stack delle applicazioni.
Quindi, nella definizione della AWS::CloudWatch::Alarm
risorsa, modifica quanto segue:
"Value" : "Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9"
al seguente:
"Value" : {"Ref": "Employees"}
E nella definizione della AWS::SSM::Parameter
risorsa, modifica quanto segue:
"Fn::Sub" : "{\"alarmName\":\"${ReadthrottleeventsthresholdexceededDynamoDBEmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9Alarm}\",\"referenceId\":\"dynamodb:alarm:health_read_throttle_events:2020-04-01\",\"resourceId\":\"Employees-ON-DEMAND-0-DynamoDBTable-PXBZQYH3DCJ9\",\"relatedSOPs\":[\"dynamodb:sop:update_provisioned_capacity:2020-04-01\"]}"
a quanto segue:
"Fn::Sub" : "{\"alarmName\":\"${ReadthrottleeventsthresholdexceededEmployeesONDEMAND0DynamoDBTablePXBZQYH3DCJ9Alarm}\",\"referenceId\":\"dynamodb:alarm:health_read_throttle_events:2020-04-01\",\"resourceId\":\"${Employees}\",\"relatedSOPs\":[\"dynamodb:sop:update_provisioned_capacity:2020-04-01\"]}"
Quando modificate AWS CloudFormation modelli SOPs ed AWS FIS esperimenti, seguirete lo stesso approccio, sostituendo i riferimenti codificati IDs con riferimenti dinamici che continuano a funzionare anche dopo le modifiche all'hardware.
Utilizzando un riferimento alla tabella DynamoDB, è possibile eseguire le seguenti AWS CloudFormation operazioni:
-
Create prima la tabella del database.
-
Utilizza sempre l'ID effettivo della risorsa generata nell'allarme e aggiorna l'allarme dinamicamente se è AWS CloudFormation necessario sostituire la risorsa.
Nota
È possibile scegliere metodi più avanzati per gestire le risorse dell'applicazione, ad AWS CloudFormation esempio annidando gli stack o facendo riferimento agli output delle risorse in uno stack separato. AWS CloudFormation (Ma se vuoi mantenere lo stack di consigli separato dallo stack principale, devi configurare un modo per passare le informazioni tra i due stack.)
Inoltre, è possibile utilizzare strumenti di terze parti, come Terraform by HashiCorp, per fornire Infrastructure as Code (IaC).