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
Section titled “Minimal Example”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" }});
Advanced Configuration
Section titled “Advanced Configuration”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" }});
Using IAM Policies
Section titled “Using IAM Policies”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" }});