View a markdown version of this page

Contoh: Otorisasi untuk gateway default dan target yang dibuat oleh AgentCore CLI - Batu Dasar Amazon AgentCore

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

Contoh: Otorisasi untuk gateway default dan target yang dibuat oleh AgentCore CLI

Jika Anda menggunakan AgentCore CLI untuk membuat gateway dan target Lambda, CLI mengonfigurasi otorisasi masuk dan otorisasi JWT-based keluar untuk Anda secara otomatis IAM-based .

catatan

Jika Anda memanggil gateway menggunakanagentcore invoke, CLI menangani otentikasi secara otomatis. Langkah-langkah di bawah ini hanya diperlukan jika Anda ingin memanggil gateway secara terprogram (misalnya, menggunakan AWS SDK atau). curl

Untuk akses terprogram, Anda akan mengotorisasi dengan yang berikut:

  • Otorisasi masuk menggunakan JWT — Dapatkan token akses dari otorisasi Amazon Cognito yang secara otomatis diatur untuk Anda dan sertakan dalam header otorisasi. Lihat contoh di bawah ini untuk mempelajari cara mendapatkan token.

  • Otorisasi keluar menggunakan IAM - AgentCore CLI mengonfigurasi izin berikut untuk Anda, sehingga Anda tidak memerlukan pengaturan tambahan:

    • Peran layanan gateway Anda memiliki izin untuk memanggil semua fungsi di Lambda (disediakan oleh kebijakan terkel BedrockAgentCoreFullAccess ola).

    • Fungsi Lambda yang dibuat dikonfigurasi dengan peran layanan gateway Anda sebagai Principal yang dapat memanggilnya.

Anda dapat memperoleh token akses yang dibuat untuk gateway Anda oleh AgentCore CLI dengan bantuan Amazon Cognito dengan mengumpulkan informasi berikut:

  • Titik akhir token — Temukan di URL Discovery dalam konfigurasi otorizer untuk gateway. Jika Anda menggunakan API, Anda dapat menemukan URL penemuan dengan mengirimkan ListGateways permintaan atau GetGateway permintaan untuk gateway Anda.

  • ID Klien — Temukan di informasi kumpulan pengguna Amazon Cognito. Jika Anda menggunakan API, Anda dapat mengirim permintaan atau ListUserPools DescribeUserPool permintaan untuk kumpulan pengguna yang terkait dengan gateway Anda.

  • Rahasia klien — Temukan di informasi klien aplikasi kumpulan pengguna Amazon Cognito. Jika Anda menggunakan API, Anda dapat mengirim DescribeUserPoolClient permintaan, menentukan ID klien dan ID kumpulan pengguna yang terkait dengan gateway Anda.

Pertama, kumpulkan nilai-nilai ini dengan salah satu metode berikut. Pilih salah satu metode berikut:

contoh
Console
  1. Dapatkan titik akhir token:

    1. Buka AgentCore konsol di https://console.aws.amazon.com/bedrock-agentcore/home #.

    2. Dari panel navigasi kiri, pilih Gateway.

    3. Di bagian Gateway, pilih gateway Anda.

    4. Di bagian Identi tas Masuk, perhatikan nilai-nilai berikut:

      • Klien yang diizinkan — ID klien yang dapat mengakses gateway.

      • URL Penemuan — Formatnya seharusnyahttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Simpan nilai-nilai berikut:

        • ${UserPoolId}— Ekstrak dari URL Discovery.

        • Titik akhir token — Pilih tautan URL Penemuan dan temukan nilainya di token_endpoint bidang.

  2. Dapatkan ID klien dan rahasia klien:

    1. Buka konsol Amazon Cognito di https://console.aws.amazon.com/cognito.

    2. Dari panel navigasi kiri, pilih Kum pulan pengguna.

    3. Pilih ID kumpulan pengguna yang terkait dengan gateway Anda.

    4. Dari panel navigasi kiri, pilih Kli en aplikasi.

    5. Pilih klien aplikasi yang ID Kliennya cocok dengan klien yang diizinkan untuk titik akhir token Anda. Simpan nilai ID.

    6. Di bawah Rahasia klien, pilih Tampilkan rahasia klien dan simpan nilai itu.

AWS CLI
  1. Jalan AgentCore get-gateway kan perintah di terminal dan tentukan ID gateway Anda dalam --gateway-identifier argumen, seperti pada contoh berikut:

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. Dari tanggapan, perhatikan discoveryUrl dari authorizerConfiguration lapangan:

    • Simpan ${UserPoolId} dari URL. Formatnya https://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration harus

    • Simpan nil allowedClients ai-nilainya. Ini adalah ID klien yang dapat mengakses titik akhir token.

    • Arahkan ke discoveryUrl dalam browser dan simpan nil token_endpoint ainya.

  3. Jalankan describe-user-pool-client perintah Amazon Cognito di terminal dan tentukan ID kumpulan pengguna dalam --user-pool-id argumen dan ID klien yang diizinkan di --client-id bidang, seperti pada contoh berikut:

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. Simpan nil ClientSecret ainya.

AWS Python SDK (Boto3)
  1. Jalankan kode Python berikut untuk menyimpan titik akhir token, ID klien, dan rahasia klien sebagai variabel:

    import requests import boto3 # Initialize AWS clients agentcore_client = boto3.client("bedrock-agentcore-control") cognito_client = boto3.client("cognito-idp") # Replace with your actual gateway ID gateway_id = "my-gateway-id" # Get discovery URL and first allowed client auth_config = agentcore_client.get_gateway(gatewayIdentifier=gateway_id)["authorizerConfiguration"]["customJWTAuthorizer"] discovery_url, client_id = auth_config["discoveryUrl"], auth_config["allowedClients"][0] # Get token endpoint from discovery URL discovery_url_json = requests.get(discovery_url).json() token_endpoint, user_pool_id = discovery_url_json["token_endpoint"], discovery_url_json["issuer"].split("/")[-1] # Get client secret client_secret = cognito_client.describe_user_pool_client( UserPoolId=user_pool_id, ClientId=client_id )["UserPoolClient"]["ClientSecret"]

Kedua, gunakan nilai yang Anda kumpulkan untuk mengakses token dari titik akhir token. Pilih salah satu metode berikut:

contoh
curl
  1. Jalankan perintah berikut di terminal, mengganti titik akhir token, ID klien, dan nilai rahasia klien.

    curl --http1.1 -X POST ${TokenEndpoint} \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=${ClientId}&client_secret=${ClientSecret}"

    Token berada di access_token bidang respons, sedangkan token_type bidang harus menentukanBearer.

Python requests package
  1. Jalankan kode Python berikut untuk mendapatkan token akses Anda. Kode mengasumsikan bahwa Anda menyimpan client_secret nilai token_endpointclient_id,, dan dari langkah sebelumnya:

    import requests import json def get_access_token(token_endpoint, client_id, client_secret): headers={ "Content-Type": "application/x-www-form-urlencoded" } payload={ "grant_type": "client_credentials", "client_id": client_id, "client_secret": client_secret } response = requests.post(token_endpoint, headers=headers, data=payload) return response.json() # Replace the argument values as necessary, if you didn't previously store them as these variables access_token_response = get_access_token( token_endpoint=token_endpoint, client_id=client_id, client_secret=client_secret ) access_token = access_token_response["access_token"]