Имена потоков уникальны для каждой учетной записи и региона.Таким образом, вы не можете воссоздать поток, который уже существует.Согласно документам create_stream :
Имя потока идентифицирует поток.Имя относится к учетной записи AWS, используемой приложением.Это также ограничено областью AWS.То есть два потока в двух разных учетных записях могут иметь одно и то же имя, а два потока в одной и той же учетной записи, но в двух разных регионах, могут иметь одинаковое имя.
Вам необходимо проверить,вам нужно создать поток или управлять ошибкой.Что-то вроде:
try:
client = boto3.client('kinesis',region_name="us-east-2")
response = client.create_stream(StreamName='TwitterStream',ShardCount=1)
print('stream {} created'.format(stream_name))
except ResourceInUseException:
print('stream {} already exists'.format(stream_name))
api = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret)
kinesis = boto3.client('kinesis')
Поймите, что когда создается поток, вам нужно будет подождать, пока он не станет ACTIVE
- их нельзя использовать мгновенно.
Сказав это, если выдействительно хотите удалить его сначала измените код на что-то вроде:
try:
client = boto3.client('kinesis',region_name="us-east-2")
response = client.create_stream(StreamName='TwitterStream',ShardCount=1)
print('stream {} created'.format(stream_name))
except ResourceInUseException:
print('stream {} already exists'.format(stream_name))
client.delete_stream(StreamName='TwitterStream')
status = 'not set'
while( status != 'ACTIVE' )
describe_stream_response = client.describe_stream(stream_name)
description = describe_stream_response.get('StreamDescription')
status = description.get('StreamStatus')
time.sleep(1)
api = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret)
kinesis = boto3.client('kinesis')