Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah kesalahan ABAC umum untuk Streams DynamoDB
Jika Anda menerima AccessDeniedException atau kondisi berbasis tag Anda tidak berperilaku seperti yang diharapkan setelah Anda mengaktifkan ABAC untuk Streams DynamoDB, gunakan topik ini untuk mendiagnosis dan menyelesaikan penyebab paling umum.
Service-specific kunci kondisi tidak dianggap sebagai kunci kondisi yang valid. Jika Anda telah menggunakan kunci tersebut dalam kebijakan, kunci ini mengakibatkan kesalahan. Anda harus mengganti kunci kondisi khusus layanan dengan kunci kondisi yang sesuai untuk mengimplementasikan ABAC untuk Streams DynamoDB.
Misalnya, Anda telah menggunakan kunci dynamodb:ResourceTag kondisi dalam kebijakan yang menjalankan GetRecords permintaan pada aliran. Permintaan gagal denganAccessDeniedException. Contoh berikut menunjukkan kebijakan yang salah dengan kunci dynamodb:ResourceTag kondisi.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "dynamodb:ResourceTag/Team": "Analytics" } } } ] }
Untuk memperbaiki masalah ini, ganti kunci dynamodb:ResourceTag kondisi denganaws:ResourceTag, seperti yang ditunjukkan pada contoh berikut.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Analytics" } } } ] }
Jika Anda baru saja mengaktifkan Streams ABAC, perubahan mungkin belum menyebar. Memperbarui status Streams ABAC adalah operasi asinkron. Tunggu beberapa menit dan coba lagi permintaan Anda.
Setelah tabel induk dihapus, aliran akan tetap ada selama 24 jam sebelum dihapus. Selama jendela 24 jam ini, Anda dapat mengelola tag aliran menggunakan perintah CLI atau SDK (tag-resource,untag-resource, danlist-tags-of-resource) dengan ARN aliran. Anda tidak dapat menggunakan konsol atau CloudFormation memodifikasi tag pada aliran yang tabel induknya tidak ada lagi.
Jika Anda menerima kesalahan saat mencoba menandai melalui konsol, gunakan CLI sebagai gantinya:
aws dynamodb tag-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000 \ --tags Key=environment,Value=production
Untuk memverifikasi tag yang ada di streaming dengan tabel induk dihapus:
aws dynamodb list-tags-of-resource \ --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/DeletedTable/stream/2024-01-01T00:00:00.000
Jika Anda menerimaResourceNotFoundException, periode retensi 24 jam telah kedaluwarsa dan streaming tidak ada lagi.
Anda dapat memilih keluar dari Streaming ABAC sendiri hanya jika hal berikut ini benar:
-
Anda menggunakan cara layanan mandiri untuk memilih masuk melalui konsol DynamoDB.
-
Anda memilih keluar dalam waktu tujuh hari kalender setelah memilih masuk.
Jika Streams ABAC diaktifkan untuk akun Anda melalui Dukungan, Anda tidak akan dapat memilih keluar melalui konsol DynamoDB. Untuk memilih keluar, hubungi Dukungan.
CloudFormation penerapan yang membuat atau memperbarui tabel dengan aliran mungkin gagal jika peran IAM tidak memiliki izin yang diperlukan. Secara khusus, peran harus memiliki dynamodb:TagResource dan dynamodb:UntagResource izin untuk sumber daya aliran. Ini berlaku untuk kedua jenis AWS::DynamoDB::GlobalTable sumber daya, AWS::DynamoDB::Table dan memengaruhi tag aliran eksplisit dan tag tingkat tumpukan yang diwariskan.
Untuk mengatasi masalah ini, perbarui kebijakan IAM peran CloudFormation layanan Anda untuk menyertakan izin penandaan aliran:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:TagResource", "dynamodb:UntagResource" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*/stream/*" ] } ] }