可以在CloudFormation的堆栈模板中加入AWS Lambda函数以在堆栈删除时自动执行IAM角色的销毁操作。以下是示例代码:
Resources:
MyIAMRole:
Type: AWS::IAM::Role
Properties:
RoleName: my-iam-role-name
# 角色的其他属性
CleanupFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: role-cleanup-function
Runtime: python3.7
Handler: index.handler
Timeout: 30
Environment:
Variables:
ROLE_TO_CLEANUP: !Ref MyIAMRole
Code:
ZipFile: |
import boto3
import os
def handler(event, context):
iam = boto3.client('iam')
role_name = os.environ['ROLE_TO_CLEANUP']
iam.delete_role(RoleName=role_name)
上述代码中,定义了一个名为MyIAMRole的IAM角色,以及一个名为CleanupFunction的AWS Lambda函数。其中CleanupFunction函数会在堆栈删除时执行,通过获取ROLE_TO_CLEANUP变量(即MyIAMRole角色的引用),并使用IAM客户端删除该角色。