package awsgreengrass


// Properties for defining a `CfnFunctionDefinition`.
//
// Example:
//   // The code below shows an example of how to instantiate this type.
//   // The values are placeholders you should change.
//   import "github.com/aws/aws-cdk-go/awscdk"
//
//   var tags interface{}
//   var variables interface{}
//
//   cfnFunctionDefinitionProps := &CfnFunctionDefinitionProps{
//   	Name: jsii.String("name"),
//
//   	// the properties below are optional
//   	InitialVersion: &FunctionDefinitionVersionProperty{
//   		Functions: []interface{}{
//   			&FunctionProperty{
//   				FunctionArn: jsii.String("functionArn"),
//   				FunctionConfiguration: &FunctionConfigurationProperty{
//   					EncodingType: jsii.String("encodingType"),
//   					Environment: &EnvironmentProperty{
//   						AccessSysfs: jsii.Boolean(false),
//   						Execution: &ExecutionProperty{
//   							IsolationMode: jsii.String("isolationMode"),
//   							RunAs: &RunAsProperty{
//   								Gid: jsii.Number(123),
//   								Uid: jsii.Number(123),
//   							},
//   						},
//   						ResourceAccessPolicies: []interface{}{
//   							&ResourceAccessPolicyProperty{
//   								ResourceId: jsii.String("resourceId"),
//
//   								// the properties below are optional
//   								Permission: jsii.String("permission"),
//   							},
//   						},
//   						Variables: variables,
//   					},
//   					ExecArgs: jsii.String("execArgs"),
//   					Executable: jsii.String("executable"),
//   					MemorySize: jsii.Number(123),
//   					Pinned: jsii.Boolean(false),
//   					Timeout: jsii.Number(123),
//   				},
//   				Id: jsii.String("id"),
//   			},
//   		},
//
//   		// the properties below are optional
//   		DefaultConfig: &DefaultConfigProperty{
//   			Execution: &ExecutionProperty{
//   				IsolationMode: jsii.String("isolationMode"),
//   				RunAs: &RunAsProperty{
//   					Gid: jsii.Number(123),
//   					Uid: jsii.Number(123),
//   				},
//   			},
//   		},
//   	},
//   	Tags: tags,
//   }
//
// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html
//
type CfnFunctionDefinitionProps struct {
	// The name of the function definition.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html#cfn-greengrass-functiondefinition-name
	//
	Name *string `field:"required" json:"name" yaml:"name"`
	// The function definition version to include when the function definition is created.
	//
	// A function definition version contains a list of [`function`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-greengrass-functiondefinition-function.html) property types.
	//
	// > To associate a function definition version after the function definition is created, create an [`AWS::Greengrass::FunctionDefinitionVersion`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinitionversion.html) resource and specify the ID of this function definition.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html#cfn-greengrass-functiondefinition-initialversion
	//
	InitialVersion interface{} `field:"optional" json:"initialVersion" yaml:"initialVersion"`
	// Application-specific metadata to attach to the function definition.
	//
	// You can use tags in IAM policies to control access to AWS IoT Greengrass resources. You can also use tags to categorize your resources. For more information, see [Tagging Your AWS IoT Greengrass Resources](https://docs.aws.amazon.com/greengrass/v1/developerguide/tagging.html) in the *Developer Guide* .
	//
	// This `Json` property type is processed as a map of key-value pairs. It uses the following format, which is different from most `Tags` implementations in AWS CloudFormation templates.
	//
	// ```json
	// "Tags": { "KeyName0": "value", "KeyName1": "value", "KeyName2": "value"
	// }
	// ```.
	// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-greengrass-functiondefinition.html#cfn-greengrass-functiondefinition-tags
	//
	Tags interface{} `field:"optional" json:"tags" yaml:"tags"`
}

