DynamoDB AccessDeniedException — "not authorized to perform dynamodb:..."

TL;DR — Pengguna IAM/role Anda tidak memiliki izin untuk tindakan DynamoDB pada sumber daya tersebut. Pesan tersebut menyebutkan tindakan dynamodb: dan ARN yang tepat — tambahkan tindakan tersebut untuk sumber daya ARN tersebut ke kebijakan IAM identitas (dan periksa Tolak atau kondisi yang memblokirnya).

Apa artinya

AccessDeniedException: User: arn:aws:iam::123456789012:user/app is not authorized to
perform: dynamodb:Query on resource: arn:aws:dynamodb:us-east-1:123456789012:table/Orders
because no identity-based policy allows the dynamodb:Query action

Mengapa itu terjadi

  • Tindakan ini tidak diperbolehkan — kebijakan memberikan dynamodb:GetItem tetapi Anda memanggil Query, atau kebijakan tersebut hilang seluruhnya.
  • Sumber daya ARN tidak cocok — kebijakan mengizinkan table/Orders tetapi Anda menanyakan indeks (membutuhkan table/Orders/index/*) atau tabel lain.
  • Deny eksplisit di suatu tempat (batas izin, SCP, atau kebijakan itu sendiri) mengesampingkan izin.
  • Kondisi kebijakan tidak terpenuhi (akses terperinci dynamodb:LeadingKeys, IP sumber, MFA).
  • Kredensial salah — peran yang Anda ambil bukanlah peran yang memiliki akses.

Bagaimana cara memperbaikinya

  1. Berikan tindakan yang tepat nama pesan, untuk sumber daya yang tepat ARN. Sertakan indeks ARNs (.../index/*) saat Anda menanyakan GSI/LSI.
  2. Periksa penolakan yang utama — batas izin dan ketukan SCP diperbolehkan.
  3. Verifikasi kondisi terperinci (dynamodb:LeadingKeys dll.) benar-benar sesuai dengan permintaan Anda.
  4. Konfirmasi identitas dengan aws sts get-caller-identity — pastikan itu adalah prinsipal yang Anda pikirkan.

Contoh kebijakan

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:PutItem"],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
        "arn:aws:dynamodb:us-east-1:123456789012:table/Orders/index/*"
      ]
    }
  ]
}

DynoTable menyelesaikan profil ~/.aws yang sama dengan yang digunakan CLI Anda pada setiap koneksi (Hubungkan akun AWS), jadi ketika Anda memperbaiki IAM atau beralih profil aplikasi mengambilnya tanpa memulai ulang. Tekan ⌘P untuk membuka pengalih profil dan konfirmasikan identitas mana yang aktif — titik status kredensial berubah menjadi merah dengan tindakan Sambungkan kembali sebaris saat token habis di tengah sesi.

Jika kebijakan Anda menolak dynamodb:ListTables namun mengizinkan pembacaan pada tabel bernama, DynoTable masih dapat membuka tabel itu secara langsung: ⌘KBuka tabel oleh name melewatkan panggilan daftar dan langsung menuju ke GetItem/Query di atas tabel Anda mengetik. Setelah akses berfungsi, visual pembuat kueri memperoleh Query-vs-Scan dari pil filter Anda sehingga Anda dapat membuktikan bahwa kebijakan tersebut mengizinkannya operasi yang Anda perlukan. Jika kesalahan menyebutkan nama GSI/LSI ARN, berikan dynamodb:Query di table/YourTable/index/* - izin indeks sering terjadi pada level tabel memungkinkan terlihat benar.

Buka di DynoTable

DynoTable memakai profil ~/.aws yang sama dengan CLI Anda pada setiap koneksi (Menghubungkan akun AWS), jadi saat Anda memperbaiki IAM atau berganti profil, aplikasi langsung mengikutinya tanpa perlu dimulai ulang. Tekan ⌘P untuk membuka pengalih profil dan memastikan identitas mana yang aktif — titik status kredensial berubah merah dengan aksi Reconnect inline saat token kedaluwarsa di tengah sesi.

Jika kebijakan Anda menolak dynamodb:ListTables tetapi mengizinkan baca pada tabel tertentu, DynoTable tetap bisa membuka tabel itu langsung: ⌘KOpen table by name melewati panggilan list dan langsung ke GetItem/Query pada tabel yang Anda ketik. Setelah akses berfungsi, pembuat kueri visual menurunkan Query-vs-Scan dari pil filter Anda sehingga Anda dapat membuktikan kebijakan mengizinkan operasi yang Anda butuhkan. Jika kesalahan menyebut ARN GSI/LSI, berikan dynamodb:Query pada table/YourTable/index/* — izin index adalah hal yang sering terlewat padahal izin di tingkat tabel terlihat sudah benar.

Kesalahan terkait

Sumber

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.