awscc_greengrassv2_component_version (Resource)

Resource for Greengrass component version.

Example Usage

First Example

Create a component from a recipe

resource "awscc_greengrassv2_component_version" "MyGreengrassComponentVersion_example" {
  inline_recipe = jsonencode({
    "RecipeFormatVersion"     = "2020-01-25"
    "ComponentName"           = "MyLambdaComponent"
    "ComponentVersion"        = "1.0.0"
    "ComponentDescription"    = "This is a sample Greengrass component created using InlineRecipe."
    "Manifests" = [
      {
        "Platform" = {
          "os"   = "linux"
          "arch" = "armhf"
        }
        "Lifecycle" = {
          "install" = {
            "script" = "apt-get install -y my-package"
          }
          "run" = {
            "script" = "python3 my_script.py"
          }
        }
      }
    ]
  })

  tags = {
    MyTagKey = "MyTagValue"
  }
}

Second Example

Create a component from a lambda-function

#Example with lambda function
resource "aws_greengrassv2_component_version" "MyGreengrassComponentVersion" {
  lambda_function {
    lambda_arn = "arn:aws:lambda:<region>:<account-id>:function:<LambdaFunctionName>:<version>"
    component_name           = "MyLambdaComponent"
    component_version        = "1.0.0"
  }

  tags = {
    Environment = "Production"
    Project     = "Greengrass-awscc-Project"
  }
}

Third Example

Create a component from a lambda-function and its nested schema

resource "aws_greengrassv2_component_version" "MyGreengrassComponentVersion-NestedLambda" {
  lambda_function {
    component_name      = "MyLambdaComponent"
    component_version   = "1.0.0"
    lambda_arn          = "arn:aws:lambda:<region>:<account>:function:<LambdaFunctionName>:<LambdaVersion>"

    component_dependencies {
      dependency_type       = "runtime"
      version_requirement   = ">=1.0.0"
    }

    component_lambda_parameters {
      environment_variables = {
        ENV_VAR1 = "value1"
        ENV_VAR2 = "value2"
      }

      event_sources {
        topic = "topic1"
        type  = "sns"
      }

      exec_args                 = ["arg1", "arg2"]
      input_payload_encoding_type = "json"

      linux_process_params {
        isolation_mode {
          devices {
            add_group_owner = true
            path            = "/dev/random"
            permission      = "rw"
          }
          memory_size_in_kb = 1024
          mount_ro_sysfs    = false

          volumes {
            add_group_owner   = false
            destination_path  = "/mnt/data"
            permission        = "rw"
            source_path       = "/data"
          }
        }
        container_params {
          environment_variables = {
            CONTAINER_ENV_VAR1 = "container_value1"
            CONTAINER_ENV_VAR2 = "container_value2"
          }
          image_uri           = "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-container-image:latest"
          memory_size_in_kb   = 2048
          vcpu_count          = 2
        }
      }

      max_idle_time_in_seconds   = 300
      max_instances_count        = 3
      max_queue_size             = 10
      pinned                     = false
      status_timeout_in_seconds  = 60
      timeout_in_seconds         = 30
    }

    component_platforms {
      attributes = {
        platform_version = "1.2.3"
        architecture     = "arm64"
      }
      name = "Linux"
    }
  }

  tags = {
    Environment = "Production"
    Project     = "GreengrassProject-Nested"
  }
}

Schema

Optional

Read-Only

Nested Schema for lambda_function

Optional:

Nested Schema for lambda_function.component_dependencies

Optional:

Nested Schema for lambda_function.component_lambda_parameters

Optional:

Nested Schema for lambda_function.component_lambda_parameters.event_sources

Optional:

Nested Schema for lambda_function.component_lambda_parameters.linux_process_params

Optional:

Nested Schema for lambda_function.component_lambda_parameters.linux_process_params.container_params

Optional:

Nested Schema for lambda_function.component_lambda_parameters.linux_process_params.isolation_mode.devices

Optional:

Nested Schema for lambda_function.component_lambda_parameters.linux_process_params.isolation_mode.volumes

Optional:

Nested Schema for lambda_function.component_platforms

Optional:

Import

Import is supported using the following syntax:

$ terraform import awscc_greengrassv2_component_version.example <resource ID>