Public/Serverless/Property Types/Add-SAMIoTRuleEventSource.ps1

function Add-SAMIoTRuleEventSource {
    <#
    .SYNOPSIS
        Adds a IoTRule Event Source to a Serverless Application Model resource

    .DESCRIPTION
        The object describing an event source with type IoTRule.

    .LINK
        https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#iotrule

    .PARAMETER LogicalId
        The logical ID must be alphanumeric (A-Za-z0-9) and unique within the template. Use the logical name to reference the resource in other parts of the template.

    .PARAMETER Sql
        Required. The SQL statement that queries the topic. For more information, see Rules for AWS IoT in the AWS IoT Developer Guide: http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference

    .PARAMETER AwsIotSqlVersion
        The version of the SQL rules engine to use when evaluating the rule.

    .FUNCTIONALITY
        Serverless
    #>

    [OutputType('Vaporshell.Serverless.EventSource.IoTRule')]
    [cmdletbinding()]
    Param
    (
        [parameter(Mandatory = $true,Position = 0)]
        [ValidateScript( {
                if ($_ -match "^[a-zA-Z0-9]*$") {
                    $true
                }
                else {
                    $PSCmdlet.ThrowTerminatingError((New-VSError -String 'The LogicalID must be alphanumeric (a-z, A-Z, 0-9) and unique within the template.'))
                }
            })]
        [System.String]
        $LogicalId,
        [parameter(Mandatory = $true)]
        $Sql,
        [parameter(Mandatory = $false)]
        [System.String]
        $AwsIotSqlVersion
    )
    $Params = @{
        LogicalId = $LogicalId
        Type = "IoTRule"
        Properties = @{
            Sql = $Sql
        }
    }
    if ($AwsIotSqlVersion) {
        $Params["Properties"].Add("AwsIotSqlVersion",$AwsIotSqlVersion)
    }
    Add-SAMEventSource @Params | Add-ObjectDetail -TypeName 'Vaporshell.Serverless.EventSource.IoTRule'
}