code: func (lad *LogAggregatorDecorator) DecorateService(context map[string]interface{},
  	serviceName string,
  	template *gocf.Template,
  	S3Bucket string,
  	S3Key string,
  	buildID string,
  	awsSession *session.Session,
  	noop bool,
  	logger *logrus.Logger) error {
  
  	// Create the Kinesis Stream
  	template.AddResource(lad.kinesisStreamResourceName, lad.kinesisResource)
  
  	// Create the IAM role
  	putRecordPriv := spartaIAMBuilder.Allow("kinesis:PutRecord").
  		ForResource().
  		Attr(lad.kinesisStreamResourceName, "Arn").
  		ToPolicyStatement()
  	passRolePriv := spartaIAMBuilder.Allow("iam:PassRole").
  		ForResource().
  		Literal("arn:aws:iam::").
  		AccountID(":").
  		Literal("role/").
  		Literal(lad.iamRoleNameResourceName).
  		ToPolicyStatement()
  
  	statements := make([]spartaIAM.PolicyStatement, 0)
  	statements = append(statements,
  		putRecordPriv,
  		passRolePriv,
  	)
  	iamPolicyList := gocf.IAMRolePolicyList{}
  	iamPolicyList = append(iamPolicyList,
  		gocf.IAMRolePolicy{
  			PolicyDocument: sparta.ArbitraryJSONObject{
  				"Version":   "2012-10-17",
  				"Statement": statements,
  			},
  			PolicyName: gocf.String("LogAggregatorPolicy"),
  		},
  	)
  	iamLogAggregatorRole := &gocf.IAMRole{
  		RoleName:                 gocf.String(lad.iamRoleNameResourceName),
  		AssumeRolePolicyDocument: LogAggregatorAssumePolicyDocument,
  		Policies:                 &iamPolicyList,
  	}
  	template.AddResource(lad.iamRoleNameResourceName, iamLogAggregatorRole)
  
  	return nil
  }
docs: // DecorateService annotates the service with the Kinesis hook