func (r *AWSRedshiftClusterSecurityGroup) UnmarshalJSON(b []byte) error {
	type Properties AWSRedshiftClusterSecurityGroup
	res := &struct {
		Type       string
		Properties *Properties
	}{}
	if err := json.Unmarshal(b, &res); err != nil {
		fmt.Printf("ERROR: %s\n", err)
		return err
	}
	if res.Properties != nil {
		*r = AWSRedshiftClusterSecurityGroup(*res.Properties)
	}
	return nil
}
UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer
AWS CloudFormation resource object, and just keeps the 'Properties' field.
package cloudformation
import (
	"encoding/json"
	"errors"
	"fmt"
)
type AWSRedshiftClusterSecurityGroup struct {
	Description string `json:"Description,omitempty"`
	Tags []Tag `json:"Tags,omitempty"`
}
func (r *AWSRedshiftClusterSecurityGroup) AWSCloudFormationType() string {
	return "AWS::Redshift::ClusterSecurityGroup"
}
func (r *AWSRedshiftClusterSecurityGroup) MarshalJSON() ([]byte, error) {
	type Properties AWSRedshiftClusterSecurityGroup
	return json.Marshal(&struct {
		Type       string
		Properties Properties
	}{
		Type:       r.AWSCloudFormationType(),
		Properties: (Properties)(*r),
	})
}