← Semua pembelajaran / AWS untuk AI Engineer
Fase 3 · Bedrock Dasar

Bedrock — akses model

Model di Bedrock harus diaktifkan aksesnya per akun per region. Ini lapisan izin yang terpisah dari IAM, dan hampir semua orang tersandung di sini sekali.

Intisari

  • Akses model diberikan per akun per region, lewat konsol Bedrock.
  • Ini bukan IAM. Policy yang sempurna tetap gagal kalau akses modelnya belum diaktifkan.
  • Gejalanya: AccessDeniedException yang menyebut model, bukan menyebut policy.
  • Sebagian model butuh pengisian detail pemakaian sebelum disetujui.
  • Ganti region berarti mengaktifkan ulang — pengaturan tidak ikut berpindah.

Dua lapisan izin yang sering tertukar

Akses modelIAM policy
MenjawabApakah akun ini boleh memakai model ini?Apakah identitas ini boleh memanggil API-nya?
Diatur diKonsol Bedrock → Model accessIAM / CDK
CakupanPer akun per regionPer identitas
Butuh keduanya?Ya. Keduanya harus benar.

Mengaktifkan

  1. Buka konsol Amazon Bedrock, pastikan region-nya benar (pojok kanan atas).
  2. Masuk ke Model access.
  3. Pilih model yang kamu butuhkan. Untuk roadmap ini: satu keluarga Claude dan satu model embedding.
  4. Sebagian model meminta detail kasus pemakaian — isi apa adanya.
  5. Tunggu status menjadi Access granted. Sebagian instan, sebagian butuh beberapa menit.

Region adalah kesalahan nomor satu di sini. Kamu mengaktifkan model di us-east-1, lalu kodemu memanggil dengan region default dari profil yang ternyata ap-southeast-1. Pesannya terlihat seperti masalah izin, padahal cuma salah region. Cetak boto3.Session().region_name sebelum menebak apa pun.

Memeriksa dari kode

import boto3

kelola = boto3.client("bedrock", region_name="us-east-1")

for m in kelola.list_foundation_models()["modelSummaries"]:
    if m["providerName"] == "Anthropic":
        print(m["modelId"])

Perhatikan: daftar ini menampilkan model yang ada di region tersebut, belum tentu yang aksesnya sudah kamu aktifkan. Cara paling jujur untuk memastikan adalah mencoba memanggilnya:

from botocore.exceptions import ClientError

runtime = boto3.client("bedrock-runtime", region_name="us-east-1")

try:
    runtime.converse(
        modelId=MODEL_ID,
        messages=[{"role": "user", "content": [{"text": "tes"}]}],
        inferenceConfig={"maxTokens": 5},
    )
    print("akses OK")
except ClientError as e:
    kode = e.response["Error"]["Code"]
    print("gagal:", kode, "-", e.response["Error"]["Message"])

Membaca pesan errornya

KodeArtinyaPerbaikan
AccessDeniedException menyebut modelAkses model belum aktifAktifkan di konsol, region yang benar
AccessDeniedException menyebut action IAMPolicy kurangTambahkan bedrock:InvokeModel
ValidationException menyebut modelIdModel tidak ada di region iniPindah region, atau pakai inference profile
ResourceNotFoundExceptionModel ID salah ketikCocokkan dengan list_foundation_models

Latihan: aktifkan akses ke satu model Claude dan satu model embedding di us-east-1, lalu jalankan skrip pemeriksa di atas untuk keduanya. Setelah itu jalankan skrip yang sama dengan region_name yang belum kamu aktifkan, dan baca perbedaan pesan errornya — itu latihan diagnostik yang akan sering terpakai.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.