View a markdown version of this page

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

Anmerkung

X-Ray SDK/Daemon Wartungshinweis — Am 25. Februar 2026 wechselt das Gerät in den AWS X-Ray SDKs/Daemon Wartungsmodus, in dem die X-Ray SDK- und Daemon-Versionen begrenzt AWS werden, um ausschließlich Sicherheitsprobleme zu beheben. Weitere Informationen zum Zeitplan für den Support finden Sie unter. Zeitplan für die Support von X-Ray SDK und Daemon Wir empfehlen die Migration zu OpenTelemetry. Weitere Informationen zur Migration zu OpenTelemetry finden Sie unter Migration von X-Ray Instrumentierung zu OpenTelemetry Instrumentierung.

In diesem Tutorial wird der xray-gettingstarted Zweig der Scorekeep-Beispielanwendung verwendet, mit dem die Ressourcen erstellt und konfiguriert werden, CloudFormation auf denen die Beispielanwendung und der X-Ray Daemon auf Amazon ECS ausgeführt werden. Die Anwendung verwendet das Spring-Framework, um eine JSON-Web-API zu implementieren und Daten in Amazon AWS SDK für Java DynamoDB zu speichern. Ein Servlet-Filter in der Anwendung instrumentiert alle eingehenden Anfragen, die von der Anwendung bedient werden, und ein Request-Handler auf dem AWS SDK-Client steuert Downstream-Aufrufe an DynamoDB.

Sie können diesem Tutorial folgen, indem Sie entweder den oder den AWS-Managementkonsole verwenden. AWS CLI

Voraussetzungen

In diesem Tutorial werden CloudFormation die Ressourcen erstellt und konfiguriert, auf denen die Beispielanwendung und der X-Ray Daemon ausgeführt werden. Für die Installation und Ausführung des Tutorials sind die folgenden Voraussetzungen erforderlich:

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

    • AWSCloudFormationFullAccess— um darauf zuzugreifen und sie zu verwenden CloudFormation

    • AmazonS3FullAccess— um eine Vorlagendatei hochzuladen und das zu CloudFormation verwenden AWS-Managementkonsole

    • IAMFullAccess— um die Amazon ECS- und Amazon EC2-Instance-Rollen zu erstellen

    • AmazonEC2FullAccess— um die Amazon EC2-Ressourcen zu erstellen

    • AmazonDynamoDBFullAccess— um die DynamoDB-Tabellen zu erstellen

    • AmazonECS_FullAccess— um Amazon ECS-Ressourcen zu erstellen

    • AmazonSNSFullAccess— um das Amazon SNS-Thema zu erstellen

    • AWSXrayReadOnlyAccess— für die Erlaubnis, die Trace-Map und die Traces in der X-Ray Konsole ansehen zu dürfen

  2. Um das Tutorial mit dem durchzuspielen 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 eine Region nicht konfiguriert ist, müssen Sie sie --region AWS-REGION an jeden CLI-Befehl anhängen.

  3. Stellen Sie sicher, dass Git installiert ist, um das Repo der Beispielanwendung 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 Sie die Scorekeep-Anwendung mit CloudFormation

AWS-Managementkonsole
Installieren Sie die Beispielanwendung mit dem AWS-Managementkonsole
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie Stapel erstellen und dann im Dropdownmenü die Option 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ähle Datei auswählen aus, navigiere zu dem xray-scorekeep/cloudformation Ordner, der beim Klonen des Git-Repos erstellt wurde, und wähle die cf-resources.yaml Datei aus.

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

  6. Geben Sie den Text scorekeep in das Textfeld Stack-Name ein und wählen Sie dann unten auf der Seite Weiter, um fortzufahren. Beachten Sie, dass im Rest dieses Tutorials davon ausgegangen wird, dass der Stapel benannt scorekeep ist.

  7. Scrollen Sie auf der Seite „Stack-Optionen konfigurieren“ zum Ende und wählen Sie Weiter, um fortzufahren.

  8. Scrollen Sie auf der Seite „Überprüfen“ zum Ende, aktivieren Sie das Kontrollkästchen, um zu bestätigen, dass CloudFormation möglicherweise IAM-Ressourcen mit benutzerdefinierten Namen erstellt werden, und wählen Sie Stack erstellen aus.

  9. Der CloudFormation Stack wird jetzt erstellt. Der Stack-Status wird CREATE_IN_PROGRESS etwa fünf Minuten lang angezeigt, bevor er zu wechseltCREATE_COMPLETE. Der Status wird regelmäßig aktualisiert, oder Sie können die Seite aktualisieren.

AWS CLI
Installieren Sie die Beispielanwendung mit dem AWS CLI
  1. Navigieren Sie zu dem cloudformation Ordner des xray-scorekeep Repositorys, 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 SieCREATE_COMPLETE, bis der CloudFormation Stack-Status erreicht ist. Dies dauert etwa fünf Minuten. 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 Webanwendung, um Datenverkehr an die API zu generieren und Ablaufverfolgungsdaten an X-Ray zu senden. Rufen Sie zunächst die Web-App-URL mit dem AWS-Managementkonsole oder dem ab AWS CLI:

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

  2. Wählen Sie den scorekeep Stapel aus der Liste aus.

  3. Wählen Sie auf der scorekeep Stack-Seite den Tab Ausgaben und wählen Sie den LoadBalancerUrl URL-Link, um die Webanwendung zu öffnen.

AWS CLI
Suchen Sie die 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 sie in einem Browser, um die Scorekeep-Webanwendung anzuzeigen.

Verwenden Sie die Webanwendung, um Trace-Daten zu generieren
  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 Downstream-Aufrufe an DynamoDB, um Benutzer-, Sitzungs-, Spiel-, Zug- und Statusdaten zu lesen und zu schreiben.

Sehen Sie sich die Trace-Map in der AWS-Managementkonsole

Sie können die von der Beispielanwendung generierte Trace-Map und die von der Beispielanwendung generierten Spuren in den CloudWatch Konsolen X-Ray und sehen.

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

  2. Die Konsole zeigt eine Darstellung des Service-Graphen, der aus den von der Anwendung gesendeten Trace-Daten X-Ray generiert wird. Passen Sie bei Bedarf unbedingt den Zeitraum der Trace-Map an, um sicherzustellen, dass alle Traces seit dem ersten Start der Webanwendung angezeigt werden.

    X-Ray Zeitraum der Trace-Map

Die Trace-Map 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.

X-Ray Trace-Kartenseite für die Konsole
So finden Sie die Ursache des Fehlers
  1. Wählen Sie den Knoten mit dem Namen SNS. Das Fenster 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 Ausnahmeseite für das SNS-Subsegment zu öffnen.

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

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

  2. Die Konsole zeigt eine Darstellung des Service-Graphen, der aus den von der Anwendung gesendeten Trace-Daten X-Ray generiert wird. Passen Sie bei Bedarf unbedingt den Zeitraum der Trace-Map an, um sicherzustellen, dass alle Traces seit dem ersten Start der Webanwendung angezeigt werden.

    CloudWatch Zeitraum der Trace-Map

Die Trace-Map 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.

X-Ray Trace-Kartenseite für die Konsole
So finden Sie die Ursache des Fehlers
  1. Wählen Sie den Knoten mit dem Namen SNS. Das Fenster mit den SNS-Knotendetails wird unter der Karte angezeigt.

  2. Wählen Sie „Spuren anzeigen“, um die Seite „Traces“ aufzurufen.

  3. Fügen Sie das Ende der Seite hinzu und wählen Sie den Trace aus der Trace-Liste aus. 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-Subsegment unten in der Segmentzeitleiste aus und klicken Sie auf den Tab Ausnahmen für das SNS-Subsegment, um die Ausnahmedetails anzuzeigen.

    Sehen Sie sich den Tab Ausnahmen für das Amazon SNS-Subsegment an

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 werden wir das beheben.

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 Anruf schlägt derzeit fehl. Konfigurieren Sie eine Benachrichtigungs-E-Mail, um Benachrichtigungen zu aktivieren und die in der Trace-Map hervorgehobenen Fehler zu beheben.

AWS-Managementkonsole
Um Amazon SNS-Benachrichtigungen zu konfigurieren, verwenden Sie die AWS-Managementkonsole
  1. Öffnen Sie die CloudFormation-Konsole.

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

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

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

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

  6. Scrollen Sie zum Ende der Seite „Überprüfen“, aktivieren Sie das Kontrollkästchen, um zu bestätigen, dass CloudFormation möglicherweise IAM-Ressourcen mit benutzerdefinierten Namen erstellt werden, und wählen Sie Stack aktualisieren.

  7. Der CloudFormation Stack wird jetzt aktualisiert. Der Stack-Status wird UPDATE_IN_PROGRESS etwa fünf Minuten lang angezeigt, bevor er zu wechseltUPDATE_COMPLETE. Der Status wird regelmäßig aktualisiert, oder Sie können die Seite aktualisieren.

AWS CLI
Um Amazon SNS-Benachrichtigungen zu konfigurieren, verwenden Sie die 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 E-Mail-Parameter und ändern Sie ihn 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 cloudformation Sie den CloudFormation Stapel aus dem 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 SieUPDATE_COMPLETE, bis der CloudFormation Stack-Status angezeigt wird. Dies wird einige Minuten dauern. 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 Trace-Map, um sicherzustellen, dass 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 für Java konfiguriert ist. Wenn Sie die Anwendung mit der CloudFormation Vorlage bereitstellen, erstellt sie die DynamoDB-Tabellen, Amazon ECS-Cluster und andere Dienste, die für die Ausführung von Scorekeep auf ECS erforderlich sind. Eine Aufgabendefinitionsdatei für ECS wird mit erstellt. CloudFormation Diese Datei definiert die Container-Images, die pro Aufgabe in einem ECS-Cluster verwendet werden. Diese Bilder stammen aus der offiziellen X-Ray öffentlichen ECR. Für das Scorekeep-API-Container-Image wurde die API mit Gradle kompiliert. Das Container-Image des Scorekeep-Frontend-Containers dient dem Frontend mithilfe des Nginx-Proxyservers. Dieser Server leitet Anfragen über Pfade, die mit /api beginnen, an die API weiter.

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 durch. AWS SDK für Java Um diese Aufrufe zu instrumentieren, verwendet die Anwendung einfach die AWS SDK-related Submodule als Abhängigkeiten, und das X-Ray SDK für Java instrumentiert automatisch alle AWS SDK-Clients.

Die Anwendung verwendetDocker, um den Quellcode auf der Instanz mit der Gradle Docker Image und der Scorekeep API Dockerfile Datei zu erstellen, um die ausführbare JAR auszuführen, die Gradle auf ihrer Seite generiert. ENTRYPOINT

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 ENTRYPOINT
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 Submodule Core, AWS SDK und AWS SDK Instrumentor sind alles, was benötigt wird, um alle Downstream-Aufrufe, die mit dem SDK getätigt werden, automatisch zu instrumentieren. AWS

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

Beispiel X-Ray Daemon-Container-Definition 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 für Java stellt eine Klasse mit dem Namen bereitAWSXRay, die den globalen Recorder bereitstellt, mit dem Sie Ihren Code instrumentieren können. TracingHandler 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 - Rekorder
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 Beispielapplikation.

Optional: Richtlinie für geringste Rechte

Die Scorekeep-ECS-Container greifen mithilfe von Vollzugriffsrichtlinien wie und auf Ressourcen zu. AmazonSNSFullAccess AmazonDynamoDBFullAccess Die Verwendung von Vollzugriffsrichtlinien ist nicht die beste Methode für Produktionsanwendungen. Im folgenden Beispiel wird die DynamoDB-IAM-Richtlinie aktualisiert, um die Sicherheit der Anwendung zu verbessern. Weitere Informationen zu den bewährten Sicherheitsmethoden in IAM-Richtlinien finden Sie unter Identitäts- und Zugriffsmanagement für. AWS X-Ray

Beispiel cf-resources.yaml-Vorlagendefinition ECSTaskRole
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 Instanzprofil 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 Optionen 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 und nicht die AmazonDynamoDBFullAccess Richtlinie, die alle Aktionen zulässt.

    Beispiel
    JSON
    { "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:us-east-1:111122223333: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 Sie Ihre IAM-Richtlinie
  1. Öffnen Sie die Aufgabenrolle Scorekeep (Scorekeeprole) in der IAM-Konsole.

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

  3. Wählen Sie Berechtigungen hinzufügen, dann Richtlinien anhängen 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. Geben Sie unter Name einen Namen für die Richtlinie ein.

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

  9. Hängen 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 trennen, bevor Sie den CloudFormation Stapel löschen, da diese angefügte Richtlinie das Löschen des Stacks verhindert. Die Richtlinie kann automatisch getrennt werden, indem Sie die Richtlinie löschen.

Entfernen Sie Ihre benutzerdefinierte 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, um ihn hervorzuheben.

  4. Wählen Sie das Dropdownmenü „Aktionen“ und dann „Löschen“.

  5. Geben Sie den Namen der benutzerdefinierten Richtlinie ein und wählen Sie dann Löschen, um den Löschvorgang 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 mithilfe des vorherigen Abschnitts dieses Tutorials benutzerdefinierte Richtlinien erstellt und angehängt haben, müssen Sie die Richtlinie aus dem entfernen, scorekeepRole bevor Sie den CloudFormation Stapel löschen.

AWS-Managementkonsole
Löschen Sie die Beispielanwendung mit dem AWS-Managementkonsole
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie das Optionsfeld neben dem scorekeep Stacknamen in der Liste aus, und wählen Sie dann Löschen aus.

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

AWS CLI
Löschen Sie die Beispielanwendung mit dem AWS CLI
  1. Geben Sie den folgenden AWS CLI Befehl ein, um den CloudFormation Stapel zu löschen:

    aws cloudformation delete-stack --stack-name scorekeep
  2. Warten Sie, bis der CloudFormation Stapel nicht mehr existiert. Dies dauert etwa fünf Minuten. 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

Erfahren Sie mehr darüber X-Ray im nächsten Kapitel,AWS X-Ray Konzepte.

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

Informationen zum lokalen oder lokalen Ausführen des X-Ray Daemons finden Sie AWS unterAWS X-Ray Dämon.

Um zur Beispielanwendung beizutragen, siehe GitHub https://github.com/awslabs/eb-java-scorekeep/tree/xray-gettingstarted eb-java-scorekeep.