AWS Target fungsi Lambda
Target Lambda memungkinkan Anda menghubungkan gateway Anda ke fungsi AWS Lambda yang mengimplementasikan alat Anda. Ini berguna ketika Anda ingin mengeksekusi kode kustom sebagai tanggapan terhadap pemanggilan alat.
Anda membuat fungsi Lambda menggunakan layanan Lambda AWS . Untuk membuat fungsi, Anda harus melakukan hal berikut:
-
Buat skema alat yang mendefinisikan alat yang dapat dipanggil oleh fungsi Lambda Anda.
-
Memahami format input Lambda. Anda kemudian dapat mengikuti langkah-langkah di Panduan Pengembang AWS Lambda untuk Membangun dengan bahasa pilihan Anda.
Setelah Anda membuat fungsi, Anda mengonfigurasi izin untuk gateway agar dapat mengaksesnya.
Tinjau pertimbangan dan batasan utama untuk membantu Anda memutuskan apakah target Lambda berlaku untuk kasus penggunaan Anda. Jika ya, Anda dapat membuat skema alat dan fungsi Lambda dan kemudian mengatur izin untuk gateway untuk dapat mengakses target. Pilih topik untuk mempelajari lebih lanjut:
Pertimbangan dan keterbatasan utama
Saat bekerja dengan target Lambda, perhatikan batasan dan pertimbangan berikut:
-
Awalan nama alat harus dilucuti secara manual dari nama alat di fungsi Lambda Anda. AWS Untuk informasi selengkapnya, lihat Memahami bagaimana alat AgentCore Gateway diberi nama.
-
Jika Anda menggunakan fungsi AWS Lambda yang ada dan mengimpornya sebagai alat ke gateway, Anda perlu mengubah kode fungsi untuk memperhitungkan perubahan skema untuk objek peristiwa dan konteks
-
Fungsi Lambda harus mengembalikan respons JSON yang valid yang dapat diuraikan oleh gateway
-
Batas waktu fungsi Lambda harus dikonfigurasi dengan tepat untuk menangani waktu pemrosesan yang diharapkan dari alat Anda
-
Pertimbangkan untuk menerapkan penanganan kesalahan dalam fungsi LlamBDA Anda untuk memberikan pesan kesalahan yang berarti kepada klien
Skema alat fungsi Lambda
Bagian ini menjelaskan struktur skema alat yang mendefinisikan alat yang dapat dikembalikan oleh fungsi Lambda Anda. Setelah Anda menentukan skema alat Anda, Anda dapat melakukan salah satu hal berikut:
-
Unggah ke bucket Amazon S3 dan lihat lokasi S3 saat Anda menambahkan target ke gateway Anda.
-
Tempel definisi sebaris saat Anda menambahkan target ke gateway Anda.
Pilih topik untuk mempelajari lebih lanjut tentang detail skema alat atau untuk melihat contoh:
Topik
Definisi alat
Saat Anda menambahkan fungsi Lambda sebagai target gateway, Anda memberikan ToolDefinitionsaat menyediakan konfigurasi target. Struktur definisi alat adalah sebagai berikut:
{ "name": "string", "description": "string", "inputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }, "outputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] } }
Definisi alat berisi bidang-bidang berikut:
-
nama (wajib) — Nama alat.
-
deskripsi (wajib) — Deskripsi alat dan tujuan serta penggunaannya.
-
InputSchema (wajib) - Objek JSON yang mendefinisikan struktur input yang diterima alat.
-
OutputSchema (opsional) - Objek JSON yang mendefinisikan struktur output yang dihasilkan alat.
outputSchemaBidang inputSchema dan keduanya memetakan ke tipe objek SchemaDefinition, dijelaskan di bagian berikut.
Definisi skema tingkat atas untuk skema input dan output
outputSchemaBidang inputSchema dan di tingkat atas definisi alat keduanya memetakan ke tipe objek SchemaDefinitionyang berisi bidang berikut:
{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
-
jenis (wajib) - Harus
object. -
deskripsi (opsional) — Deskripsi skema dan tujuan serta penggunaannya.
-
properti (opsional) - Objek JSON yang mendefinisikan properti atau argumen alat. Setiap kunci adalah nama properti dan memetakan ke SchemaDefinitionobjek yang mendefinisikan properti.
-
required (optional) - Sebuah array yang menghitung properti yang diperlukan dalam objek.
properties
Jika Anda menyertakan properties bidang untuk mendefinisikan argumen untuk alat, Anda memberikan definisi skema untuk setiap argumen. Berbagai jenis definisi skema diuraikan di bagian selanjutnya.
Definisi skema properti
Setiap properti di tingkat atas SchemaDefinition memetakan ke SchemaDefinitionobjek yang memiliki persyaratan yang sedikit berbeda dari definisi skema tingkat atas. Bidang yang tersedia tergantung pada type untuk properti. Untuk melihat bentuk SchemaDefinition untuk tipe, pilih dari tab berikut:
contoh
Jika Anda menyertakan properti tipe objek lain, Anda akan menambahkan properti lain secara rekursif. SchemaDefinition
Contoh definisi alat Lambda
Pilih tab untuk melihat contoh definisi alat yang dapat Anda sertakan dalam fungsi Lambda Anda.
contoh
Format input fungsi Lambda
Ketika AgentCore gateway Amazon Bedrock memanggil fungsi Lambda, ia meneruskan event objek dan objek ke fungsi context tersebut. Event handler Lambda yang Anda tulis dapat mengakses nilai dalam objek ini.
Objek acara
Peta properties dari dari inputSchema ke nilai mereka, seperti yang dikembalikan oleh alat. Misalnya, jika skema masukan Anda berisi properti keywords dancategory, objek acara bisa menjadi berikut:
{ "keywords": "wireless headphones", "category": "electronics" }
Objek konteks
Berisi metadata berikut:
-
batuan dasar AgentCoreMessageVersion — Versi pesan.
-
batuan dasar AgentCoreAwsRequestId — ID permintaan yang dibuat untuk layanan Amazon Bedrock AgentCore .
-
batuan dasar AgentCoreMcpMessageId — ID pesan yang dikirim ke server MCP.
-
batuan dasar AgentCoreGatewayId — ID gateway yang dipanggil.
-
batuan dasar AgentCoreTargetId — ID target gateway yang dipanggil.
-
batuan dasar AgentCoreToolName — Nama alat yang disebut. Nama alat dalam format
${target_name}_${tool_name}.
Format objek konteks adalah sebagai berikut:
{ "bedrockAgentCoreMessageVersion": "1.0", "bedrockAgentCoreAwsRequestId": "string", "bedrockAgentCoreMcpMessageId": "string", "bedrockAgentCoreGatewayId": "string", "bedrockAgentCoreTargetId": "string", "bedrockAgentCoreToolName": "string" }
Fungsi Lambda yang Anda tulis dapat mengakses properti peristiwa dan objek konteks. Anda dapat menggunakan kode boilerplate berikut untuk memulai:
# Access context properties in your Lambda function def lambda_handler(event, context): # Since the visible tool name includes the target name as a prefix, we can use this delimiter to strip the prefix delimiter = "___" # Get the tool name from the context originalToolName = context.client_context.custom['bedrockAgentCoreToolName'] toolName = originalToolName[originalToolName.index(delimiter) + len(delimiter):] # Get other context properties message_version = context.client_context.custom['bedrockAgentCoreMessageVersion'] aws_request_id = context.client_context.custom['bedrockAgentCoreAwsRequestId'] mcp_message_id = context.client_context.custom['bedrockAgentCoreMcpMessageId'] gateway_id = context.client_context.custom['bedrockAgentCoreGatewayId'] target_id = context.client_context.custom['bedrockAgentCoreTargetId'] # Process the request based on the tool name if tool_name == 'searchProducts': # Handle searchProducts tool pass elif tool_name == 'getProductDetails': # Handle getProductDetails tool pass else: # Handle unknown tool pass