Erste Schritte mit der Scorekeep-Beispielanwendung - AWS X-Ray

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte mit der Scorekeep-Beispielanwendung

In diesem Tutorial wird der xray-gettingstarted Zweig der Scorekeep-Beispielanwendung verwendet, die verwendet, AWS CloudFormation um die Ressourcen zu erstellen und zu konfigurieren, die die Beispielanwendung und den X-Ray-Daemon auf Amazon ECS ausführen. Die Anwendung verwendet das Spring-Framework, um eine JSON-Web-API zu implementieren, und das , AWS SDK for Java um Daten in Amazon DynamoDB zu speichern. Ein Servlet-Filter in der Anwendung instrumentiert alle eingehenden Anfragen, die von der Anwendung bedient werden, und ein Anfrage-Handler auf dem AWS SDK-Client instrumentiert Downstream-Aufrufe an DynamoDB .

Sie können diesem Tutorial entweder mit der AWS Management Console oder der folgen AWS CLI.

Voraussetzungen

In diesem Tutorial wird verwendet, AWS CloudFormation um die Ressourcen zu erstellen und zu konfigurieren, die die Beispielanwendung und den X-Ray-Daemon ausführen. Die folgenden Voraussetzungen sind erforderlich, um das Tutorial zu installieren und auszuführen:

  1. Wenn Sie einen IAM-Benutzer mit eingeschränkten Berechtigungen verwenden, fügen Sie die folgenden Benutzerrichtlinien in der IAM-Konsole hinzu:

    • AWSCloudFormationFullAccess – für den Zugriff auf und die Verwendung von CloudFormation

    • AmazonS3FullAccess – zum Hochladen einer Vorlagendatei in CloudFormation mithilfe der AWS Management Console

    • IAMFullAccess – zum Erstellen der Amazon-ECS- und Amazon EC2-Instance-Rollen

    • AmazonEC2FullAccess – zum Erstellen der Amazon EC2-Ressourcen

    • AmazonDynamoDBFullAccess – zum Erstellen der DynamoDB-Tabellen

    • AmazonECS_FullAccess – zum Erstellen von Amazon-ECS-Ressourcen

    • AmazonSNSFullAccess – zum Erstellen des Amazon SNS-Themas

    • AWSXrayReadOnlyAccess – für die Berechtigung zum Anzeigen der Ablaufverfolgungszuordnung und Ablaufverfolgungen in der X-Ray-Konsole

  2. Um das Tutorial mit der auszuführen AWS CLI, installieren Sie die CLI-Version 2.7.9 oder höher und konfigurieren Sie die CLI mit dem Benutzer aus dem vorherigen Schritt. Stellen Sie sicher, dass die Region konfiguriert ist, wenn Sie die AWS CLI mit dem Benutzer konfigurieren. Wenn keine Region konfiguriert ist, müssen Sie an jeden CLI-Befehl --region AWS-REGION anhängen.

  3. Stellen Sie sicher, dass Git installiert ist, um das Beispielanwendungs-Repo zu klonen.

  4. Verwenden Sie das folgende Codebeispiel, um den xray-gettingstarted Zweig des Scorekeep-Repositorys zu klonen:

    git clone https://github.com/aws-samples/eb-java-scorekeep.git xray-scorekeep -b xray-gettingstarted

Installieren der Scorekeep-Anwendung mit CloudFormation

AWS Management Console
Installieren der Beispielanwendung mithilfe der AWS Management Console
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie Stack erstellen und dann im Dropdown-Menü Mit neuen Ressourcen aus.

  3. Wählen Sie im Abschnitt Specify template (Vorlage angeben) die Option Upload a template file (Vorlagendatei hochladen) aus.

  4. Wählen Sie Datei auswählen, navigieren Sie zu dem xray-scorekeep/cloudformation Ordner, der beim Klonen des Git-Repo erstellt wurde, und wählen Sie die cf-resources.yaml Datei aus.

  5. Wählen Sie Next (Weiter), um fortzufahren.

  6. Geben Sie scorekeep in das Textfeld Stack-Name ein und wählen Sie dann unten auf der Seite Weiter aus, um fortzufahren. Beachten Sie, dass der Rest dieses Tutorials davon ausgeht, dass der Stack den Namen hatscorekeep.

  7. Scrollen Sie nach unten auf der Seite Stack-Optionen konfigurieren und wählen Sie Weiter, um fortzufahren.

  8. Scrollen Sie nach unten auf der Seite Überprüfen, wählen Sie die Bestätigung des Kontrollkästchens aus, das IAM-Ressourcen mit benutzerdefinierten Namen erstellen CloudFormation kann, und wählen Sie Stack erstellen aus.

  9. Der CloudFormation Stack wird jetzt erstellt. Der Stack-Status beträgt etwa fünf MinutenCREATE_IN_PROGRESS, bevor Sie zu wechselnCREATE_COMPLETE. Der Status wird regelmäßig aktualisiert, oder Sie können die Seite aktualisieren.

AWS CLI
Installieren der Beispielanwendung mithilfe der AWS CLI
  1. Navigieren Sie zum cloudformation Ordner des xray-scorekeepRepositorys, das Sie zuvor im Tutorial geklont haben:

    cd xray-scorekeep/cloudformation/
  2. Geben Sie den folgenden AWS CLI Befehl ein, um den CloudFormation Stack zu erstellen:

    aws cloudformation create-stack --stack-name scorekeep --capabilities "CAPABILITY_NAMED_IAM" --template-body file://cf-resources.yaml
  3. Warten Sie, bis der CloudFormation Stack-Status lautetCREATE_COMPLETE, was etwa fünf Minuten dauert. Verwenden Sie den folgenden AWS CLI Befehl, um den Status zu überprüfen:

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

Generieren von Ablaufverfolgungsdaten

Die Beispielanwendung enthält eine Front-End-Webanwendung. Verwenden Sie die Web-App, um Datenverkehr an die API zu generieren und Ablaufverfolgungsdaten an X-Ray zu senden. Rufen Sie zunächst die URL der Web-App mit der AWS Management Console oder der ab AWS CLI:

AWS Management Console
Suchen der Anwendungs-URL mithilfe der AWS Management Console
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie den scorekeepStack aus der Liste aus.

  3. Wählen Sie auf der scorekeepStack-Seite die Registerkarte Outputs und dann den LoadBalancerUrl URL-Link aus, um die Webanwendung zu öffnen.

AWS CLI
Suchen der Anwendungs-URL mithilfe der AWS CLI
  1. Verwenden Sie den folgenden Befehl, um die URL der Webanwendung anzuzeigen:

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].Outputs[0].OutputValue"
  2. Kopieren Sie diese URL und öffnen Sie in einem Browser, um die Scorekeep-Webanwendung anzuzeigen.

Verwenden der Webanwendung zum Generieren von Ablaufverfolgungsdaten
  1. Wählen Sie Create aus, um einen Benutzer und eine Sitzung zu erstellen.

  2. Geben Sie einen Game Name ein, legen Sie die Rules auf Tic Tac Toe fest und wählen Sie anschließend Create aus, um ein Spiel zu erstellen.

  3. Wählen Sie Play, um das Spiel zu starten.

  4. Wählen Sie eine Kachel, um einen Spielzug zu machen, und ändern Sie den Spielestatus.

Jeder dieser Schritte generiert HTTP-Anfragen an die API und nachgelagerte Aufrufe an DynamoDB, um Benutzer-, Sitzungs-, Spiel-, Verschiebungs- und Zustandsdaten zu lesen und zu schreiben.

Anzeigen der Trace-Übersicht in der AWS Management Console

Sie können die Trace-Übersicht und die von der Beispielanwendung generierten Traces in den X-Ray- und - CloudWatch Konsolen sehen.

X-Ray console
Verwenden der X-Ray-Konsole
  1. Öffnen Sie die Seite Trace Map der X-Ray-Konsole .

  2. Die Konsole zeigt eine Darstellung des Servicediagramms, das X-Ray aus den von der Anwendung gesendeten Ablaufverfolgungsdaten generiert. Passen Sie den Zeitraum der Trace-Übersicht bei Bedarf an, um sicherzustellen, dass alle Traces seit dem ersten Start der Webanwendung angezeigt werden.

    
                  Zeitraum der X-Ray-Ablaufverfolgungszuordnung

Die Ablaufverfolgungszuordnung zeigt den Web-App-Client, die in Amazon ECS ausgeführte API und jede DynamoDB-Tabelle, die die Anwendung verwendet. Jede Anforderung an die Anwendung, bis zu einer konfigurierbaren Höchstanzahl von Anforderungen pro Sekunde, wird verfolgt, und zwar wie sie auf die API trifft, Anforderungen an nachgelagerte Services generiert und abgeschlossen wird.

Sie können jeden Knoten in der Service-Grafik wählen, um Ablaufverfolgungen für Anforderungen anzusehen, die Datenverkehr zu diesem Knoten generiert haben. Derzeit ist der Amazon SNS-Knoten gelb. Zeigen Sie die Details an, um herauszufinden, warum.


              Seite „Trace Map“ der X-Ray-Konsole
So finden Sie die Ursache des Fehlers
  1. Wählen Sie den Knoten mit dem Namen SNS. Der Bereich mit den Knotendetails wird angezeigt.

  2. Wählen Sie View traces (Ablaufverfolgungen anzeigen), um auf den Bildschirm Trace overview (Ablaufverfolgungsübersicht) zuzugreifen.

  3. Wählen Sie die Nachverfolgung aus der Trace list. Diese Ablaufverfolgung verfügt über keine Methode oder URL, da sie während des Startups und nicht als Reaktion auf eine eingehende Anforderung aufgezeichnet wurde.

    
                  Wählen einer Ablaufverfolgung aus der Ablaufverfolgungsliste
  4. Wählen Sie das Fehlerstatussymbol im Amazon SNS-Segment unten auf der Seite, um die Seite Ausnahmen für das SNS-Teilsegment zu öffnen.

    
                  Wählen Sie das Fehlerstatussymbol, um die Seite Ausnahmen für das Amazon SNS-Teilsegment zu öffnen
  5. Das X-Ray-SDK erfasst automatisch Ausnahmen, die von instrumentierten AWS SDK-Clients ausgelöst werden, und zeichnet die Stack-Ablaufverfolgung auf.

    
                  Registerkarte "Exceptions (Ausnahmen)" mit erfassten Ausnahmen und aufgezeichneter Stack-Ablaufverfolgung
CloudWatch console
Verwenden der CloudWatch Konsole
  1. Öffnen Sie die X-Ray-Trace-Übersichtsseite der - CloudWatch Konsole.

  2. Die Konsole zeigt eine Darstellung des Servicediagramms, das X-Ray aus den von der Anwendung gesendeten Ablaufverfolgungsdaten generiert. Passen Sie den Zeitraum der Trace-Übersicht bei Bedarf an, um sicherzustellen, dass alle Traces seit dem ersten Start der Webanwendung angezeigt werden.

    
                  CloudWatch Ablaufverfolgungs-Map-Zeitraum

Die Ablaufverfolgungszuordnung zeigt den Web-App-Client, die in Amazon EC2 ausgeführte API und jede DynamoDB-Tabelle, die die Anwendung verwendet. Jede Anforderung an die Anwendung, bis zu einer konfigurierbaren Höchstanzahl von Anforderungen pro Sekunde, wird verfolgt, und zwar wie sie auf die API trifft, Anforderungen an nachgelagerte Services generiert und abgeschlossen wird.

Sie können jeden Knoten in der Service-Grafik wählen, um Ablaufverfolgungen für Anforderungen anzusehen, die Datenverkehr zu diesem Knoten generiert haben. Derzeit ist der Amazon SNS-Knoten orange. Zeigen Sie die Details an, um herauszufinden, warum.


              Seite „Trace Map“ der X-Ray-Konsole
So finden Sie die Ursache des Fehlers
  1. Wählen Sie den Knoten mit dem Namen SNS. Das Detailfenster des SNS-Knotens wird unter der Karte angezeigt.

  2. Wählen Sie Traces anzeigen, um auf die Seite Traces zuzugreifen.

  3. Fügen Sie unten auf der Seite den Trace aus der Liste Traces hinzu. Diese Ablaufverfolgung verfügt über keine Methode oder URL, da sie während des Startups und nicht als Reaktion auf eine eingehende Anforderung aufgezeichnet wurde.

    
                  Wählen einer Ablaufverfolgung aus der Ablaufverfolgungsliste
  4. Wählen Sie das Amazon SNS-Teilsegment unten in der Segmentzeitleiste und dann die Registerkarte Ausnahmen für das SNS-Teilsegment aus, um die Ausnahmedetails anzuzeigen.

    
                  Anzeigen der Registerkarte Ausnahmen für das Amazon SNS-Teilsegment

Die Ursache gibt an, dass die E-Mail-Adresse, die in einem Aufruf von createSubscription in der Klasse WebConfig angegeben wurde, ungültig ist. Im nächsten Abschnitt beheben wir das.

Konfigurieren von Amazon-SNS-Benachrichtigungen

Scorekeep verwendet Amazon SNS, um Benachrichtigungen zu senden, wenn Benutzer ein Spiel beenden. Wenn die Anwendung gestartet wird, versucht sie, ein Abonnement für eine E-Mail-Adresse zu erstellen, die in einem CloudFormation Stack-Parameter definiert ist. Dieser Aufruf schlägt derzeit fehl. Konfigurieren Sie eine Benachrichtigungs-E-Mail, um Benachrichtigungen zu aktivieren und die in der Ablaufverfolgungszuordnung hervorgehobenen Fehler zu beheben.

AWS Management Console
So konfigurieren Sie Amazon SNS-Benachrichtigungen mit der AWS Management Console
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie das Optionsfeld neben dem scorekeepStack-Namen in der Liste und dann Aktualisieren aus.

  3. Stellen Sie sicher, dass Aktuelle Vorlage verwenden ausgewählt ist, und klicken Sie dann auf der Seite Stack aktualisieren auf Weiter.

  4. Suchen Sie den Parameter E-Mail in der Liste und ersetzen Sie den Standardwert durch eine gültige E-Mail-Adresse.

    
                  Aktualisieren der E-Mail-Konfiguration
  5. Scrollen Sie ans Seitenende und wählen Sie Next (Weiter).

  6. Scrollen Sie nach unten auf der Seite Überprüfen, wählen Sie das Kontrollkästchen Bestätigung, das IAM-Ressourcen mit benutzerdefinierten Namen erstellen CloudFormation kann, und wählen Sie Stack aktualisieren aus.

  7. Der CloudFormation Stack wird jetzt aktualisiert. Der Stack-Status beträgt etwa fünf MinutenUPDATE_IN_PROGRESS, bevor Sie zu wechselnUPDATE_COMPLETE. Der Status wird regelmäßig aktualisiert, oder Sie können die Seite aktualisieren.

AWS CLI
So konfigurieren Sie Amazon SNS-Benachrichtigungen mit der AWS CLI
  1. Navigieren Sie zu dem xray-scorekeep/cloudformation/ Ordner, den Sie zuvor erstellt haben, und öffnen Sie die cf-resources.yaml Datei in einem Texteditor.

  2. Suchen Sie den Default Wert im Parameter E-Mail und ändern Sie ihn von UPDATE_ME in eine gültige E-Mail-Adresse.

    Parameters: Email: Type: String Default: UPDATE_ME # <- change to a valid abc@def.xyz email address
  3. Aktualisieren Sie den CloudFormation Stack im cloudformation Ordner mit dem folgenden AWS CLI Befehl:

    aws cloudformation update-stack --stack-name scorekeep --capabilities "CAPABILITY_NAMED_IAM" --template-body file://cf-resources.yaml
  4. Warten Sie, bis der CloudFormation Stack-Status lautetUPDATE_COMPLETE, was einige Minuten dauert. Verwenden Sie den folgenden AWS CLI Befehl, um den Status zu überprüfen:

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

Wenn die Aktualisierung abgeschlossen ist, startet Scorekeep neu und erstellt ein Abonnement für das SNS-Thema. Überprüfen Sie Ihre E-Mail-Adresse und bestätigen Sie das Abonnement, um Aktualisierungen anzuzeigen, wenn Sie ein Spiel abgeschlossen haben. Öffnen Sie die Ablaufverfolgungszuordnung, um zu überprüfen, ob die Aufrufe an SNS nicht mehr fehlschlagen.

Erkunden der Beispielanwendung

Die Beispielanwendung ist eine HTTP-Web-API in Java, die für die Verwendung des X-Ray SDK for Java konfiguriert ist. Wenn Sie die Anwendung mit der CloudFormation Vorlage bereitstellen, werden die DynamoDB-Tabellen, der Amazon-ECS-Cluster und andere -Services erstellt, die zum Ausführen von Scorekeep auf ECS erforderlich sind. Eine Aufgabendefinitionsdatei für ECS wird über erstellt CloudFormation. Diese Datei definiert die Container-Images, die pro Aufgabe in einem ECS-Cluster verwendet werden. Diese Images erhalten Sie von der offiziellen öffentlichen X-Ray-ECR. Das scorekeep-API-Container-Image enthält die mit Gradle kompilierte API. Das Container-Image des Scorekeep-Frontend-Containers bedient das Frontend mithilfe des nginx-Proxy-Servers. Dieser Server leitet Anfragen an Pfade weiter, die mit /api beginnen, an die API.

Zum Instrumentieren eingehender HTTP-Anforderungen fügt die Anwendung den vom SDK bereitgestellten TracingFilter hinzu.

Beispiel src/main/java/scorekeep/WebConfig.java – Servlet-Filter
import javax.servlet.Filter; import com.amazonaws.xray.javax.servlet.AWSXRayServletFilter; ... @Configuration public class WebConfig { @Bean public Filter TracingFilter() { return new AWSXRayServletFilter("Scorekeep"); } ...

Dieser Filter sendet Ablaufverfolgungsdaten über alle eingehenden Anforderungen, die die Anwendung verarbeitet, einschließlich Anforderungs-URL, Methode, Antwortstatus sowie Start- und Endzeit.

Die Anwendung führt auch Downstream-Aufrufe an DynamoDB über die durch AWS SDK for Java. Um diese Aufrufe zu instrumentieren, verwendet die Anwendung einfach die AWS SDK-bezogenen Submodule als Abhängigkeiten, und das X-Ray-SDK für Java instrumentiert automatisch alle AWS SDK-Clients.

Die Anwendung verwendet Docker, um den Quellcode auf der Instance mit der zu erstellen, Gradle Docker Image und die -Scorekeep API DockerfileDatei, um das ausführbare JAR auszuführen, das Gradle in seiner generiertENTRYPOINT.

Beispiel Verwendung von Docker zum Erstellen über Gradle Docker Image
docker run --rm -v /PATH/TO/SCOREKEEP_REPO/home/gradle/project -w /home/gradle/project gradle:4.3 gradle build
Beispiel Dockerfile-Eintragspunkt
ENTRYPOINT [ "sh", "-c", "java -Dserver.port=5000 -jar scorekeep-api-1.0.0.jar" ]

Die build.gradle-Datei lädt die SDK-Untermodule von Maven während der Kompilierung herunter, indem sie zu Abhängigkeiten erklärt werden.

Beispiel build.gradle – Abhängigkeiten
... dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile('org.springframework.boot:spring-boot-starter-test') compile('com.amazonaws:aws-java-sdk-dynamodb') compile("com.amazonaws:aws-xray-recorder-sdk-core") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk-instrumentor") ... } dependencyManagement { imports { mavenBom("com.amazonaws:aws-java-sdk-bom:1.11.67") mavenBom("com.amazonaws:aws-xray-recorder-sdk-bom:2.11.0") } }

Die Core-, AWS SDK- und AWS SDK-Instrumentor-Submodule sind alles, was erforderlich ist, um alle Downstream-Aufrufe, die mit dem AWS SDK getätigt werden, automatisch zu instrumentieren.

Um die Rohsegmentdaten an die X-Ray-API weiterzuleiten, muss der X-Ray-Daemon auf Datenverkehr auf UDP-Port 2000 achten. Dazu wird der X-Ray-Daemon in einem Container ausgeführt, der zusammen mit der Scorekeep-Anwendung auf ECS als Sidecar-Container bereitgestellt wird. Weitere Informationen finden Sie im Thema X-Ray-Daemon.

Beispiel X-Ray-Daemon-Containerdefinition in einer ECS-Aufgabendefinition
... Resources: ScorekeepTaskDefinition: Type: AWS::ECS::TaskDefinition Properties: ContainerDefinitions: ... - Cpu: '256' Essential: true Image: amazon/aws-xray-daemon MemoryReservation: '128' Name: xray-daemon PortMappings: - ContainerPort: '2000' HostPort: '2000' Protocol: udp ...

Das X-Ray SDK for Java bietet eine Klasse mit dem Namen AWSXRay, die den globalen Recorder bereitstellt, einen TracingHandler , mit dem Sie Ihren Code instrumentieren können. Sie können die globale Aufzeichnung so konfigurieren, dass der AWSXRayServletFilter, der Segmente für eingehende HTTP-Aufrufe erstellt, angepasst wird. Das Beispiel enthält einen statischen Block in der WebConfig-Klasse, der die globale Aufzeichnung mit Plugins und Samplingregeln konfiguriert.

Beispiel src/main/java/scorekeep/WebConfig.java – Recorder
import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.AWSXRayRecorderBuilder; import com.amazonaws.xray.javax.servlet.AWSXRayServletFilter; import com.amazonaws.xray.plugins.ECSPlugin; import com.amazonaws.xray.plugins.EC2Plugin; import com.amazonaws.xray.strategy.sampling.LocalizedSamplingStrategy; ... @Configuration public class WebConfig { ... static { AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard().withPlugin(new ECSPlugin()).withPlugin(new EC2Plugin()); URL ruleFile = WebConfig.class.getResource("/sampling-rules.json"); builder.withSamplingStrategy(new LocalizedSamplingStrategy(ruleFile)); AWSXRay.setGlobalRecorder(builder.build()); ... } }

In diesem Beispiel wird der Builder zum Laden von Samplingregeln aus einer Datei namens sampling-rules.json verwendet. Samplingregeln bestimmen die Rate, mit der das SDK Segmente für eingehende Anforderungen aufzeichnet.

Beispiel src/main/java/resources/sampling-rules.json
{ "version": 1, "rules": [ { "description": "Resource creation.", "service_name": "*", "http_method": "POST", "url_path": "/api/*", "fixed_target": 1, "rate": 1.0 }, { "description": "Session polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/session/*", "fixed_target": 0, "rate": 0.05 }, { "description": "Game polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/game/*/*", "fixed_target": 0, "rate": 0.05 }, { "description": "State polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/state/*/*/*", "fixed_target": 0, "rate": 0.05 } ], "default": { "fixed_target": 1, "rate": 0.1 } }

Die Samplingregeldatei definiert vier benutzerdefinierte Samplingregeln und die Standardregel. Für jede eingehende Anforderung wertet das SDK die benutzerdefinierten Regeln in der Reihenfolge aus, in der sie definiert sind. Das SDK wendet die erste Regel an, die der Methode, dem Pfad und dem Service-Namen der Anforderung entspricht. Bei Scorekeep fängt die erste Regel alle POST-Anforderungen (Aufrufe zum Erstellen von Ressourcen) ab, indem pro Sekunde ein festes Ziel einer einzelnen Anfrage und eine Rate von 1.0 angewendet wird bzw. 100 % der Anforderungen nach dem festen Ziel erfüllt sind.

Die übrigen drei benutzerdefinierte Regeln wenden eine Rate von fünf Prozent ohne festes Ziel auf Sitzungs-, Spiel- und Statuslesevorgänge (GET-Anfragen) an. Dies minimiert die Anzahl der Ablaufverfolgungen für regelmäßige Aufrufe, die das Front-End automatisch alle paar Sekunden ausführt, um sicherzustellen, dass die Inhalte auf dem neuesten Stand sind. Für alle übrigen Anforderungen definiert die Datei eine Standardrate von einer einzelnen Anfrage pro Sekunde und einer Rate von 10 Prozent.

Die Beispielanwendung zeigt auch, wie Sie erweiterte Funktionen wie die manuelle SDK-Client-Instrumentierung verwenden sowie zusätzliche Untersegmente und ausgehende HTTP-Aufrufe erstellen. Weitere Informationen finden Sie unter AWS X-Ray Beispielanwendung.

Optional: Richtlinie für geringste Rechte

Die Scorekeep-ECS-Container greifen mithilfe von Vollzugriffsrichtlinien wie AmazonSNSFullAccess und auf Ressourcen zuAmazonDynamoDBFullAccess. Die Verwendung von Vollzugriffsrichtlinien ist keine bewährte Methode für Produktionsanwendungen. Im folgenden Beispiel wird die DynamoDB-IAM-Richtlinie aktualisiert, um die Sicherheit der Anwendung zu verbessern. Weitere Informationen zu bewährten Sicherheitsmethoden in IAM-Richtlinien finden Sie unter Identity and Access Management für AWS X-Ray.

Beispiel ECS-TaskRole Definition für cf-resources.yaml-Vorlage
ECSTaskRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ecs-tasks.amazonaws.com" Action: - "sts:AssumeRole" ManagedPolicyArns: - "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess" - "arn:aws:iam::aws:policy/AmazonSNSFullAccess" - "arn:aws:iam::aws:policy/AWSXrayFullAccess" RoleName: "scorekeepRole"

Um Ihre Richtlinie zu aktualisieren, identifizieren Sie zunächst den ARN Ihrer DynamoDB-Ressourcen. Anschließend verwenden Sie den ARN in einer benutzerdefinierten IAM-Richtlinie. Schließlich wenden Sie diese Richtlinie auf Ihr Instance-Profil an.

So identifizieren Sie den ARN Ihrer DynamoDB-Ressource:
  1. Öffnen Sie die DynamoDB-Konsole.

  2. Wählen Sie in der linken Navigationsleiste Tabellen aus.

  3. Wählen Sie eine der ausscorekeep-*, um die Tabellendetailseite anzuzeigen.

  4. Wählen Sie auf der Registerkarte Übersicht die Option Zusätzliche Informationen aus, um den Abschnitt zu erweitern und den Amazon-Ressourcennamen (ARN) anzuzeigen. Kopieren Sie diesen Wert.

  5. Fügen Sie den ARN in die folgende IAM-Richtlinie ein und ersetzen Sie die AWS_ACCOUNT_ID Werte AWS_REGION und durch Ihre spezifische Region und Konto-ID. Diese neue Richtlinie erlaubt nur die angegebenen Aktionen anstelle der AmazonDynamoDBFullAccess Richtlinie, die jede Aktion zulässt.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ScorekeepDynamoDB", "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:Query" ], "Resource": "arn:aws:dynamodb:<AWS_REGION>:<AWS_ACCOUNT_ID>:table/scorekeep-*" } ] }

    Die Tabellen, die über die Anwendung erstellt werden, folgen einer einheitlichen Namenskonvention. Sie können das scorekeep-* Format verwenden, um alle Scorekeep-Tabellen anzugeben.

Ändern Ihrer IAM-Richtlinie
  1. Öffnen Sie die Scorekeep-Aufgabenrolle (scorekeepRole) in der IAM-Konsole.

  2. Aktivieren Sie das Kontrollkästchen neben der AmazonDynamoDBFullAccess Richtlinie und wählen Sie Entfernen, um diese Richtlinie zu entfernen.

  3. Wählen Sie Berechtigungen hinzufügen und dann Richtlinien anfügen und schließlich Richtlinie erstellen aus.

  4. Wählen Sie die Registerkarte JSON und fügen Sie die oben erstellte Richtlinie ein.

  5. Wählen Sie unten auf der Seite Weiter: Tags aus.

  6. Wählen Sie unten auf der Seite Weiter: Überprüfen aus.

  7. Weisen Sie für Name einen Namen für die Richtlinie zu.

  8. Wählen Sie unten auf der Seite Richtlinie erstellen aus.

  9. Fügen Sie die neu erstellte Richtlinie an die scorekeepRole Rolle an. Es kann einige Minuten dauern, bis die angehängte Richtlinie wirksam wird.

Wenn Sie die neue Richtlinie an die scorekeepRole Rolle angehängt haben, müssen Sie sie vor dem Löschen des CloudFormation Stacks trennen, da diese angehängte Richtlinie das Löschen des Stacks verhindert. Die Richtlinie kann durch Löschen der Richtlinie automatisch getrennt werden.

Entfernen Ihrer benutzerdefinierten IAM-Richtlinie
  1. Öffnen Sie die IAM-Konsole.

  2. Wählen Sie in der linken Navigationsleiste Richtlinien aus.

  3. Suchen Sie nach dem benutzerdefinierten Richtliniennamen, den Sie zuvor in diesem Abschnitt erstellt haben, und wählen Sie das Optionsfeld neben dem Richtliniennamen aus, um ihn hervorzuheben.

  4. Wählen Sie das Dropdown-Menü Aktionen und dann Löschen aus.

  5. Geben Sie den Namen der benutzerdefinierten Richtlinie ein und wählen Sie dann Löschen, um das Löschen zu bestätigen. Dadurch wird die Richtlinie automatisch von der scorekeepRole Rolle getrennt.

Bereinigen

Gehen Sie wie folgt vor, um die Ressourcen der Scorekeep-Anwendung zu löschen:

Anmerkung

Wenn Sie benutzerdefinierte Richtlinien im vorherigen Abschnitt dieses Tutorials erstellt und angehängt haben, müssen Sie die Richtlinie aus dem entfernen, scorekeepRole bevor Sie den CloudFormation Stack löschen.

AWS Management Console
Löschen der Beispielanwendung mithilfe der AWS Management Console
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie das Optionsfeld neben dem scorekeepStack-Namen in der Liste und dann Löschen aus.

  3. Der CloudFormation Stack wird jetzt gelöscht. Der Stack-Status lautet DELETE_IN_PROGRESS einige Minuten, bis alle Ressourcen gelöscht werden. Der Status wird regelmäßig aktualisiert, oder Sie können die Seite aktualisieren.

AWS CLI
Löschen der Beispielanwendung mithilfe der AWS CLI
  1. Geben Sie den folgenden AWS CLI Befehl ein, um den CloudFormation Stack zu löschen:

    aws cloudformation delete-stack --stack-name scorekeep
  2. Warten Sie, bis der CloudFormation Stack nicht mehr existiert, was etwa fünf Minuten dauert. Verwenden Sie den folgenden AWS CLI Befehl, um den Status zu überprüfen:

    aws cloudformation describe-stacks --stack-name scorekeep --query "Stacks[0].StackStatus"

Nächste Schritte

Weitere Informationen zu X-Ray finden Sie im nächsten Kapitel, AWS X-Ray Konzepte.

Um Ihre eigene App zu instrumentieren, erfahren Sie mehr über das X-Ray SDK for Java oder eines der anderen X-Ray SDKs:

Informationen zum lokalen Ausführen des X-Ray-Daemons oder auf AWS finden Sie unter AWS X-Ray Daemon.

Informationen zum Beitrag zur Beispielanwendung in GitHubfinden Sie unter eb-java-scorekeep.