View a markdown version of this page

Time-based kebijakan - Batuan Dasar Amazon AgentCore

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

Time-based kebijakan

Kebijakan di bagian ini memutuskan dari waktu jam dinding — jendela promosi, jam kerja, atau kombinasi keduanya. Mereka membacacontext.system.now, yang disediakan layanan pada setiap permintaan.

Time-based kondisi adalah when klausa Cedar biasa, jadi mereka menulis dengan segala sesuatu yang lain di halaman ini. Pemeriksaan pokok, kondisi input, pagar pembatas, atau kondisi temporal semuanya dapat dilakukan dalam kebijakan yang sama.

Seperti panduan penulisan lainnya, contoh-contoh ini ditulis terhadap gateway referensi yang dijelaskan dalam konfigurasi Sumber daya sebagai contoh, sehingga Anda dapat menggabungkannya dengan contoh lain di satu mesin kebijakan.

catatan

Time-based tidak sama dengan temporal. Kondisi berbasis waktu menanyakan jam berapa sekarang; kondisi temporal menanyakan apa yang telah terjadi dalam sesi ini. Untuk informasi selengkapnya, lihat Contoh kebijakan sementara.

Cara kerjanya

Selama evaluasi kebijakan, stempel waktu UTC saat ini disediakan sebagai bagian dari konteks evaluasi:

// Current datetime in UTC context.system.now

Anda dapat menggunakan fungsi datetime Cedar untuk membuat kondisi berbasis waktu:

  • datetime("YYYY-MM-DDTHH:MM:SSZ")— Buat nilai datetime

  • duration("Xh")— Buat durasi (jam, menit, detik)

  • .toTime()— Ekstrak waktu hari dari datetime

  • Operator perbandingan:<,⇐,>,>=, ==

Batasan tanggal dan rentang waktu absolut

Menegakkan kebijakan dalam periode kalender tertentu.

Contoh: Open-enrollment jendela

permit ( principal, action == AgentCore::Action::"InsuranceAPI___calculate_premium", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5" ) when { context.system.now >= datetime("2025-01-01T00:00:00Z") && context.system.now < datetime("2025-02-01T00:00:00Z") };

Kasus penggunaan: Penawaran premi hanya selama jendela pendaftaran terbuka Januari 2025.

Pembatasan waktu berulang harian

Menegakkan kebijakan berdasarkan waktu hari yang berulang setiap hari.

Contoh: Kebijakan jam kerja

permit ( principal, action == AgentCore::Action::"InsuranceAPI___disburse_payment", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5" ) when { duration("9h") <= context.system.now.toTime() && context.system.now.toTime() <= duration("17h") };

Kasus penggunaan: Cairkan pembayaran hanya selama jam kerja (9 pagi — 5 sore UTC setiap hari).

Batasan tanggal dan waktu gabungan

Gabungkan tanggal absolut dengan batasan waktu harian.

Contoh: Jendela pendaftaran dengan jam harian

permit ( principal, action == AgentCore::Action::"InsuranceAPI___update_coverage", resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/insurance-gw-a1b2c3d4e5" ) when { // Valid dates: February 2025 context.system.now >= datetime("2025-02-01T00:00:00Z") && context.system.now < datetime("2025-03-01T00:00:00Z") && // Valid hours: 9am-9pm UTC daily duration("9h") <= context.system.now.toTime() && context.system.now.toTime() <= duration("21h") };

Kasus penggunaan: Izinkan perubahan cakupan hanya selama Februari 2025, antara jam 9 pagi dan 9 malam UTC setiap hari.

Penanganan zona waktu

Semua nilai datetime harus dalam UTC. Mesin Kebijakan tidak mendukung konversi zona waktu atau kebijakan sadar zona waktu.

Saat menentukan waktu dalam kebijakan Anda, selalu gunakan UTC. Jika bisnis Anda beroperasi di zona waktu yang berbeda, ubah waktu lokal Anda ke UTC sebelum membuat kebijakan.