code: func NewSNSReactor(reactor SNSReactor,
  	snsTopic gocf.Stringable,
  	additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error) {
  
  	reactorLambda := func(ctx context.Context, snsEvent awsLambdaEvents.SNSEvent) (interface{}, error) {
  		return reactor.OnSNSEvent(ctx, snsEvent)
  	}
  
  	lambdaFn, lambdaFnErr := sparta.NewAWSLambda(reactorName(reactor),
  		reactorLambda,
  		sparta.IAMRoleDefinition{})
  	if lambdaFnErr != nil {
  		return nil, errors.Wrapf(lambdaFnErr, "attempting to create reactor")
  	}
  
  	lambdaFn.Permissions = append(lambdaFn.Permissions, sparta.SNSPermission{
  		BasePermission: sparta.BasePermission{
  			SourceArn: snsTopic,
  		},
  	})
  	if len(additionalLambdaPermissions) != 0 {
  		lambdaFn.RoleDefinition.Privileges = additionalLambdaPermissions
  	}
  	return lambdaFn, nil
  }
docs: // NewSNSReactor returns an SNS reactor lambda function