Adding X-Ray Sidecar to ProductsServices Task Definition

Adding an X-Ray Sidecar Container to ProductsServices Task Definition

  1. Open the FCJ2024_SDK project and navigate to the ProductsServiceStack.java file.

    Architect

  2. Add environment variables for X-Ray as follows:

   envVariables.put("AWS_XRAY_DAEMON_ADDRESS", "0.0.0.0:2000");
   envVariables.put("AWS_XRAY_CONTEXT_MISSING", "IGNORE_ERROR");
   envVariables.put("AWS_XRAY_TRACING_NAME", "productsservice");

Architect

  1. In the fargateTaskDefinition.addContainer section, add CPU as 348 and memory as 896
.cpu(384)
.memoryLimitMiB(896)

Architect

  1. Next, add a sidecar container (X-Ray) to the ProductsServices task definition as follows:
fargateTaskDefinition.addContainer("xray", ContainerDefinitionOptions.builder()
                        .image(ContainerImage.fromRegistry("public.ecr.aws/xray/aws-xray-daemon:latest"))
                        .containerName("XRayProductsService")
                        .logging(new AwsLogDriver(AwsLogDriverProps.builder()
                                .logGroup(new LogGroup(this, "XRayLogGroup", LogGroupProps.builder()
                                        .logGroupName("XRayProductsService")
                                        .removalPolicy(RemovalPolicy.DESTROY)
                                        .retention(RetentionDays.ONE_MONTH)
                                        .build()))
                                .streamPrefix("XRayProductsService")
                                .build()))
                        .portMappings(Collections.singletonList(PortMapping.builder()
                                        .containerPort(2000)
                                        .protocol(Protocol.UDP)
                                .build()))
                        .cpu(128)
                        .memoryLimitMiB(128)
                .build());

Architect

  1. Cấp quyền để cho phép các containers trong task có khả năng gửi dữ liệu đến AWS X-Ray mà không cần quyền đọc hoặc quản lý các tài nguyên X-Ray. Điều này giúp việc theo dõi và phân tích hiệu suất của ứng dụng được thực hiện một cách an toàn và hiệu quả.
fargateTaskDefinition.getTaskRole().addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName("AWSXrayWriteOnlyAccess"));

Architect