Skip to content

ComponentVersion

The ComponentVersion resource allows you to create and manage versions of AWS GreengrassV2 components, enabling efficient deployment and updates of your IoT applications. For more information, visit the AWS GreengrassV2 ComponentVersions documentation.

Minimal Example

Create a basic component version with a lambda function as the recipe source.

ts
import AWS from "alchemy/aws/control";

const basicComponent = await AWS.GreengrassV2.ComponentVersion("basicComponent", {
  LambdaFunction: {
    // Define the Lambda function recipe source
    FunctionArn: "arn:aws:lambda:us-east-1:123456789012:function:myLambdaFunction",
    // Specify other Lambda function properties if necessary
  },
  Tags: {
    Environment: "Development",
    Project: "IoTApp"
  }
});

Advanced Configuration

Configure a component version using an inline recipe for more complex setups.

ts
const advancedComponent = await AWS.GreengrassV2.ComponentVersion("advancedComponent", {
  InlineRecipe: JSON.stringify({
    RecipeFormatVersion: "2020-01-25",
    Component: {
      Name: "com.example.advancedComponent",
      Version: "1.0.0",
      ComponentType: "aws.greengrass.generic",
      Manifests: [{
        Platform: {
          os: "linux",
          architecture: "arm64"
        },
        Lifecycle: {
          Run: {
            Path: "/usr/bin/myExecutable"
          }
        }
      }]
    }
  }),
  Tags: {
    Environment: "Production",
    Project: "IoTApp"
  }
});

Using Inline Recipe with Additional Tags

Create a component version with an inline recipe and additional tags for better organization.

ts
const taggedComponent = await AWS.GreengrassV2.ComponentVersion("taggedComponent", {
  InlineRecipe: JSON.stringify({
    RecipeFormatVersion: "2020-01-25",
    Component: {
      Name: "com.example.taggedComponent",
      Version: "1.0.1",
      ComponentType: "aws.greengrass.generic",
      Manifests: [{
        Platform: {
          os: "linux",
          architecture: "x86_64"
        },
        Lifecycle: {
          Run: {
            Path: "/usr/bin/myExecutable",
            Permissions: {
              "/usr/bin/myExecutable": {
                "Thing": "Allow"
              }
            }
          }
        }
      }]
    }
  }),
  Tags: {
    Environment: "Staging",
    Project: "IoTApp",
    Version: "v1.0.1"
  }
});