Установите роль IAM в boto, используя KCL - PullRequest
0 голосов
/ 26 сентября 2019

Kinesis Client Library (KCL) возвращает эту ошибку при попытке запустить файл conn_kinesis_test.py в их github.

boto.exception.JSONResponseError: JSONResponseError: 400 Bad Request
{u'Message': u'User: user:arn is not authorized to perform: kinesis:CreateStream on resource: resource:arn', u'__type': u'AccessDeniedException'}

Итак, я знаю, что мой пользователь не имеет доступа к этому ресурсу.Я пытался использовать aws-cli из терминала:

aws kinesis list-streams --region eu-west-1 --profile prof

Возвращает:

{
    "StreamNames": [
        "test_stream"
    ]
}

Затем я знаю, что мне нужно повторить это поведение в коде Python.Код:

from boto import kinesis
conn = kinesis.connect_to_region(region_name = region)
    #conn=boto.connect_kinesis()
    try:
        status = get_stream_status(conn, stream_name)
        if 'DELETING' == status:
            print('The stream: {s} is being deleted, please rerun the script.'.format(s=stream_name))
            sys.exit(1)
        elif 'ACTIVE' != status:
            wait_for_stream(conn, stream_name)
    except:
        # We'll assume the stream didn't exist so we will try to create it with just one shard
        conn.create_stream(stream_name, 1)
        wait_for_stream(conn, stream_name)

Я искал, как настроить IAM_ROLE, используя boto 2, и ничего не ясно.Они говорят о методе STS, но он не работает.Я попытался воспроизвести поведение from boto.s3.connection import S3Connection, а затем настроить глобальную переменную со значением IAM_ROLE, но ни одна из них не работает.

Возможно ли это?

...