{"record":{"id":"88961086238e33ad","repo":"risingwavelabs/risingwave","slug":"table-not-found-889610","errorCode":null,"errorMessage":"table {} not found","messagePattern":"table (.+?) not found","errorType":"validation","errorClass":"SinkError::DynamoDb","httpStatus":null,"severity":"error","filePath":"src/connector/src/sink/dynamodb.rs","lineNumber":173,"sourceCode":"    crate::impl_validate_sink_unknown_fields!();\n\n    async fn validate(&self) -> Result<()> {\n        risingwave_common::license::Feature::DynamoDbSink\n            .check_available()\n            .map_err(|e| anyhow::anyhow!(e))?;\n        let client = (self.config.build_client().await)\n            .context(\"validate DynamoDB sink error\")\n            .map_err(SinkError::DynamoDb)?;\n\n        let table_name = &self.config.table;\n        let output = client\n            .describe_table()\n            .table_name(table_name)\n            .send()\n            .await\n            .map_err(|e| anyhow!(e))?;\n        let Some(table) = output.table else {\n            return Err(SinkError::DynamoDb(anyhow!(\n                \"table {} not found\",\n                table_name\n            )));\n        };\n        if !matches!(table.table_status(), Some(TableStatus::Active)) {\n            return Err(SinkError::DynamoDb(anyhow!(\n                \"table {} is not active\",\n                table_name\n            )));\n        }\n        let rw_pk_names = rw_pk_names(&self.schema, &self.pk_indices)?;\n        let dynamodb_keys = dynamodb_key_schema_names(table_name, table.key_schema())?;\n        validate_pk_matches_dynamodb_key_schema(table_name, &rw_pk_names, &dynamodb_keys)?;\n\n        Ok(())\n    }\n\n    async fn new_log_sinker(&self, _writer_param: SinkWriterParam) -> Result<Self::LogSinker> {","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/connector/src/sink/dynamodb.rs#L155-L191","documentation":"During DynamoDB sink validation, the connector calls DescribeTable on the target table. AWS returned a successful response but the `table` field is None, meaning the named table does not exist in the DynamoDB region/endpoint. The sink refuses to validate because it cannot check the key schema or status of a nonexistent table.","triggerScenarios":"CREATE SINK ... WITH (connector='dynamodb') where the `table` option names a table that does not exist in the configured AWS region/account, or DescribeTable succeeds against a different endpoint than intended.","commonSituations":"Typo in the table name, table created in a different AWS region or account than the credentials resolve to, table deleted after creation, or using a local test endpoint (e.g. dynamodb-local) while the table was created elsewhere.","solutions":["Create the DynamoDB table first (aws dynamodb create-table) before creating the sink.","Verify the `table` option spelling exactly matches the DynamoDB table name.","Confirm the AWS region and credentials used by the sink point at the account/region where the table exists.","If using a custom endpoint (e.g. dynamodb-local), create the table in that endpoint before validating the sink."],"exampleFix":"// before: sink created before table exists\nCREATE SINK s FROM mv WITH (connector='dynamodb', table='events');\n// after: ensure the table exists first, then create the sink\naws dynamodb create-table --table-name events --attribute-definitions AttributeName=pk,AttributeType=S --key-schema AttributeName=pk,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1\nCREATE SINK s FROM mv WITH (connector='dynamodb', table='events');","handlingStrategy":"validation","validationCode":"aws dynamodb describe-table --table-name events --region <region>  # must succeed before CREATE SINK","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Create the DynamoDB table before declaring the sink.","Script `aws dynamodb wait table-exists` into deployment pipelines.","Pin and verify the AWS region in sink config matches where tables are created."],"tags":["aws","dynamodb","sink","resource-not-found","validation"],"backgroundTag":"entity-not-found","analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}