import boto3 import logging
logger = logging.getLogger() logger.setLevel(logging.INFO)
def handler(event, context):
logger.info(f"updating cfn-vpn stack {event['StackName']} parameter AssociateSubnets with value {event['AssociateSubnets']}") if event['AssociateSubnets'] == 'false': logger.info(f"terminating current vpn sessions to {event['ClientVpnEndpointId']}") ec2 = boto3.client('ec2') resp = ec2.describe_client_vpn_connections(ClientVpnEndpointId=event['ClientVpnEndpointId']) for conn in resp['Connections']: if conn['Status']['Code'] == 'active': ec2.terminate_client_vpn_connections( ClientVpnEndpointId=event['ClientVpnEndpointId'], ConnectionId=conn['ConnectionId'] ) logger.info(f"terminated session {conn['ConnectionId']}") client = boto3.client('cloudformation') logger.info(client.update_stack( StackName=event['StackName'], UsePreviousTemplate=True, Capabilities=['CAPABILITY_IAM'], Parameters=[ { 'ParameterKey': 'AssociateSubnets', 'ParameterValue': event['AssociateSubnets'] } ] )) return 'OK'