Shared Resources Functions
Important: These docs are for the outdated Jets 5 versions and below. For the latest Jets docs: docs.rubyonjets.com
For some Shared Resources you might need to create Lambda functions themselves. Instead of writing the Lambda function code inline with the Shared Resource definition, you can define them in app/shared/functions
and declare them with the function
helper. Here’s an example:
Ruby Example
app/shared/resources/custom.rb:
class Custom < Jets::Stack
function(:bob)
end
You then define the function in the app/shared/functions
folder:
app/shared/functions/bob.rb:
def lambda_handler(event:, context:)
puts("hello bob")
end
By default, the function
method creates Ruby lambda functions. The default Ruby handler is lambda_handler
.
There is also a ruby_function
alias to the function
method. They do the same thing.
Python Example
For Shared Resource Functions, you can use Python just as easily. Here’s an example:
app/shared/resources/custom.rb:
class Custom < Jets::Stack
python_function(:kevin)
end
You then define the function in the app/shared/functions
folder:
app/shared/functions/kevin.py:
def lambda_handler(event, context):
print("hello kevin")
Node Example
Here’s also a node example:
app/shared/resources/custom.rb:
class Custom < Jets::Stack
node_function(:stuart)
end
app/shared/functions/stuart.js:
exports.handler = function(event, context, callback) {
console.log("hello stuart");
}
General function Form
The methods ruby_function
, python_function
, and node_function
all delegate to the function
method. Here’s what the general function
method looks like:
class Custom < Jets::Stack
function(:kevin,
Handler: "kevin.lambda_handler",
Runtime: "ruby2.7"
)
end
And the function
method calls the general Jets::Stack resource
method. So the above can also be written like so:
class Custom < Jets::Stack
resource(:kevin,
Code: {
S3Bucket: "!Ref S3Bucket",
S3Key: code_s3_key
},
Handler: "kevin.lambda_handler",
Runtime: "ruby2.7"
)
end