DynamoDB AccessDeniedException — "not authorized to perform dynamodb:..." (dynamodb를 수행할 권한이 없습니다)

TL;DR — 귀하의 IAM 사용자/역할에는 해당 리소스에 대한 DynamoDB 작업에 대한 권한이 없습니다. 메시지에는 정확한 dynamodb: 작업과 ARN의 이름이 지정됩니다. 해당 리소스 ARN에 대한 해당 작업을 자격 증명의 IAM 정책에 추가합니다(그리고 거부 또는 이를 차단하는 조건을 확인합니다).

무엇을 의미하는가

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

IAM이 호출을 거부했습니다. 메시지는 체크리스트입니다. 주체, 작업, 리소스의 이름을 지정합니다. 세 가지 모두 명시적인 거부 없이 허용되어야 합니다. 후행 절에는 액세스를 거부한 정책 유형의 이름이 지정됩니다(ID 기반 정책, SCP, 권한 경계, 세션 정책 등). DynamoDB는 이를 HTTP 상태 400으로 반환하고 재시도할 수 없습니다. 정책(또는 자격 증명)이 변경될 때까지 동일한 요청이 실패합니다.

왜 발생하는가

  • 작업이 허용되지 않습니다 — 정책은 dynamodb:GetItem을 허용하지만 Query을 호출했거나 완전히 누락되었습니다.
  • 리소스 ARN이 일치하지 않습니다 — 정책은 table/Orders를 허용하지만 인덱스(table/Orders/index/* 필요) 또는 다른 테이블을 쿼리하고 있습니다.
  • 어딘가에 명시적인 Deny(권한 경계, SCP 또는 정책 자체)가 허용보다 우선합니다.
  • 정책 조건이 충족되지 않습니다(세분화된 액세스, 소스 IP, MFA).
  • 잘못된 자격 증명 — 귀하가 맡은 역할은 액세스 권한이 있는 역할이 아닙니다.

어떻게 해결하는가

  1. 정확한 리소스 ARN에 대한 메시지 이름에 정확한 작업을 부여합니다. GSI/LSI를 쿼리할 때 인덱스 ARN(.../index/*)을 포함합니다.
  2. 우선 거부 확인 — 권한 경계 및 SCP 비트가 허용됩니다.
  3. 세밀한 조건(dynamodb:LeadingKeys 등)이 실제로 요청과 일치하는지 확인하세요.
  4. aws sts get-caller-identity신원 확인 — 귀하가 생각하는 주체가 맞는지 확인하세요.

정책 예시

{
  "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에서 열기

DynoTable은 CLI가 모든 연결에서 사용하는 것과 동일한 0 프로필을 확인합니다. (Connect an AWS account)이므로 IAM을 수정하거나 전환할 때 프로필을 다시 시작하지 않고도 앱이 이를 선택합니다. ⌘P를 눌러 프로필 전환기 및 활성 상태인 ID 확인 — 자격 증명 상태 점 토큰이 세션 중간에 만료되면 인라인 재연결 작업으로 빨간색으로 변합니다.

정책이 dynamodb:ListTables을 거부하지만 명명된 테이블에 대한 읽기를 허용하는 경우, DynoTable은 여전히 해당 테이블을 직접 열 수 있습니다: ⌘KOpen table by name은 목록 호출을 건너뛰고 테이블의 GetItem/Query로 바로 이동합니다. 당신은 입력합니다. 액세스가 작동하면 시각적 query builder 필터 칩에서 Query-vs-Scan을 파생하므로 정책이 허용한다는 것을 증명할 수 있습니다. 당신에게 필요한 수술. 오류 이름이 GSI/LSI ARN인 경우 dynamodb:Query를 부여합니다. table/YourTable/index/* — 인덱스 권한은 테이블 수준에서 흔히 발생하는 실수입니다. 올바르게 보일 수 있습니다.

관련 오류

출처

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.