Ошибка проверки ... Член должен соответствовать шаблону регулярного выражения: arn: aws: iam :: - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь транслировать rds через поток данных Kinesis, но он выдаёт мне эту ошибку:

botocore.exceptions.ClientError: Произошла ошибка (ValidationException) при вызове операции PutRecord: 1 обнаружена ошибка проверки: значение 'arn: aws: kinesis: us-west-2: xxxxxxxxxx: stream / rds-temp-приводит-stream' в «streamName» не может удовлетворить ограничение: элемент должен удовлетворять обычному образец выражения: [a-zA-Z0-9 _.-] +

Что я могу сделать, чтобы это исправить?


import json
import boto3
from datetime import datetime

from pymysqlreplication import BinLogStreamReader
from pymysqlreplication.row_event import (
  DeleteRowsEvent,
  UpdateRowsEvent,
  WriteRowsEvent,
)

class DateTimeEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, datetime):
            return o.isoformat()

        return json.JSONEncoder.default(self, o)

def main():
  mysql = {
      "host": "",
      "port":,
      "user": "",
      "passwd": "",
      "db": ""}
  kinesis = boto3.client("kinesis", region_name = 'us-west-2')

  stream = BinLogStreamReader(
    connection_settings = mysql,
    server_id=100,
    blocking = True,
    log_file='mysql-bin.000003',
    resume_stream=True,
    only_events=[DeleteRowsEvent, WriteRowsEvent, UpdateRowsEvent]) 
  for binlogevent in stream:
    for row in binlogevent.rows:
      print row
      event = {"schema": binlogevent.schema,
      "table": binlogevent.table,
      "type": type(binlogevent).__name__,
      "row": row
      }

      kinesis.put_record(StreamName="jhgjh", Data=json.dumps(event, cls=DateTimeEncoder), PartitionKey="default")
      #print json.dumps(event)

if __name__ == "__main__":
   main()

1 Ответ

2 голосов
/ 29 апреля 2019

удалить 'arn: aws: kinesis: us-west-2: xxxxxxxxxx: stream / rds-temp-приводит-поток' это из имени потока.Просто поместите имя потока как "rds-temp-приводит-поток"

...