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 actionMengapa itu terjadi
- Tindakan ini tidak diperbolehkan — kebijakan memberikan
dynamodb:GetItemtetapi Anda memanggilQuery, atau kebijakan tersebut hilang seluruhnya. - Sumber daya ARN tidak cocok — kebijakan mengizinkan
table/Orderstetapi Anda menanyakan indeks (membutuhkantable/Orders/index/*) atau tabel lain. Denyeksplisit 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
- Berikan tindakan yang tepat nama pesan, untuk sumber daya yang tepat ARN. Sertakan indeks ARNs (
.../index/*) saat Anda menanyakan GSI/LSI. - Periksa penolakan yang utama — batas izin dan ketukan SCP diperbolehkan.
- Verifikasi kondisi terperinci (
dynamodb:LeadingKeysdll.) benar-benar sesuai dengan permintaan Anda. - 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: ⌘K → Buka 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: ⌘K → Open
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
- Token keamanan tidak valid — kredensial bad/expired (vs. kredensial valid tanpa izin).
- Wilayah tidak ada di konfigurasi
- Pelajari: Menjalankan DynamoDB Lokal — kembangkan secara lokal di mana kebijakan IAM tidak berlaku.
Sumber
- Memecahkan masalah pesan kesalahan akses ditolak — Panduan Pengguna IAM (diverifikasi 13-07-2026)
- Menggunakan ketentuan kebijakan IAM untuk kontrol akses yang lebih detail — Panduan Pengembang Amazon DynamoDB (diverifikasi 13-07-2026)
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB (diverifikasi 13-07-2026)