Skip to content
GitHubXDiscordRSS

FunctionDefinition

Learn how to create, update, and manage AWS Greengrass FunctionDefinitions using Alchemy Cloud Control.

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.

Create a basic FunctionDefinition with a name and an initial version that includes a simple Lambda function.

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"
}
});

Configure a FunctionDefinition with multiple functions, memory size, and a set of IAM policies for more complex setups.

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"
}
});

Define a FunctionDefinition with specific IAM policies that grant permissions for Greengrass and Lambda operations.

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"
}
});