Show / Hide Table of Contents

λ#

LambdaSharp Module Syntax

A LambdaSharp module is divided into three main components: details about the module, required dependencies, and item definitions, such as parameters, variables, resources, and functions.

Parameter values are provided at module deployment time. Optionally, parameters can act as conditional resources that are created when a parameter value is omitted.

Variables hold intermediate results that can be shared with other item definitions in the module. Variables are inlined during compilation and don't appear in the final output unless shared publicly.

Parameters, variables, and resources can be shared with other modules by making them public. These can then be imported using cross-module references. Alternatively, they can be scoped as stack, which makes them only available in a nested stack.

Functions can be wired up to respond to various event sources, such as SQS, SNS, API Gateway, or even Slack Commands. Functions can be implemented using C# or Javascript.

The LambdaSharp CLI build command compiles the module into a CloudFormation template. The publish command uploads the artifacts to the deployment bucket. Finally, the deploy command creates/updates a CloudFormation stack.

Syntax

Module: String
Version: String
Origin: String
Description: String
Pragmas:
  - PragmaDefinition
Secrets:
  - String
Using:
  - UsingDefinition
Items:
  - ItemDefinition

Properties

Description

The Description attribute specifies the description for the CloudFormation stack.

Required: No

Type: String

Items

The Items section specifies the items defined in the module, such as parameters, variables, resources, conditions, mappings, functions, nested stacks, resource type definitions, macro definitions, and module imports.

Required: No

Type: List of Item Definition

Module

The Module attribute specifies the full name of the module. It must be formatted as Namespace.Name.

The module namespace and name can be retrieved using the !Ref operations with Module::Namespace and Module::Name, respectively. Alternatively, the full name can be retrieved using Module::FullName.

Required: Yes

Type: String

Origin

The Origin attribute specifies the origin S3 bucket of the module. When omitted, the origin information is filled in when the module is published to an S3 bucket.

Required: No

Type: String

Pragmas

The Pragmas section specifies directives that change the default compiler behavior.

Required: No

Type: List of Pragma Definition

Using

The Using section specifies LambdaSharp modules that are used by this module. During the build phase, the manifests of the used modules are imported to validate their parameters and attributes. During the deploy phase, the used modules are automatically deployed when missing.

Required: No

Type: List of Using Definition

Secrets

The Secrets section specifies which KMS keys can be used to decrypt parameter values. The module IAM role will get permission to use these keys (mks:Decrypt etc.).

Required: No

Type: List of String (see Secrets Section)

Version

The Version attribute specifies the version of the LambdaSharp module. The format of the version must be Major.Minor[.Build[.Revision]][-Suffix]. Components in square brackets ([]) are optional and can be omitted. The presence of the -Suffix element indicates a pre-release version.

The module version can be accessed as a variable in !Sub operations using the ${Module::Version}.

Required: No

Type: String

Intrinsic Functions

CloudFormation intrinsic functions are supported in item definitions where values can be specified.

!Include

LambdaSharp modules can use the !Include pre-processor directive to include plain text files as strings or YAML files as nested objects. The !Include directive can be used anywhere in a YAML file.

Example

Module: My.Module
Items:
  - !Include MyFirstItem
In This Article
Back to top Generated by DocFX