

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menginstrumentasi kode Python di AWS Lambda
<a name="python-tracing"></a>

Lambda terintegrasi dengan AWS X-Ray untuk membantu Anda melacak, men-debug, dan mengoptimalkan aplikasi Lambda. Anda dapat menggunakan X-Ray untuk melacak permintaan saat melintasi sumber daya dalam aplikasi Anda, yang mungkin termasuk fungsi Lambda dan layanan lainnya. AWS 

Untuk mengirim data penelusuran ke X-Ray, Anda dapat menggunakan salah satu dari tiga pustaka SDK:
+ [AWS Distro for OpenTelemetry (ADOT)](https://aws.amazon.com/otel) — Distribusi SDK () yang aman, siap produksi, dan AWS didukung. OpenTelemetry OTel
+ [AWS X-Ray SDK for Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html)SDK untuk menghasilkan dan mengirim data jejak ke X-Ray.
+ [Powertools for AWS Lambda (Python](https://docs.aws.amazon.com/powertools/python/latest/)) - Toolkit pengembang untuk menerapkan praktik terbaik Tanpa Server dan meningkatkan kecepatan pengembang.

Masing-masing SDKs menawarkan cara untuk mengirim data telemetri Anda ke layanan X-Ray. Anda kemudian dapat menggunakan X-Ray untuk melihat, memfilter, dan mendapatkan wawasan tentang metrik kinerja aplikasi Anda untuk mengidentifikasi masalah dan peluang pengoptimalan.

**penting**  
X-Ray dan Powertools untuk AWS Lambda SDKs adalah bagian dari solusi instrumentasi terintegrasi yang ditawarkan oleh. AWS Lapisan Lambda ADOT adalah bagian dari standar industri untuk melacak instrumentasi yang mengumpulkan lebih banyak data secara umum, tetapi mungkin tidak cocok untuk semua kasus penggunaan. Anda dapat menerapkan end-to-end penelusuran di X-Ray menggunakan salah satu solusi. Untuk mempelajari lebih lanjut tentang memilih di antara mereka, lihat [Memilih antara AWS Distro untuk Telemetri Terbuka dan](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html#xray-instrumenting-choosing) X-Ray. SDKs

**Topics**
+ [Menggunakan Powertools untuk AWS Lambda (Python) AWS SAM dan untuk melacak](#python-tracing-sam)
+ [Menggunakan Powertools untuk AWS Lambda (Python) dan AWS CDK untuk melacak](#python-logging-cdk)
+ [Menggunakan ADOT untuk instrumen fungsi Python Anda](#python-adot)
+ [Menggunakan X-Ray SDK untuk instrumen fungsi Python Anda](#python-xray-sdk)
+ [Mengaktifkan penelusuran dengan konsol Lambda](#python-tracing-console)
+ [Mengaktifkan penelusuran dengan Lambda API](#python-tracing-api)
+ [Mengaktifkan penelusuran dengan CloudFormation](#python-tracing-cloudformation)
+ [Menafsirkan jejak X-Ray](#python-tracing-interpretation)
+ [Menyimpan dependensi runtime dalam lapisan (X-Ray SDK)](#python-tracing-layers)

## Menggunakan Powertools untuk AWS Lambda (Python) AWS SAM dan untuk melacak
<a name="python-tracing-sam"></a>

Ikuti langkah-langkah di bawah ini untuk mengunduh, membangun, dan menyebarkan contoh aplikasi Hello World Python dengan [Powertools terintegrasi untuk modul AWS Lambda (Python](https://docs.powertools.aws.dev/lambda-python)) menggunakan modul. AWS SAM Aplikasi ini mengimplementasikan backend API dasar dan menggunakan Powertools untuk memancarkan log, metrik, dan jejak. Ini terdiri dari titik akhir Amazon API Gateway dan fungsi Lambda. Saat Anda mengirim permintaan GET ke titik akhir API Gateway, fungsi Lambda memanggil, mengirim log dan metrik menggunakan Format Metrik Tertanam CloudWatch ke, dan mengirimkan jejak ke. AWS X-Ray Fungsi mengembalikan pesan hello world.

**Prasyarat**

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:
+ Python 3.11
+ [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [AWS SAM CLI versi 1.75](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) atau yang lebih baru. Jika Anda memiliki versi CLI yang lebih lama, lihat [Memutakhirkan AWS SAM CLI. AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade)

**Menyebarkan aplikasi sampel AWS SAM**

1. Inisialisasi aplikasi menggunakan template Hello World Python.

   ```
   sam init --app-template hello-world-powertools-python --name sam-app --package-type Zip --runtime python3.11 --no-tracing
   ```

1. Bangun aplikasi.

   ```
   cd sam-app && sam build
   ```

1. Terapkan aplikasi.

   ```
   sam deploy --guided
   ```

1. Ikuti petunjuk di layar. Untuk menerima opsi default yang disediakan dalam pengalaman interaktif, tekan`Enter`.
**catatan**  
Karena **HelloWorldFunction mungkin tidak memiliki otorisasi yang ditentukan, Apakah ini baik-baik saja?** , pastikan untuk masuk`y`.

1. Dapatkan URL aplikasi yang digunakan:

   ```
   aws cloudformation describe-stacks --stack-name sam-app --query 'Stacks[0].Outputs[?OutputKey==`HelloWorldApi`].OutputValue' --output text
   ```

1. Memanggil titik akhir API:

   ```
   curl -X GET <URL_FROM_PREVIOUS_STEP>
   ```

   Jika berhasil, Anda akan melihat tanggapan ini:

   ```
   {"message":"hello world"}
   ```

1. Untuk mendapatkan jejak untuk fungsi tersebut, jalankan [jejak sam](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-traces.html).

   ```
   sam traces
   ```

   Output jejak terlihat seperti ini:

   ```
   New XRay Service Graph
     Start time: 2023-02-03 14:59:50+00:00
     End time: 2023-02-03 14:59:50+00:00
     Reference Id: 0 - (Root) AWS::Lambda - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [1]
      Summary_statistics:
        - total requests: 1
        - ok count(2XX): 1
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0.924
     Reference Id: 1 - AWS::Lambda::Function - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: []
      Summary_statistics:
        - total requests: 1
        - ok count(2XX): 1
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0.016
     Reference Id: 2 - client - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [0]
      Summary_statistics:
        - total requests: 0
        - ok count(2XX): 0
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0
   
   XRay Event [revision 1] at (2023-02-03T14:59:50.204000) with id (1-63dd2166-434a12c22e1307ff2114f299) and duration (0.924s)
    - 0.924s - sam-app-HelloWorldFunction-YBg8yfYtOc9j [HTTP: 200]
    - 0.016s - sam-app-HelloWorldFunction-YBg8yfYtOc9j
      - 0.739s - Initialization
      - 0.016s - Invocation
        - 0.013s - ## lambda_handler
          - 0.000s - ## app.hello
      - 0.000s - Overhead
   ```

1. Ini adalah titik akhir API publik yang dapat diakses melalui internet. Kami menyarankan Anda menghapus titik akhir setelah pengujian.

   ```
   sam delete
   ```

X-Ray tidak melacak semua permintaan ke aplikasi Anda. X-Ray menerapkan algoritma pengambilan sampel untuk memastikan bahwa penelusuran efisien, sambil tetap memberikan sampel yang representatif dari semua permintaan. Tingkat pengambilan sampel adalah 1 permintaan per detik dan 5 persen dari permintaan tambahan. Anda tidak dapat mengonfigurasi laju pengambilan sampel X-Ray untuk fungsi Anda.

## Menggunakan Powertools untuk AWS Lambda (Python) dan AWS CDK untuk melacak
<a name="python-logging-cdk"></a>

Ikuti langkah-langkah di bawah ini untuk mengunduh, membangun, dan menyebarkan contoh aplikasi Hello World Python dengan [Powertools terintegrasi untuk modul AWS Lambda (Python](https://docs.powertools.aws.dev/lambda-python)) menggunakan modul. AWS CDK Aplikasi ini mengimplementasikan backend API dasar dan menggunakan Powertools untuk memancarkan log, metrik, dan jejak. Ini terdiri dari titik akhir Amazon API Gateway dan fungsi Lambda. Saat Anda mengirim permintaan GET ke titik akhir API Gateway, fungsi Lambda memanggil, mengirim log dan metrik menggunakan Format Metrik Tertanam CloudWatch ke, dan mengirimkan jejak ke. AWS X-Ray Fungsi mengembalikan pesan hello world.

**Prasyarat**

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki hal-hal berikut:
+ Python 3.11
+ [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ [AWS CDK versi 2](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_prerequisites)
+ [AWS SAM CLI versi 1.75](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html) atau yang lebih baru. Jika Anda memiliki versi CLI yang lebih lama, lihat [Memutakhirkan AWS SAM CLI. AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade)

**Menyebarkan aplikasi sampel AWS CDK**

1. Buat direktori proyek untuk aplikasi baru Anda.

   ```
   mkdir hello-world
   cd hello-world
   ```

1. Inisialisasi aplikasi.

   ```
   cdk init app --language python
   ```

1.  Instal dependensi Python.

   ```
   pip install -r requirements.txt
   ```

1. Buat direktori **lambda\$1function di bawah folder** root.

   ```
   mkdir lambda_function
   cd lambda_function
   ```

1. Buat file **app.py** dan tambahkan kode berikut ke file. Ini adalah kode untuk fungsi Lambda.

   ```
   from aws_lambda_powertools.event_handler import APIGatewayRestResolver
   from aws_lambda_powertools.utilities.typing import LambdaContext
   from aws_lambda_powertools.logging import correlation_paths
   from aws_lambda_powertools import Logger
   from aws_lambda_powertools import Tracer
   from aws_lambda_powertools import Metrics
   from aws_lambda_powertools.metrics import MetricUnit
   
   app = APIGatewayRestResolver()
   tracer = Tracer()
   logger = Logger()
   metrics = Metrics(namespace="PowertoolsSample")
   
   @app.get("/hello")
   @tracer.capture_method
   def hello():
       # adding custom metrics
       # See: https://docs.powertools.aws.dev/lambda-python/latest/core/metrics/
       metrics.add_metric(name="HelloWorldInvocations", unit=MetricUnit.Count, value=1)
   
       # structured log
       # See: https://docs.powertools.aws.dev/lambda-python/latest/core/logger/
       logger.info("Hello world API - HTTP 200")
       return {"message": "hello world"}
   
   # Enrich logging with contextual information from Lambda
   @logger.inject_lambda_context(correlation_id_path=correlation_paths.API_GATEWAY_REST)
   # Adding tracer
   # See: https://docs.powertools.aws.dev/lambda-python/latest/core/tracer/
   @tracer.capture_lambda_handler
   # ensures metrics are flushed upon request completion/failure and capturing ColdStart metric
   @metrics.log_metrics(capture_cold_start_metric=True)
   def lambda_handler(event: dict, context: LambdaContext) -> dict:
       return app.resolve(event, context)
   ```

1. Buka direktori **hello\$1world**. Anda akan melihat file bernama **hello\$1world\$1stack.py**.

   ```
   cd ..
   cd hello_world
   ```

1. Buka **hello\$1world\$1stack.py** dan tambahkan kode berikut ke file. Ini berisi [Konstruktor Lambda](https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_lambda.html), yang membuat fungsi Lambda, mengonfigurasi variabel lingkungan untuk Powertools dan menetapkan retensi log ke satu minggu, dan [Konstruktor ApiGatewayv 1](https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_apigateway.html), yang membuat REST API.

   ```
   from aws_cdk import (
       Stack,
       aws_apigateway as apigwv1,
       aws_lambda as lambda_,
       CfnOutput,
       Duration
   )
   from constructs import Construct
   
   class HelloWorldStack(Stack):
   
       def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
           super().__init__(scope, construct_id, **kwargs)
   
           # Powertools Lambda Layer
           powertools_layer = lambda_.LayerVersion.from_layer_version_arn(
               self,
               id="lambda-powertools",
               # At the moment we wrote this example, the aws_lambda_python_alpha CDK constructor is in Alpha, o we use layer to make the example simpler
               # See https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_lambda_python_alpha/README.html
               # Check all Powertools layers versions here: https://docs.powertools.aws.dev/lambda-python/latest/#lambda-layer
               layer_version_arn=f"arn:aws:lambda:{self.region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:21"
           )
   
           function = lambda_.Function(self,
               'sample-app-lambda',
               runtime=lambda_.Runtime.PYTHON_3_11,
               layers=[powertools_layer],
               code = lambda_.Code.from_asset("./lambda_function/"),
               handler="app.lambda_handler",
               memory_size=128,
               timeout=Duration.seconds(3),
               architecture=lambda_.Architecture.X86_64,
               environment={
                   "POWERTOOLS_SERVICE_NAME": "PowertoolsHelloWorld",
                   "POWERTOOLS_METRICS_NAMESPACE": "PowertoolsSample",
                   "LOG_LEVEL": "INFO"
               }
           )
   
           apigw = apigwv1.RestApi(self, "PowertoolsAPI", deploy_options=apigwv1.StageOptions(stage_name="dev"))
   
           hello_api = apigw.root.add_resource("hello")
           hello_api.add_method("GET", apigwv1.LambdaIntegration(function, proxy=True))
   
           CfnOutput(self, "apiUrl", value=f"{apigw.url}hello")
   ```

1. Men-deploy aplikasi Anda.

   ```
   cd ..
   cdk deploy
   ```

1. Dapatkan URL aplikasi yang digunakan:

   ```
   aws cloudformation describe-stacks --stack-name HelloWorldStack --query 'Stacks[0].Outputs[?OutputKey==`apiUrl`].OutputValue' --output text
   ```

1. Memanggil titik akhir API:

   ```
   curl -X GET <URL_FROM_PREVIOUS_STEP>
   ```

   Jika berhasil, Anda akan melihat tanggapan ini:

   ```
   {"message":"hello world"}
   ```

1. Untuk mendapatkan jejak untuk fungsi tersebut, jalankan [jejak sam](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-traces.html).

   ```
   sam traces
   ```

   Output jejak terlihat seperti ini:

   ```
   New XRay Service Graph
     Start time: 2023-02-03 14:59:50+00:00
     End time: 2023-02-03 14:59:50+00:00
     Reference Id: 0 - (Root) AWS::Lambda - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [1]
      Summary_statistics:
        - total requests: 1
        - ok count(2XX): 1
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0.924
     Reference Id: 1 - AWS::Lambda::Function - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: []
      Summary_statistics:
        - total requests: 1
        - ok count(2XX): 1
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0.016
     Reference Id: 2 - client - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [0]
      Summary_statistics:
        - total requests: 0
        - ok count(2XX): 0
        - error count(4XX): 0
        - fault count(5XX): 0
        - total response time: 0
   
   XRay Event [revision 1] at (2023-02-03T14:59:50.204000) with id (1-63dd2166-434a12c22e1307ff2114f299) and duration (0.924s)
    - 0.924s - sam-app-HelloWorldFunction-YBg8yfYtOc9j [HTTP: 200]
    - 0.016s - sam-app-HelloWorldFunction-YBg8yfYtOc9j
      - 0.739s - Initialization
      - 0.016s - Invocation
        - 0.013s - ## lambda_handler
          - 0.000s - ## app.hello
      - 0.000s - Overhead
   ```

1. Ini adalah titik akhir API publik yang dapat diakses melalui internet. Kami menyarankan Anda menghapus titik akhir setelah pengujian.

   ```
   cdk destroy
   ```

## Menggunakan ADOT untuk instrumen fungsi Python Anda
<a name="python-adot"></a>

ADOT menyediakan lapisan [Lambda](chapter-layers.md) yang dikelola sepenuhnya yang mengemas semua yang Anda butuhkan untuk mengumpulkan data telemetri menggunakan SDK. OTel Dengan menggunakan lapisan ini, Anda dapat menginstruksikan fungsi Lambda Anda tanpa harus memodifikasi kode fungsi apa pun. Anda juga dapat mengonfigurasi lapisan Anda untuk melakukan inisialisasi kustom. OTel Untuk informasi selengkapnya, lihat [Konfigurasi khusus untuk Kolektor ADOT di Lambda](https://aws-otel.github.io/docs/getting-started/lambda#custom-configuration-for-the-adot-collector-on-lambda) dalam dokumentasi ADOT.

Untuk runtime Python, Anda dapat menambahkan **layer AWS Lambda terkelola untuk ADOT Python untuk** secara otomatis instrumen fungsi Anda. Lapisan ini berfungsi untuk arsitektur arm64 dan x86\$164. Untuk petunjuk rinci tentang cara menambahkan layer ini, lihat [AWS Distro untuk OpenTelemetry Lambda Support for](https://aws-otel.github.io/docs/getting-started/lambda/lambda-python) Python dalam dokumentasi ADOT.

## Menggunakan X-Ray SDK untuk instrumen fungsi Python Anda
<a name="python-xray-sdk"></a>

Untuk merekam detail tentang panggilan yang dilakukan oleh fungsi Lambda Anda ke sumber daya lain dalam aplikasi Anda, Anda juga dapat menggunakan. AWS X-Ray SDK for Python Untuk mendapatkan SDK, tambahkan paket `aws-xray-sdk` ke dependensi aplikasi Anda.

**Example [requirements.txt](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-python/function/requirements.txt)**  

```
jsonpickle==1.3
aws-xray-sdk==2.4.3
```

Dalam kode fungsi Anda, Anda dapat instrumen klien AWS SDK dengan menambal `boto3` perpustakaan dengan modul. `aws_xray_sdk.core`

**Example [fungsi — Menelusuri klien AWS SDK](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-python/function/lambda_function.py)**  

```
import boto3
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all

logger = logging.getLogger()
logger.setLevel(logging.INFO)
patch_all()

client = boto3.client('lambda')
client.get_account_settings()

def lambda_handler(event, context):
    logger.info('## ENVIRONMENT VARIABLES\r' + jsonpickle.encode(dict(**os.environ)))
  ...
```

Setelah Anda menambahkan dependensi yang benar dan membuat perubahan kode yang diperlukan, aktifkan penelusuran dalam konfigurasi fungsi Anda melalui konsol Lambda atau API.

## Mengaktifkan penelusuran dengan konsol Lambda
<a name="python-tracing-console"></a>

Untuk mengaktifkan penelusuran aktif pada fungsi Lambda Anda dengan konsol, ikuti langkah-langkah berikut:

**Untuk mengaktifkan penelusuran aktif**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pilih **Konfigurasi** dan kemudian pilih **Alat Pemantauan dan operasi**.

1. Di bawah **Alat pemantauan tambahan**, pilih **Edit**.

1. Di bawah **Sinyal CloudWatch Aplikasi dan AWS X-Ray**, pilih **Aktifkan** untuk **jejak layanan Lambda**.

1. Pilih **Simpan**.

## Mengaktifkan penelusuran dengan Lambda API
<a name="python-tracing-api"></a>

Konfigurasikan penelusuran pada fungsi Lambda Anda dengan AWS CLI AWS atau SDK, gunakan operasi API berikut:
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html)
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)

Contoh AWS CLI perintah berikut memungkinkan penelusuran aktif pada fungsi bernama **my-function**.

```
aws lambda update-function-configuration --function-name my-function \
--tracing-config Mode=Active
```

Mode penelusuran adalah bagian dari konfigurasi khusus versi saat Anda mempublikasikan versi fungsi Anda. Anda tidak dapat mengubah mode pelacakan pada versi yang telah diterbitkan.

## Mengaktifkan penelusuran dengan CloudFormation
<a name="python-tracing-cloudformation"></a>

Untuk mengaktifkan penelusuran pada `AWS::Lambda::Function` sumber daya dalam CloudFormation templat, gunakan `TracingConfig` properti.

**Example [function-inline.yml](https://github.com/awsdocs/aws-lambda-developer-guide/blob/master/templates/function-inline.yml) – Konfigurasi pelacakan**  

```
Resources:
  function:
    Type: [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)
    Properties:
      TracingConfig:
        Mode: Active
      ...
```

Untuk sumber `AWS::Serverless::Function` daya AWS Serverless Application Model (AWS SAM), gunakan `Tracing` properti.

**Example [template.yml](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-nodejs/template.yml) – Konfigurasi pelacakan**  

```
Resources:
  function:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Tracing: Active
      ...
```

## Menafsirkan jejak X-Ray
<a name="python-tracing-interpretation"></a>

Fungsi Anda memerlukan izin untuk mengunggah data jejak ke X-Ray. [Saat Anda mengaktifkan penelusuran di konsol Lambda, Lambda menambahkan izin yang diperlukan ke peran eksekusi fungsi Anda.](lambda-intro-execution-role.md) Atau, tambahkan kebijakan [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess) ke peran eksekusi.

Setelah mengonfigurasi penelusuran aktif, Anda dapat mengamati permintaan tertentu melalui aplikasi Anda. [Grafik layanan X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html#xray-concepts-servicegraph) menunjukkan informasi tentang aplikasi Anda dan semua komponennya. Contoh berikut menunjukkan aplikasi dengan dua fungsi. Fungsi utama memproses kejadian dan terkadang mengembalikan kesalahan. Fungsi kedua di bagian atas memproses kesalahan yang muncul di grup log pertama dan menggunakan AWS SDK untuk memanggil X-Ray, Amazon Simple Storage Service (Amazon S3), dan Amazon Logs. CloudWatch 

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/sample-errorprocessor-servicemap.png)


X-Ray tidak melacak semua permintaan ke aplikasi Anda. X-Ray menerapkan algoritma pengambilan sampel untuk memastikan bahwa penelusuran efisien, sambil tetap memberikan sampel yang representatif dari semua permintaan. Tingkat pengambilan sampel adalah 1 permintaan per detik dan 5 persen dari permintaan tambahan. Anda tidak dapat mengonfigurasi laju pengambilan sampel X-Ray untuk fungsi Anda.

Di X-Ray, *jejak* merekam informasi tentang permintaan yang diproses oleh satu atau beberapa *layanan*. Lambda mencatat 2 segmen per jejak, yang menciptakan dua node pada grafik layanan. Gambar berikut menyoroti dua node ini:

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/xray-servicemap-function.png)


Node pertama di sebelah kiri mewakili layanan Lambda, yang menerima permintaan pemanggilan. Node kedua mewakili fungsi Lambda spesifik Anda. Contoh berikut menunjukkan jejak dengan dua segmen ini. Keduanya bernama **fungsi saya**, tetapi yang satu memiliki asal `AWS::Lambda` dan yang lainnya memiliki asal usul. `AWS::Lambda::Function` Jika `AWS::Lambda` segmen menunjukkan kesalahan, layanan Lambda mengalami masalah. Jika `AWS::Lambda::Function` segmen menunjukkan kesalahan, fungsi Anda mengalami masalah.

![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v1.png)


Contoh ini memperluas `AWS::Lambda::Function` segmen untuk menunjukkan tiga subsegmennya.

**catatan**  
AWS saat ini menerapkan perubahan pada layanan Lambda. Karena perubahan ini, Anda mungkin melihat perbedaan kecil antara struktur dan konten pesan log sistem dan segmen jejak yang dipancarkan oleh fungsi Lambda yang berbeda di Anda. Akun AWS  
Contoh jejak yang ditunjukkan di sini menggambarkan segmen fungsi gaya lama. Perbedaan antara segmen gaya lama dan baru dijelaskan dalam paragraf berikut.  
Perubahan ini akan diterapkan selama beberapa minggu mendatang, dan semua fungsi di semua Wilayah AWS kecuali China GovCloud dan wilayah akan bertransisi untuk menggunakan pesan log format baru dan segmen pelacakan.

Segmen fungsi gaya lama berisi subsegmen berikut:
+ **Inisialisasi** – Mewakili waktu yang dihabiskan untuk memuat fungsi dan menjalankan [kode inisialisasi](foundation-progmodel.md). Subsegmen ini hanya muncul untuk peristiwa pertama yang diproses oleh setiap instance fungsi Anda.
+ **Doa** - Merupakan waktu yang dihabiskan untuk menjalankan kode handler Anda.
+ **Overhead** - Merupakan waktu yang dihabiskan runtime Lambda untuk mempersiapkan diri untuk menangani acara berikutnya.

Segmen fungsi gaya baru tidak berisi subsegmen. `Invocation` Sebagai gantinya, subsegmen pelanggan dilampirkan langsung ke segmen fungsi. Untuk informasi lebih lanjut tentang struktur segmen fungsi gaya lama dan baru, lihat. [Memahami jejak X-Ray](services-xray.md#services-xray-traces)

Anda juga dapat melakukan instrumentasi klien HTTP, merekam kueri SQL, dan membuat subsegmen khusus dengan anotasi dan metadata. Untuk informasi selengkapnya, lihat [AWS X-Ray SDK for Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html)di *Panduan AWS X-Ray Pengembang*.

**Harga**  
Anda dapat menggunakan penelusuran X-Ray secara gratis setiap bulan hingga batas tertentu sebagai bagian dari Tingkat AWS Gratis. Di luar ambang batas itu, X-Ray mengenakan biaya untuk penyimpanan dan pengambilan jejak. Untuk informasi selengkapnya, lihat [harga AWS X-Ray](https://aws.amazon.com/xray/pricing/).

## Menyimpan dependensi runtime dalam lapisan (X-Ray SDK)
<a name="python-tracing-layers"></a>

Jika Anda menggunakan X-Ray SDK untuk menginstruksikan klien AWS SDK kode fungsi Anda, paket penerapan Anda bisa menjadi cukup besar. [Untuk menghindari mengunggah dependensi runtime setiap kali Anda memperbarui kode fungsi, paketkan X-Ray SDK di lapisan Lambda.](chapter-layers.md)

Contoh berikut menunjukkan `AWS::Serverless::LayerVersion` sumber daya yang menyimpan file AWS X-Ray SDK for Python.

**Example [template.yml](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-python/template.yml) – Lapisan dependensi**  

```
Resources:
  function:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      CodeUri: function/.
      Tracing: Active
      Layers:
        - !Ref libs
      ...
  libs:
    Type: [AWS::Serverless::LayerVersion](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-layerversion.html)
    Properties:
      LayerName: blank-python-lib
      Description: Dependencies for the blank-python sample app.
      ContentUri: package/.
      CompatibleRuntimes:
        - python3.11
```

Dengan konfigurasi ini, Anda memperbarui lapisan pustaka hanya jika Anda mengubah dependensi runtime Anda. Karena paket penerapan fungsi hanya berisi kode Anda, ini dapat membantu mengurangi waktu upload.

Membuat lapisan untuk dependensi memerlukan perubahan build untuk membuat arsip lapisan sebelum deployment. Untuk contoh pekerjaan, lihat aplikasi sampel [blank-python](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-python).