Как я могу создать метод Python, который находит UUID стека CloudFormation с Boto? - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время мы используем:

cloudformation = environment+"-"+role
qa = QAWS()
qa.initialize(environ)
events = qa.cfn.describe_stack_events(StackName=sn)
"Some interesting stuff:
event["Timestamp"]
event["ResourceStatus"]
event["ResourceType"]
event["LogicalResourceId"]
if exists = event["ResourceStatusReason"]
"""
return events["StackEvents"]

Это работает для большинства наших стеков Cloudformation:

  • test-vpn
  • test-app

Но не для некоторых наших стеков, имеющих UUID:

  • test-rds-CRC25DFADXZR

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 11 декабря 2018

В настоящее время я сделал нечто подобное с «уникальным идентификатором», который был внутри названий стеков облачной информации. Теоретически, вы могли бы просто удалить роль и т. Д. И искать «тест» таким образом, что вы получите толькостеки, которые сделаны как 'test-vpn', 'test-activedirectory' и т. д.

import boto3
import re
from sys import argv

"""
profile = AWS CLI profile you want to use, a.k.a what account you want to run this in.
region = Self explanatory, generally eu-west-1/2 etc.
unique_id = Your unique id for the CF stacks, i.e test, ppe or prod

Example usage: python delete_stacks.py test eu-west-1 test

"""
_, profile, region, unique_id  = argv

session = boto3.Session(profile_name=profile)
client = session.client('cloudformation', region_name=region)

response = client.describe_stacks().get('Stacks',[])
stacks = []
for r in response:
    ((stacks.append(r['StackName']) if unique_id in r['StackName'] else None))

print("These are the stacks that were found")
print(stacks)


for s in stacks:
    events = client.describe_stack_events(StackName=s)
    print(events)

Это было написано на python3, я не уверен, какую версию Python вы используете для разработки, так что вы можетенужно настроить при использовании python2.

...