FunctionDefinition ​
The FunctionDefinition resource allows you to create and manage AWS Greengrass FunctionDefinitions which define a collection of AWS Lambda functions that are deployed to Greengrass core devices.
Minimal Example ​
Create a basic FunctionDefinition with a name and an initial version that includes a simple Lambda function.
ts
import AWS from "alchemy/aws/control";
const initialFunctionVersion = {
Functions: [{
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:MyGreengrassFunction",
FunctionConfiguration: {
EncodingType: "json",
MemorySize: 128,
Pinned: true,
Timeout: 3,
Environment: {
Variables: {
MY_ENV_VAR: "value"
}
}
}
}]
};
const functionDefinition = await AWS.Greengrass.FunctionDefinition("myFunctionDefinition", {
Name: "MyGreengrassFunctionDefinition",
InitialVersion: initialFunctionVersion,
Tags: {
Environment: "Production"
}
});
Advanced Configuration ​
Configure a FunctionDefinition with multiple functions, memory size, and a set of IAM policies for more complex setups.
ts
const advancedInitialFunctionVersion = {
Functions: [{
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:MyGreengrassFunctionA",
FunctionConfiguration: {
EncodingType: "json",
MemorySize: 256,
Pinned: true,
Timeout: 5,
Environment: {
Variables: {
ENV_A: "valueA"
}
}
}
},
{
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:MyGreengrassFunctionB",
FunctionConfiguration: {
EncodingType: "json",
MemorySize: 512,
Pinned: false,
Timeout: 10,
Environment: {
Variables: {
ENV_B: "valueB"
}
}
}
}],
CustomFunctionConfigurations: [{
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:MyGreengrassFunctionB",
FunctionConfiguration: {
Policies: [{
Effect: "Allow",
Action: ["greengrass:StartFunction"],
Resource: "*"
}]
}
}]
};
const advancedFunctionDefinition = await AWS.Greengrass.FunctionDefinition("advancedFunctionDefinition", {
Name: "AdvancedGreengrassFunctionDefinition",
InitialVersion: advancedInitialFunctionVersion,
Tags: {
Environment: "Staging"
}
});
Using IAM Policies ​
Define a FunctionDefinition with specific IAM policies that grant permissions for Greengrass and Lambda operations.
ts
const iamPolicyFunctionVersion = {
Functions: [{
FunctionArn: "arn:aws:lambda:us-west-2:123456789012:function:MyGreengrassFunctionWithPolicy",
FunctionConfiguration: {
EncodingType: "json",
MemorySize: 128,
Pinned: true,
Timeout: 3,
Environment: {
Variables: {
IAM_POLICY_VAR: "value"
}
}
}
}],
Policies: [{
Effect: "Allow",
Action: [
"greengrass:*",
"lambda:InvokeFunction"
],
Resource: "*"
}]
};
const iamPolicyFunctionDefinition = await AWS.Greengrass.FunctionDefinition("iamPolicyFunctionDefinition", {
Name: "FunctionWithIAMPolicy",
InitialVersion: iamPolicyFunctionVersion,
Tags: {
Environment: "Development"
}
});