Skip to content

ResourceDefinition ​

The ResourceDefinition resource allows you to manage AWS Greengrass ResourceDefinitions which define the resources that your Greengrass group can access.

Minimal Example ​

This example demonstrates how to create a basic ResourceDefinition with required properties and one optional property.

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

const resourceDefinition = await AWS.Greengrass.ResourceDefinition("myResourceDefinition", {
  Name: "MyResourceDefinition",
  InitialVersion: {
    Resources: {
      MyS3Bucket: {
        Id: "MyS3Bucket",
        Type: "S3",
        ResourceDataContainer: {
          S3Data: {
            BucketARN: "arn:aws:s3:::my-bucket",
            ETag: "etag-value",
            Key: "my-data-file.txt"
          }
        }
      }
    }
  },
  Tags: {
    Environment: "Development"
  }
});

Advanced Configuration ​

In this example, we configure a ResourceDefinition with multiple resource types and additional tags.

ts
const advancedResourceDefinition = await AWS.Greengrass.ResourceDefinition("advancedResourceDefinition", {
  Name: "AdvancedResourceDefinition",
  InitialVersion: {
    Resources: {
      MyDynamoDBTable: {
        Id: "MyDynamoDBTable",
        Type: "DynamoDB",
        ResourceDataContainer: {
          DynamoDB: {
            TableARN: "arn:aws:dynamodb:us-west-2:123456789012:table/MyTable",
            RoleARN: "arn:aws:iam::123456789012:role/MyGreengrassRole"
          }
        }
      },
      MyS3Bucket: {
        Id: "MyS3Bucket",
        Type: "S3",
        ResourceDataContainer: {
          S3Data: {
            BucketARN: "arn:aws:s3:::my-bucket",
            ETag: "etag-value",
            Key: "my-data-file.txt"
          }
        }
      }
    }
  },
  Tags: {
    Environment: "Production",
    Project: "IoTApp"
  }
});

Resource with Adoption ​

This example shows how to create a ResourceDefinition with the adoption property set to true, allowing you to adopt an existing resource.

ts
const adoptedResourceDefinition = await AWS.Greengrass.ResourceDefinition("adoptedResourceDefinition", {
  Name: "AdoptedResourceDefinition",
  InitialVersion: {
    Resources: {
      MyS3Bucket: {
        Id: "MyS3Bucket",
        Type: "S3",
        ResourceDataContainer: {
          S3Data: {
            BucketARN: "arn:aws:s3:::existing-bucket",
            ETag: "etag-value",
            Key: "existing-data-file.txt"
          }
        }
      }
    }
  },
  adopt: true
});