欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python3?Boto3包刪除AWS?CloudFormation的棧(Stacks)

 更新時間:2024年01月08日 09:38:18   作者:scruffybear  
這篇文章主要介紹了如何使用Python3?Boto3刪除AWS?CloudFormation的棧(Stacks),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

小結

本文記錄了使用Python3的Boto3包刪除AWS CloudFormation的棧(Stacks)

問題及解決

有關Json文件的輸入和輸出

json.loads函數是將一個字符串(String)輸入轉換為字典類型(dictionary)輸出
json.dumps函數是將一個字典類型(dictionary)輸入轉換為字符串(String)輸出

當出現JSON object must be str, bytes or bytearray, not dict或者'dict' object has no attribute 'read'的錯誤時,需要檢查以上輸入類型是否正確。

對于datetime.datetime not JSON serializable的問題,也就是日期類型無法進行Json序列化,可以使用以下指令解決問題,應該是default=str這個參數起了作用,將日期類型處理為了字符串:

json_formatted_str = json.dumps(task_definition, indent=2, sort_keys=True, default=str)

使用Python3及正則表達式查找字符串包含某個子字符串

使用以下辦法:

exp = re.compile(stack_name_to_Search)
stack_name = cfn_stack['StackName']
if re.search(exp, stack_name):
  ....

以上是查找 stack_name 這個字符串是否包含stack_name_to_Search這個子字符串。

使用Python3 Boto3刪除AWS CloudFormation的棧(Stacks)

def delete_skms_stack(stack_name):
    cf_client = boto3.client('cloudformation')
    #list all the stacks excepts 'DELETED_STACKS'
    response = cf_client.list_stacks(
        StackStatusFilter=[
        'CREATE_IN_PROGRESS','CREATE_FAILED','CREATE_COMPLETE',
        'ROLLBACK_IN_PROGRESS','ROLLBACK_FAILED','ROLLBACK_COMPLETE',
        'DELETE_IN_PROGRESS','DELETE_FAILED',
        'UPDATE_IN_PROGRESS','UPDATE_COMPLETE_CLEANUP_IN_PROGRESS','UPDATE_COMPLETE','UPDATE_FAILED','UPDATE_ROLLBACK_IN_PROGRESS','UPDATE_ROLLBACK_FAILED','UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS','UPDATE_ROLLBACK_COMPLETE','REVIEW_IN_PROGRESS',
        'IMPORT_IN_PROGRESS','IMPORT_COMPLETE','IMPORT_ROLLBACK_IN_PROGRESS','IMPORT_ROLLBACK_FAILED','IMPORT_ROLLBACK_COMPLETE'
        ]
    )
    #Stack name pattern
    exp = re.compile(stack_name)
    print('--------------------')
    print(response['StackSummaries'])
    for cfn_stack in response['StackSummaries']:
        stack_name = cfn_stack['StackName']
        #match = re.search(regex_pattern,stack_name)
        if re.search(exp, stack_name):
        #Custome conditions can be implemented here
            try:
                response = cf_client.delete_stack(StackName=stack_name)
                stack_delete_status = cf_client.describe_stacks(StackName=stack_name)
                logger.info("Delete stack: " + json.dumps(response))
                while stack_delete_status['Stacks'][0]['StackStatus'] == 'DELETE_IN_PROGRESS':
                    time.sleep(10)
                    stack_delete_status = cf_client.describe_stacks(StackName=stack_name)
                    logger.info("Delete stack status: " + stack_delete_status['Stacks'][0]['StackStatus'])
                    if stack_delete_status['Stacks'][0]['StackStatus'] == 'DELETE_FAILED':
                        logger.warning('Delete failed. Retry delete')
                        resources = cf_client.delete_stack(StackName=stack_name)
                        return resources
                    elif stack_delete_status['Stacks'][0]['StackStatus'] == 'DELETE_IN_PROGRESS':
                        continue
                    else:
                        logger.info("Delete stack complete")
            except Exception as e:
                logger.error(e) 

以上代碼執(zhí)行效果如下:

INFO:__main__:Delete stack status: DELETE_IN_PROGRESS
INFO:__main__:Delete stack status: DELETE_IN_PROGRESS
INFO:__main__:Delete stack status: DELETE_IN_PROGRESS
INFO:__main__:Delete stack status: DELETE_IN_PROGRESS
ERROR:__main__:An error occurred (ValidationError) when calling the DescribeStacks operation: Stack with id ECS-Console-V2-Service-sammperso-johnvpc-svc-John-VPC-Cluster-8c3e39c8 does not exist

其中最后一個錯誤是因為CloudFormation的棧(Stacks)已經被刪除,找不到了,所以是正常返回。

參考

Digital Ocean: Python Pretty Print JSON
Stackoverflow: JSON object must be str, bytes or bytearray, not dict
Stackoverflow: ‘dict’ object has no attribute ‘read’
Stackoverflow: How can I overcome “datetime.datetime not JSON serializable”?
Stackoverflow: How to delete multiple Cloudformation stacks at once?
Stackoverflow: Python regex check if string contains any of words

到此這篇關于如何使用Python3 Boto3刪除AWS CloudFormation的棧(Stacks)的文章就介紹到這了,更多相關Python3 Boto3刪除AWS CloudFormation的棧內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 帶你一文搞懂Python文件的讀寫操作

    帶你一文搞懂Python文件的讀寫操作

    讀寫文件是最常見的IO操作,Python內置了讀寫文件的函數,下面這篇文章主要給大家介紹了關于Python文件讀寫操作的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Python?Rich增加終端顯示視覺效果

    Python?Rich增加終端顯示視覺效果

    Python開發(fā)中,命令行界面(CLI)經常被用于交互和數據展示,雖然命令行界面通常被視為簡單、枯燥的文本顯示區(qū)域,通過Python的Rich庫,為命令行界面帶來更多生機和視覺吸引力,本文帶大家探索Rich功能強大的Python庫,增強終端文本渲染,使輸出更具有吸引力和可讀性
    2024-01-01
  • python的幾種矩陣相乘的公式詳解

    python的幾種矩陣相乘的公式詳解

    這篇文章主要介紹了python的幾種矩陣相乘的公式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python 基于opencv操作攝像頭

    python 基于opencv操作攝像頭

    這篇文章主要介紹了python 基于opencv操作攝像頭的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 詳解Django admin高級用法

    詳解Django admin高級用法

    這篇文章主要介紹了Django admin高級用法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • python+Selenium自動化測試——輸入,點擊操作

    python+Selenium自動化測試——輸入,點擊操作

    這篇文章主要介紹了python+Selenium自動化測試——輸入,點擊操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • pytest allure添加環(huán)境信息實例講解

    pytest allure添加環(huán)境信息實例講解

    這篇文章主要介紹了pytest allure添加環(huán)境信息實例,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Python?OpenCV形態(tài)學運算示例詳解

    Python?OpenCV形態(tài)學運算示例詳解

    這篇文章主要為大家介紹了OpenCV中的幾個形態(tài)學運算,例如:腐蝕&膨脹、開&閉運算、梯度運算、頂帽運算黑帽運算,感興趣的可以了解一下
    2022-04-04
  • python變量的存儲原理詳解

    python變量的存儲原理詳解

    這篇文章主要介紹了python變量的存儲原理詳解,對于python而言,python的一切變量都是對象,變量的存儲,采用了引用語義的方式,存儲的只是一個變量的值所在的內存地址,而不是這個變量的只本身,需要的朋友可以參考下
    2019-07-07
  • Tensorflow 如何從checkpoint文件中加載變量名和變量值

    Tensorflow 如何從checkpoint文件中加載變量名和變量值

    這篇文章主要介紹了Tensorflow 如何從checkpoint文件中加載變量名和變量值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05

最新評論