$util.validate($util.matches("^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$", $ctx.args.id), "Invalid ID")

$util.validate($util.matches("[a-zA-Z0-9-]{1,1024}", $ctx.args.subAccountName), "Invalid Account Name")

#set($ctx.args.agentInstallDoc = $util.urlDecode($ctx.args.agentInstallDoc))
#set($ctx.args.agentConfDoc = $util.urlDecode($ctx.args.agentConfDoc))

$util.validate($util.matches("^(?!(^((\d{1,3}[.]){3}\d{1,3}$)|.*\.\.|.*\.-|.*-\.|.*\._|.*_\.))[a-z\d][\w.-]{1,253}[a-z\d]$", $ctx.args.subAccountBucketName), "Invalid Bucket Name")

$util.validate($util.matches("^arn:([^:\n]*):([^:\n]*):([^:\n]*):([^:\n]*):(([^:\/\n]*)[:\/])?(.*)$", $ctx.args.subAccountStackId), "Invalid Cross Account Stack ID")

$util.validate($util.matches("^arn:([^:\n]*):([^:\n]*):([^:\n]*):([^:\n]*):(([^:\/\n]*)[:\/])?(.*)$", $ctx.args.subAccountKMSKeyArn), "Invalid Cross Account KMS Key")

$util.validate($util.matches("vpc-[a-z0-9]+$", $ctx.args.subAccountVpcId), "Invalid VPC ID")

$util.validate($util.matches("^subnet-[a-z0-9]{8,1017}(,subnet-[a-z0-9]{8,1017})+$", $ctx.args.subAccountPublicSubnetIds), "Invalid Subnet IDs")

{"version": "2017-02-28", "operation": "Invoke", "payload": $util.toJson($ctx)}