Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aktifkan aplikasi Anda di Lambda
Anda dapat mengaktifkan Sinyal Aplikasi untuk fungsi Lambda Anda. Sinyal Aplikasi secara otomatis menginstrumentasikan fungsi Lambda Anda menggunakan pustaka AWS Distro for OpenTelemetry (ADOT) yang disempurnakan, yang disediakan melalui lapisan Lambda. Lapisan AWS Lambda ini untuk OpenTelemetry paket dan menyebarkan pustaka yang diperlukan untuk instrumentasi otomatis untuk Sinyal Aplikasi.
Selain mendukung Sinyal Aplikasi, lapisan Lambda ini juga merupakan komponen OpenTelemetry dukungan Lambda dan menyediakan fungsionalitas penelusuran.
Anda juga dapat meningkatkan observabilitas Lambda dengan menggunakan pencarian transaksi, yang memungkinkan penangkapan rentang jejak untuk pemanggilan fungsi Lambda tanpa pengambilan sampel. Fitur ini memungkinkan Anda untuk mengumpulkan rentang untuk fungsi Anda, tidak terpengaruh oleh sampled bendera dalam propagasi konteks jejak. Ini memastikan bahwa tidak ada dampak tambahan pada layanan yang bergantung pada hilir. Dengan mengaktifkan pencarian transaksi di Lambda, Anda mendapatkan visibilitas lengkap ke kinerja fungsi Anda dan Anda dapat memecahkan masalah yang jarang terjadi. Untuk memulai, lihat Pencarian Transaksi
Memulai
Ada tiga metode untuk mengaktifkan Sinyal Aplikasi untuk fungsi Lambda Anda.
Setelah Anda mengaktifkan Sinyal Aplikasi untuk fungsi Lambda, dibutuhkan beberapa menit agar telemetri dari fungsi tersebut muncul di konsol Sinyal Aplikasi.
Masing-masing metode ini menambahkan Layer AWS Lambda OpenTelemetry untuk fungsi Anda.
Gunakan konsol Sinyal CloudWatch Aplikasi
Gunakan langkah-langkah ini untuk menggunakan konsol Sinyal Aplikasi untuk mengaktifkan Sinyal Aplikasi untuk fungsi Lambda.
Gunakan konsol Lambda
Gunakan langkah-langkah ini untuk menggunakan konsol Lambda untuk mengaktifkan Sinyal Aplikasi untuk fungsi Lambda.
Buka AWS Lambda konsol di https://console.aws.amazon.com/lambda/.
-
Di panel navigasi, pilih Fungsi dan kemudian pilih nama fungsi yang ingin Anda aktifkan.
-
Pilih tab Konfigurasi, lalu pilih Alat pemantauan dan operasi.
-
Pilih Edit.
-
Di bagian Sinyal CloudWatch Aplikasi dan X-Ray, pilih keduanya Secara otomatis mengumpulkan jejak aplikasi dan metrik aplikasi standar dengan Sinyal Aplikasi dan secara otomatis mengumpulkan jejak layanan Lambda untuk visibilitas ujung ke ujung dengan X-Ray. .
-
Pilih Simpan.
Aktifkan Sinyal Aplikasi di Lambda menggunakan AWS CDK
Jika Anda belum mengaktifkan Sinyal Aplikasi di akun ini, Anda harus memberikan izin yang diperlukan Sinyal Aplikasi untuk menemukan layanan Anda. Untuk informasi selengkapnya, lihat Aktifkan Sinyal Aplikasi di akun Anda.
-
Aktifkan Sinyal Aplikasi untuk aplikasi Anda
import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib';
const cfnDiscovery = new applicationsignals.CfnDiscovery(this,
'ApplicationSignalsServiceRole', { }
);
CloudFormation Sumber daya Discovery memberikan izin berikut kepada Sinyal Aplikasi:
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
Untuk informasi selengkapnya tentang peran ini, silakan lihat Izin peran terkait layanan untuk Sinyal Aplikasi CloudWatch .
-
Tambahkan kebijakan IAM CloudWatchLambdaApplicationSignalsExecutionRolePolicy ke fungsi lambda.
const fn = new Function(this, 'DemoFunction', {
code: Code.fromAsset('$YOUR_LAMBDA.zip'),
runtime: Runtime.PYTHON_3_12,
handler: '$YOUR_HANDLER'
})
fn.role?.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName('CloudWatchLambdaApplicationSignalsExecutionRolePolicy'));
-
Ganti $AWS_LAMBDA_LAYER_FOR_OTEL_ARN dengan AWS Lambda Layer yang sebenarnya untuk OpenTelemetry ARN untuk Wilayah Anda.
fn.addLayers(LayerVersion.fromLayerVersionArn(
this, 'AwsLambdaLayerForOtel',
'$AWS_LAMBDA_LAYER_FOR_OTEL_ARN'
))
fn.addEnvironment("AWS_LAMBDA_EXEC_WRAPPER", "/opt/otel-instrument");
Aktifkan Sinyal Aplikasi di Lambda menggunakan Model Context Protocol (MCP)
Anda dapat menggunakan server CloudWatch Application Signals Model Context Protocol (MCP) untuk mengaktifkan Sinyal Aplikasi pada fungsi Lambda Anda melalui interaksi AI percakapan. Ini menyediakan antarmuka bahasa alami untuk mengatur pemantauan Sinyal Aplikasi.
Server MCP mengotomatiskan proses pemberdayaan dengan memahami kebutuhan Anda dan menghasilkan konfigurasi yang sesuai. Alih-alih mengikuti langkah-langkah konsol secara manual atau menulis kode CDK, Anda cukup menjelaskan apa yang ingin Anda aktifkan.
Prasyarat
Sebelum menggunakan server MCP untuk mengaktifkan Sinyal Aplikasi, pastikan Anda memiliki:
Lingkungan Pengembangan yang mendukung MCP (seperti Kiro, Claude Desktop, dengan ekstensi MCP, atau alat lain yang kompatibel VSCode dengan MCP)
Server MCP Sinyal CloudWatch Aplikasi dikonfigurasi dalam IDE Anda. Untuk petunjuk penyiapan terperinci, lihat Dokumentasi Server MCP Sinyal CloudWatch Aplikasi.
Menggunakan server MCP
Setelah Anda mengonfigurasi server MCP Sinyal CloudWatch Aplikasi di IDE Anda, Anda dapat meminta panduan pemberdayaan menggunakan petunjuk bahasa alami. Meskipun asisten pengkodean dapat menyimpulkan konteks dari struktur proyek Anda, memberikan detail spesifik dalam petunjuk Anda membantu memastikan panduan yang lebih akurat dan relevan. Sertakan informasi seperti bahasa pemrograman fungsi Lambda Anda, nama fungsi, dan jalur absolut ke kode fungsi Lambda dan kode infrastruktur Anda.
Petunjuk praktik terbaik (spesifik dan lengkap):
"Enable Application Signals for my Python Lambda function.
My function code is in /home/user/order-processor/lambda and IaC is in /home/user/order-processor/terraform"
"I want to add observability to my Node.js Lambda function 'checkout-handler'.
The function code is at /Users/dev/checkout-function and
the CDK infrastructure is at /Users/dev/checkout-function/cdk"
"Help me instrument my Java Lambda function with Application Signals.
Function directory: /opt/apps/payment-lambda
CDK infrastructure: /opt/apps/payment-lambda/cdk"
Petunjuk yang kurang efektif:
"Enable monitoring for my Lambda"
→ Missing: language, paths
"Enable Application Signals. My code is in ./src and IaC is in ./infrastructure"
→ Problem: Relative paths instead of absolute paths
"Enable Application Signals for my Lambda at /home/user/myfunction"
→ Missing: programming language
Template cepat:
"Enable Application Signals for my [LANGUAGE] Lambda function.
Function code: [ABSOLUTE_PATH_TO_FUNCTION]
IaC code: [ABSOLUTE_PATH_TO_IAC]"
Manfaat menggunakan server MCP
Menggunakan CloudWatch Application Signals MCP server menawarkan beberapa keuntungan:
Antarmuka bahasa alami: Jelaskan apa yang ingin Anda aktifkan tanpa menghafal perintah atau sintaks konfigurasi
Panduan sadar konteks: Server MCP memahami lingkungan spesifik Anda dan memberikan rekomendasi yang disesuaikan
Mengurangi kesalahan: Pembuatan konfigurasi otomatis meminimalkan kesalahan pengetikan manual
Pengaturan lebih cepat: Dapatkan dari niat ke implementasi lebih cepat
Alat pembelajaran: Lihat konfigurasi yang dihasilkan dan pahami cara kerja Sinyal Aplikasi
Untuk informasi selengkapnya tentang mengonfigurasi dan menggunakan server MCP Sinyal CloudWatch Aplikasi, lihat dokumentasi server MCP.
(Opsional) Pantau kesehatan aplikasi Anda
Setelah Anda mengaktifkan aplikasi di Lambda, Anda dapat memantau kesehatan aplikasi Anda. Untuk informasi selengkapnya, lihat Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi.
Aktifkan Sinyal Aplikasi secara manual.
Gunakan langkah-langkah ini untuk mengaktifkan Sinyal Aplikasi secara manual untuk fungsi Lambda.
-
Tambahkan Layer AWS Lambda OpenTelemetry ke runtime Lambda Anda. Untuk menemukan layer ARN untuk Region Anda, lihat ADOT Lambda Layer. ARNs
-
Tambahkan variabel lingkungan AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument
Tambahkan variabel lingkungan LAMBDA_APPLICATION_SIGNALS_REMOTE_ENVIRONMENT untuk mengonfigurasi lingkungan Lambda kustom. Secara default, lingkungan lambda dikonfigurasi kelambda:default.
-
Lampirkan kebijakan IAM AWS terkelola CloudWatchLambdaApplicationSignalsExecutionRolePolicyke peran eksekusi Lambda.
-
(Opsional) Kami menyarankan Anda mengaktifkan penelusuran aktif Lambda untuk mendapatkan pengalaman penelusuran yang lebih baik. Untuk informasi selengkapnya, lihat Memvisualisasikan pemanggilan fungsi Lambda menggunakan. AWS X-Ray
Nonaktifkan Sinyal Aplikasi secara manual
Untuk menonaktifkan Sinyal Aplikasi untuk fungsi Lambda secara manual, hapus Lapisan AWS Lambda untuk dari runtime Lambda OpenTelemetry Anda, dan hapus variabel lingkungan. AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument
Mengonfigurasi Sinyal Aplikasi
Anda dapat menggunakan bagian ini untuk mengkonfigurasi Sinyal Aplikasi di Lambda.
Mengelompokkan beberapa fungsi Lambda menjadi satu layanan
Variabel lingkungan OTEL_SERVICE_NAME menetapkan nama layanan. Ini akan ditampilkan sebagai nama layanan untuk aplikasi Anda di dasbor Sinyal Aplikasi. Anda dapat menetapkan nama layanan yang sama ke beberapa fungsi Lambda, dan mereka akan digabungkan menjadi satu layanan di Sinyal Aplikasi. Bila Anda tidak memberikan nilai untuk kunci ini, nama Fungsi Lambda default akan digunakan.
Pengambilan sampel
Secara default, strategi trace sampling berbasis induk. Anda dapat menyesuaikan strategi pengambilan sampel dengan mengatur variabel OTEL_TRACES_SAMPLER lingkungan.
Misalnya, atur laju pengambilan sampel jejak menjadi 30%.
OTEL_TRACES_SAMPLER=traceidratio
OTEL_TRACES_SAMPLER_ARG=0.3
Untuk informasi selengkapnya, lihat Spesifikasi Variabel OpenTelemetry Lingkungan.
Mengaktifkan semua instrumentasi perpustakaan
Untuk mengurangi start dingin Lambda, secara default, hanya instrumentasi AWS SDK dan HTTP yang diaktifkan untuk Python, Node, dan Java. Anda dapat mengatur variabel lingkungan untuk mengaktifkan instrumentasi untuk pustaka lain yang digunakan dalam fungsi Lambda Anda.
-
Python – OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=none
-
Simpul — OTEL_NODE_DISABLED_INSTRUMENTATIONS=none
-
Java – OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
AWS Lapisan Lambda untuk OpenTelemetry ARNs
Untuk daftar lengkap AWS Lambda Layer OpenTelemetry ARNs menurut Wilayah dan runtime, lihat ADOT Lambda Layer ARNs di Distro untuk dokumentasi. AWS OpenTelemetry Lapisan ini tersedia untuk runtime Python, Node.js, .NET, dan Java.
Menerapkan fungsi Lambda menggunakan wadah Amazon ECR
Fungsi Lambda yang digunakan sebagai gambar kontainer tidak mendukung Lapisan Lambda dengan cara tradisional. Saat menggunakan gambar kontainer, Anda tidak dapat melampirkan lapisan seperti yang Anda lakukan dengan metode penerapan Lambda lainnya. Sebagai gantinya, Anda harus memasukkan konten layer secara manual ke dalam image container Anda selama proses build.
- Java
-
Anda dapat mempelajari cara mengintegrasikan Lapisan AWS Lambda untuk OpenTelemetry ke dalam fungsi Java Lambda dalam wadah Anda, mengunduh layer.zip artefak, dan mengintegrasikannya ke dalam wadah fungsi Java Lambda Anda untuk mengaktifkan pemantauan Sinyal Aplikasi.
Prasyarat
-
Mengatur Struktur Proyek
Buat direktori untuk fungsi Lambda Anda
mkdir java-appsignals-container-lambda && \
cd java-appsignals-container-lambda
Buat struktur proyek Maven
mkdir -p src/main/java/com/example/java/lambda
mkdir -p src/main/resources
-
Buat Dockerfile
Unduh dan integrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi langsung ke gambar kontainer Lambda Anda. Untuk melakukan ini, Dockerfile file dibuat.
FROM public.ecr.aws/lambda/java:21
# Install utilities
RUN dnf install -y unzip wget maven
# Download the OpenTelemetry Layer with AppSignals Support
RUN wget https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip
# Extract and include Lambda layer contents
RUN mkdir -p /opt && \
unzip /tmp/layer.zip -d /opt/ && \
chmod -R 755 /opt/ && \
rm /tmp/layer.zip
# Copy and build function code
COPY pom.xml ${LAMBDA_TASK_ROOT}
COPY src ${LAMBDA_TASK_ROOT}/src
RUN mvn clean package -DskipTests
# Copy the JAR file to the Lambda runtime directory (from inside the container)
RUN mkdir -p ${LAMBDA_TASK_ROOT}/lib/
RUN cp ${LAMBDA_TASK_ROOT}/target/function.jar ${LAMBDA_TASK_ROOT}/lib/
# Set the handler
CMD ["com.example.java.lambda.App::handleRequest"]
layer.zipFile berisi OpenTelemetry instrumentasi yang diperlukan untuk dukungan Sinyal AWS Aplikasi untuk memantau fungsi Lambda Anda.
Langkah-langkah ekstraksi lapisan memastikan:
-
Isi layer.zip diekstraksi dengan benar ke /opt/ directory
-
otel-instrumentSkrip menerima izin eksekusi yang tepat
-
File layer.zip sementara dihapus untuk menjaga ukuran gambar lebih kecil
-
Kode fungsi Lambda - Buat file Java untuk penangan Lambda Anda di src/main/java/com/example/lambda/App.java:
Proyek Anda akan terlihat seperti:
.
├── Dockerfile
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── example
│ └── java
│ └── lambda
│ └── App.java
└── resources
-
Membangun dan menyebarkan gambar kontainer
Mengatur variabel lingkungan
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region)
# For fish shell users:
# set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text)
# set AWS_REGION (aws configure get region)
Otentikasi dengan ECR
Pertama dengan ECR publik (untuk gambar dasar):
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Kemudian dengan ECR pribadi Anda:
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
Bangun, tag, dan dorong gambar Anda
# Build the Docker image
docker build -t lambda-appsignals-demo .
# Tag the image
docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
# Push the image
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
-
Buat dan konfigurasikan fungsi Lambda
Buat fungsi baru menggunakan konsol Lambda.
Pilih gambar Container sebagai opsi penerapan.
Pilih Jelajahi gambar untuk memilih gambar Amazon ECR Anda.
-
Pengujian dan verifikasi — Uji Lambda Anda dengan acara sederhana. Jika integrasi lapisan berhasil, Lambda Anda muncul di bawah peta layanan Sinyal Aplikasi.
Anda akan melihat jejak dan metrik untuk fungsi Lambda Anda di CloudWatch konsol.
Pemecahan Masalah
Jika Sinyal Aplikasi tidak berfungsi, periksa hal berikut:
-
Periksa log fungsi untuk setiap kesalahan yang terkait dengan OpenTelemetry instrumentasi
-
Verifikasi apakah variabel lingkungan AWS_LAMBDA_EXEC_WRAPPER disetel dengan benar
-
Pastikan ekstraksi layer dalam file Docker berhasil diselesaikan
-
Konfirmasikan apakah izin IAM terpasang dengan benar
-
Jika diperlukan, tingkatkan pengaturan Timeout dan Memory dalam konfigurasi umum fungsi Lambda
- .Net
-
Anda dapat mempelajari cara mengintegrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi ke dalam fungsi Net Lambda dalam wadah Anda, mengunduh layer.zip artefak, dan mengintegrasikannya ke dalam fungsi .Net Lambda Anda untuk mengaktifkan pemantauan Sinyal Aplikasi.
Prasyarat
-
Mengatur Struktur Proyek
Buat direktori untuk gambar wadah fungsi Lambda Anda
mkdir dotnet-appsignals-container-lambda && \
cd dotnet-appsignals-container-lambda
-
Buat Dockerfile
Unduh dan integrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi langsung ke gambar kontainer Lambda Anda. Untuk melakukan ini, Dockerfile file dibuat.
FROM public.ecr.aws/lambda/dotnet:8
# Install utilities
RUN dnf install -y unzip wget dotnet-sdk-8.0 which
# Add dotnet command to docker container's PATH
ENV PATH="/usr/lib64/dotnet:${PATH}"
# Download the OpenTelemetry Layer with AppSignals Support
RUN wget https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip
# Extract and include Lambda layer contents
RUN mkdir -p /opt && \
unzip /tmp/layer.zip -d /opt/ && \
chmod -R 755 /opt/ && \
rm /tmp/layer.zip
WORKDIR ${LAMBDA_TASK_ROOT}
# Copy the project files
COPY dotnet-lambda-function/src/dotnet-lambda-function/*.csproj ${LAMBDA_TASK_ROOT}/
COPY dotnet-lambda-function/src/dotnet-lambda-function/Function.cs ${LAMBDA_TASK_ROOT}/
COPY dotnet-lambda-function/src/dotnet-lambda-function/aws-lambda-tools-defaults.json ${LAMBDA_TASK_ROOT}/
# Install dependencies and build the application
RUN dotnet restore
# Use specific runtime identifier and disable ReadyToRun optimization
RUN dotnet publish -c Release -o out --self-contained false /p:PublishReadyToRun=false
# Copy the published files to the Lambda runtime directory
RUN cp -r out/* ${LAMBDA_TASK_ROOT}/
CMD ["dotnet-lambda-function::dotnet_lambda_function.Function::FunctionHandler"]
layer.zipFile berisi OpenTelemetry instrumentasi yang diperlukan untuk dukungan Sinyal AWS Aplikasi untuk memantau fungsi Lambda Anda.
Langkah-langkah ekstraksi lapisan memastikan:
-
Isi layer.zip diekstraksi dengan benar ke /opt/ directory
-
otel-instrumentSkrip menerima izin eksekusi yang tepat
-
File layer.zip sementara dihapus untuk menjaga ukuran gambar lebih kecil
-
Kode fungsi Lambda - Inisialisasi proyek Lambda Anda menggunakan template Lambda.NET: AWS
# Install the Lambda templates if you haven't already
dotnet new -i Amazon.Lambda.Templates
# Create a new Lambda project
dotnet new lambda.EmptyFunction -n dotnet-lambda-function
Proyek Anda akan terlihat seperti:
.
├── Dockerfile
└── dotnet-lambda-function
├── src
│ └── dotnet-lambda-function
│ ├── Function.cs
│ ├── Readme.md
│ ├── aws-lambda-tools-defaults.json
│ └── dotnet-lambda-function.csproj
└── test
└── dotnet-lambda-function.Tests
├── FunctionTest.cs
└── dotnet-lambda-function.Tests.csproj
-
Membangun dan menyebarkan gambar kontainer
Mengatur variabel lingkungan
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region)
# For fish shell users:
# set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text)
# set AWS_REGION (aws configure get region)
Perbarui Function.cs kode ke:
Perbarui dotnet-lambda-function.csproj kode ke:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0>/TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<AWSProjectType>Lambda</AWSProjectType>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Amazon.Lambda.Core" Version="2.5.0" />
<PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.4" />
<PackageReference Include="AWSSDK.S3" Version="3.7.305.23" />
</ItemGroup>
</Project>
-
Membangun dan menyebarkan gambar kontainer
Mengatur variabel lingkungan
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region)
# For fish shell users:
# set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text)
# set AWS_REGION (aws configure get region)
Otentikasi dengan ECR Amazon publik
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Otentikasi dengan ECR Amazon pribadi
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
Buat repositori Amazon ECR (jika diperlukan)
aws ecr create-repository \
--repository-name lambda-appsignals-demo \
--region $AWS_REGION
Bangun, tag, dan dorong gambar Anda
# Build the Docker image
docker build -t lambda-appsignals-demo .
# Tag the image
docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
# Push the image
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
5. Create and Configure the Lambda Function
-
Buat dan konfigurasikan fungsi Lambda
Buat fungsi baru menggunakan konsol Lambda.
Pilih gambar Container sebagai opsi penerapan.
Pilih Jelajahi gambar untuk memilih gambar Amazon ECR Anda.
-
Pengujian dan verifikasi — Uji Lambda Anda dengan acara sederhana. Jika integrasi lapisan berhasil, Lambda Anda muncul di bawah peta layanan Sinyal Aplikasi.
Anda akan melihat jejak dan metrik untuk fungsi Lambda Anda di CloudWatch konsol.
Pemecahan Masalah
Jika Sinyal Aplikasi tidak berfungsi, periksa hal berikut:
-
Periksa log fungsi untuk setiap kesalahan yang terkait dengan OpenTelemetry instrumentasi
-
Verifikasi apakah variabel lingkungan AWS_LAMBDA_EXEC_WRAPPER disetel dengan benar
-
Pastikan ekstraksi layer dalam file Docker berhasil diselesaikan
-
Konfirmasikan apakah izin IAM terpasang dengan benar
-
Jika diperlukan, tingkatkan pengaturan Timeout dan Memory dalam konfigurasi umum fungsi Lambda
- Node.js
-
Anda dapat mempelajari cara mengintegrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi ke dalam fungsi Lambda Node.js dalam wadah Anda, mengunduh layer.zip artefak, dan mengintegrasikannya ke dalam fungsi Lambda Node.js Anda untuk mengaktifkan pemantauan Sinyal Aplikasi.
Prasyarat
-
Mengatur Struktur Proyek
Buat direktori untuk gambar wadah fungsi Lambda Anda
mkdir nodejs-appsignals-container-lambda &&\
cd nodejs-appsignals-container-lambda
-
Buat Dockerfile
Unduh dan integrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi langsung ke gambar kontainer Lambda Anda. Untuk melakukan ini, Dockerfile file dibuat.
# Dockerfile
FROM public.ecr.aws/lambda/nodejs:22
# Install utilities
RUN dnf install -y unzip wget
# Download the OpenTelemetry Layer with AppSignals Support
RUN wget https://github.com/aws-observability/aws-otel-js-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip
# Extract and include Lambda layer contents
RUN mkdir -p /opt && \
unzip /tmp/layer.zip -d /opt/ && \
chmod -R 755 /opt/ && \
rm /tmp/layer.zip
# Install npm dependencies
RUN npm init -y
RUN npm install
# Copy function code
COPY *.js ${LAMBDA_TASK_ROOT}/
# Set the CMD to your handler
CMD [ "index.handler" ]
layer.zipFile berisi OpenTelemetry instrumentasi yang diperlukan untuk dukungan Sinyal AWS Aplikasi untuk memantau fungsi Lambda Anda.
Langkah-langkah ekstraksi lapisan memastikan:
-
Isi layer.zip diekstraksi dengan benar ke /opt/ directory
-
otel-instrumentSkrip menerima izin eksekusi yang tepat
-
File layer.zip sementara dihapus untuk menjaga ukuran gambar lebih kecil
-
Kode fungsi Lambda
Buat index.js file dengan konten berikut:
const { S3Client, ListBucketsCommand } = require('@aws-sdk/client-s3');
// Initialize S3 client
const s3Client = new S3Client({ region: process.env.AWS_REGION });
exports.handler = async function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
console.log('Handler initializing:', exports.handler.name);
const response = {
statusCode: 200,
body: {}
};
try {
// List S3 buckets
const command = new ListBucketsCommand({});
const data = await s3Client.send(command);
// Extract bucket names
const bucketNames = data.Buckets.map(bucket => bucket.Name);
response.body = {
message: 'Successfully retrieved buckets',
buckets: bucketNames
};
} catch (error) {
console.error('Error listing buckets:', error);
response.statusCode = 500;
response.body = {
message: `Error listing buckets: ${error.message}`
};
}
return response;
};
Struktur proyek Anda akan terlihat seperti ini:
.
├── Dockerfile
└── index.js
-
Membangun dan menyebarkan gambar kontainer
Mengatur variabel lingkungan
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region)
# For fish shell users:
# set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text)
# set AWS_REGION (aws configure get region)
Otentikasi dengan ECR Amazon publik
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Otentikasi dengan ECR Amazon pribadi
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
Buat repositori Amazon ECR (jika diperlukan)
aws ecr create-repository \
--repository-name lambda-appsignals-demo \
--region $AWS_REGION
Bangun, tag, dan dorong gambar Anda
# Build the Docker image
docker build -t lambda-appsignals-demo .
# Tag the image
docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
# Push the image
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
5. Create and Configure the Lambda Function
-
Buat dan konfigurasikan fungsi Lambda
Buat fungsi baru menggunakan konsol Lambda.
Pilih gambar Container sebagai opsi penerapan.
Pilih Jelajahi gambar untuk memilih gambar Amazon ECR Anda.
-
Pengujian dan verifikasi — Uji Lambda Anda dengan acara sederhana. Jika integrasi lapisan berhasil, Lambda Anda muncul di bawah peta layanan Sinyal Aplikasi.
Anda akan melihat jejak dan metrik untuk fungsi Lambda Anda di CloudWatch konsol.
Pemecahan Masalah
Jika Sinyal Aplikasi tidak berfungsi, periksa hal berikut:
-
Periksa log fungsi untuk setiap kesalahan yang terkait dengan OpenTelemetry instrumentasi
-
Verifikasi apakah variabel lingkungan AWS_LAMBDA_EXEC_WRAPPER diatur dengan benar
-
Pastikan ekstraksi layer dalam file Docker berhasil diselesaikan
-
Konfirmasikan apakah izin IAM terpasang dengan benar
-
Jika diperlukan, tingkatkan pengaturan Timeout dan Memory dalam konfigurasi umum fungsi Lambda
- Python
-
Anda dapat mempelajari cara mengintegrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi ke dalam fungsi Python Lambda dalam wadah Anda, mengunduh layer.zip artefak, dan mengintegrasikannya ke dalam fungsi Lambda Python Anda untuk mengaktifkan pemantauan Sinyal Aplikasi.
Prasyarat
-
Mengatur Struktur Proyek
Buat direktori untuk gambar wadah fungsi Lambda Anda
mkdir python-appsignals-container-lambda &&\
cd python-appsignals-container-lambda
-
Buat Dockerfile
Unduh dan integrasikan OpenTelemetry Layer dengan dukungan Sinyal Aplikasi langsung ke gambar kontainer Lambda Anda. Untuk melakukan ini, Dockerfile file dibuat.
# Dockerfile
FROM public.ecr.aws/lambda/python:3.13
# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}
# Install unzip and wget utilities
RUN dnf install -y unzip wget
# Download the OpenTelemetry Layer with AppSignals Support
RUN wget https://github.com/aws-observability/aws-otel-python-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip
# Extract and include Lambda layer contents
RUN mkdir -p /opt && \
unzip /tmp/layer.zip -d /opt/ && \
chmod -R 755 /opt/ && \
rm /tmp/layer.zip
# Set the CMD to your handler
CMD [ "app.lambda_handler" ]
layer.zipFile berisi OpenTelemetry instrumentasi yang diperlukan untuk dukungan Sinyal AWS Aplikasi untuk memantau fungsi Lambda Anda.
Langkah-langkah ekstraksi lapisan memastikan:
-
Isi layer.zip diekstraksi dengan benar ke /opt/ directory
-
otel-instrumentSkrip menerima izin eksekusi yang tepat
-
File layer.zip sementara dihapus untuk menjaga ukuran gambar lebih kecil
-
Kode fungsi Lambda
Buat fungsi Lambda Anda dalam sebuah app.py file:
import json
import boto3
def lambda_handler(event, context):
"""
Sample Lambda function that can be used in a container image.
Parameters:
-----------
event: dict
Input event data
context: LambdaContext
Lambda runtime information
Returns:
__
dict
Response object
"""
print("Received event:", json.dumps(event, indent=2))
# Create S3 client
s3 = boto3.client('s3')
try:
# List buckets
response = s3.list_buckets()
# Extract bucket names
buckets = [bucket['Name'] for bucket in response['Buckets']]
return {
'statusCode': 200,
'body': json.dumps({
'message': 'Successfully retrieved buckets',
'buckets': buckets
})
}
except Exception as e:
print(f"Error listing buckets: {str(e)}")
return {
'statusCode': 500,
'body': json.dumps({
'message': f'Error listing buckets: {str(e)}'
})
}
Struktur proyek Anda akan terlihat seperti ini:
.
├── Dockerfile
├── app.py
└── instructions.md
-
Membangun dan menyebarkan gambar kontainer
Mengatur variabel lingkungan
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region)
# For fish shell users:
# set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text)
# set AWS_REGION (aws configure get region)
Otentikasi dengan ECR Amazon publik
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
Otentikasi dengan ECR Amazon pribadi
aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com
Buat repositori Amazon ECR (jika diperlukan)
aws ecr create-repository \
--repository-name lambda-appsignals-demo \
--region $AWS_REGION
Bangun, tag, dan dorong gambar Anda
# Build the Docker image
docker build -t lambda-appsignals-demo .
# Tag the image
docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
# Push the image
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
5. Create and Configure the Lambda Function
-
Buat dan konfigurasikan fungsi Lambda
Buat fungsi baru menggunakan konsol Lambda.
Pilih gambar Container sebagai opsi penerapan.
Pilih Jelajahi gambar untuk memilih gambar Amazon ECR Anda.
-
Pengujian dan verifikasi — Uji Lambda Anda dengan acara sederhana. Jika integrasi lapisan berhasil, Lambda Anda muncul di bawah peta layanan Sinyal Aplikasi.
Anda akan melihat jejak dan metrik untuk fungsi Lambda Anda di CloudWatch konsol.
Pemecahan Masalah
Jika Sinyal Aplikasi tidak berfungsi, periksa hal berikut:
-
Periksa log fungsi untuk setiap kesalahan yang terkait dengan OpenTelemetry instrumentasi
-
Verifikasi apakah variabel lingkungan AWS_LAMBDA_EXEC_WRAPPER diatur dengan benar
-
Pastikan ekstraksi layer dalam file Docker berhasil diselesaikan
-
Konfirmasikan apakah izin IAM terpasang dengan benar
-
Jika diperlukan, tingkatkan pengaturan Timeout dan Memory dalam konfigurasi umum fungsi Lambda