diff --git a/docs/data-sources/gamelift_container_group_definition.md b/docs/data-sources/gamelift_container_group_definition.md
index 106b1060a..ddc6288ff 100644
--- a/docs/data-sources/gamelift_container_group_definition.md
+++ b/docs/data-sources/gamelift_container_group_definition.md
@@ -21,37 +21,102 @@ Data Source schema for AWS::GameLift::ContainerGroupDefinition
### Read-Only
-- `container_definitions` (Attributes Set) A collection of container definitions that define the containers in this group. (see [below for nested schema](#nestedatt--container_definitions))
- `container_group_definition_arn` (String) The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.
+- `container_group_type` (String) The scope of the container group
- `creation_time` (String) A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").
+- `game_server_container_definition` (Attributes) Specifies the information required to run game servers with this container group (see [below for nested schema](#nestedatt--game_server_container_definition))
- `name` (String) A descriptive label for the container group definition.
- `operating_system` (String) The operating system of the container group
-- `scheduling_strategy` (String) Specifies whether the container group includes replica or daemon containers.
+- `source_version_number` (Number) A specific ContainerGroupDefinition version to be updated
+- `status` (String) A string indicating ContainerGroupDefinition status.
+- `status_reason` (String) A string indicating the reason for ContainerGroupDefinition status.
+- `support_container_definitions` (Attributes Set) A collection of support container definitions that define the containers in this group. (see [below for nested schema](#nestedatt--support_container_definitions))
- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags))
-- `total_cpu_limit` (Number) The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)
-- `total_memory_limit` (Number) The maximum amount of memory (in MiB) to allocate for this container group.
+- `total_memory_limit_mebibytes` (Number) The total memory limit of container groups following this definition in MiB
+- `total_vcpu_limit` (Number) The total amount of virtual CPUs on the container group definition
+- `version_description` (String) The description of this version
+- `version_number` (Number) The version of this ContainerGroupDefinition
-
-### Nested Schema for `container_definitions`
+
+### Nested Schema for `game_server_container_definition`
Read-Only:
-- `command` (List of String) The command that's passed to the container.
- `container_name` (String) A descriptive label for the container definition. Container definition names must be unique with a container group definition.
-- `cpu` (Number) The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units
-- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--container_definitions--depends_on))
-- `entry_point` (List of String) The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.
-- `environment` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--container_definitions--environment))
+- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--game_server_container_definition--depends_on))
+- `environment_override` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--game_server_container_definition--environment_override))
+- `image_uri` (String) Specifies the image URI of this container.
+- `mount_points` (Attributes Set) A list of mount point configurations to be used in a container. (see [below for nested schema](#nestedatt--game_server_container_definition--mount_points))
+- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--game_server_container_definition--port_configuration))
+- `resolved_image_digest` (String) The digest of the container image.
+- `server_sdk_version` (String) The version of the server SDK used in this container group
+
+
+### Nested Schema for `game_server_container_definition.depends_on`
+
+Read-Only:
+
+- `condition` (String) The type of dependency.
+- `container_name` (String) A descriptive label for the container definition. The container being defined depends on this container's condition.
+
+
+
+### Nested Schema for `game_server_container_definition.environment_override`
+
+Read-Only:
+
+- `name` (String) The environment variable name.
+- `value` (String) The environment variable value.
+
+
+
+### Nested Schema for `game_server_container_definition.mount_points`
+
+Read-Only:
+
+- `access_level` (String) The access permissions for the mounted path.
+- `container_path` (String) The path inside the container where the mount is accessible.
+- `instance_path` (String) The path on the host that will be mounted in the container.
+
+
+
+### Nested Schema for `game_server_container_definition.port_configuration`
+
+Read-Only:
+
+- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--game_server_container_definition--port_configuration--container_port_ranges))
+
+
+### Nested Schema for `game_server_container_definition.port_configuration.container_port_ranges`
+
+Read-Only:
+
+- `from_port` (Number) A starting value for the range of allowed port numbers.
+- `protocol` (String) Defines the protocol of these ports.
+- `to_port` (Number) An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.
+
+
+
+
+
+### Nested Schema for `support_container_definitions`
+
+Read-Only:
+
+- `container_name` (String) A descriptive label for the container definition.
+- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--support_container_definitions--depends_on))
+- `environment_override` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--support_container_definitions--environment_override))
- `essential` (Boolean) Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.
-- `health_check` (Attributes) Specifies how the health of the containers will be checked. (see [below for nested schema](#nestedatt--container_definitions--health_check))
+- `health_check` (Attributes) Specifies how the health of the containers will be checked. (see [below for nested schema](#nestedatt--support_container_definitions--health_check))
- `image_uri` (String) Specifies the image URI of this container.
-- `memory_limits` (Attributes) Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition. (see [below for nested schema](#nestedatt--container_definitions--memory_limits))
-- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--container_definitions--port_configuration))
+- `memory_hard_limit_mebibytes` (Number) The total memory limit of container groups following this definition in MiB
+- `mount_points` (Attributes Set) A list of mount point configurations to be used in a container. (see [below for nested schema](#nestedatt--support_container_definitions--mount_points))
+- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--support_container_definitions--port_configuration))
- `resolved_image_digest` (String) The digest of the container image.
-- `working_directory` (String) The working directory to run commands inside the container in.
+- `vcpu` (Number) The number of virtual CPUs to give to the support group
-
-### Nested Schema for `container_definitions.depends_on`
+
+### Nested Schema for `support_container_definitions.depends_on`
Read-Only:
@@ -59,8 +124,8 @@ Read-Only:
- `container_name` (String) A descriptive label for the container definition. The container being defined depends on this container's condition.
-
-### Nested Schema for `container_definitions.environment`
+
+### Nested Schema for `support_container_definitions.environment_override`
Read-Only:
@@ -68,8 +133,8 @@ Read-Only:
- `value` (String) The environment variable value.
-
-### Nested Schema for `container_definitions.health_check`
+
+### Nested Schema for `support_container_definitions.health_check`
Read-Only:
@@ -80,24 +145,25 @@ Read-Only:
- `timeout` (Number) How many seconds the process manager allows the command to run before canceling it.
-
-### Nested Schema for `container_definitions.memory_limits`
+
+### Nested Schema for `support_container_definitions.mount_points`
Read-Only:
-- `hard_limit` (Number) The hard limit of memory to reserve for the container.
-- `soft_limit` (Number) The amount of memory that is reserved for the container.
+- `access_level` (String) The access permissions for the mounted path.
+- `container_path` (String) The path inside the container where the mount is accessible.
+- `instance_path` (String) The path on the host that will be mounted in the container.
-
-### Nested Schema for `container_definitions.port_configuration`
+
+### Nested Schema for `support_container_definitions.port_configuration`
Read-Only:
-- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--container_definitions--port_configuration--container_port_ranges))
+- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--support_container_definitions--port_configuration--container_port_ranges))
-
-### Nested Schema for `container_definitions.port_configuration.container_port_ranges`
+
+### Nested Schema for `support_container_definitions.port_configuration.container_port_ranges`
Read-Only:
diff --git a/docs/resources/gamelift_container_group_definition.md b/docs/resources/gamelift_container_group_definition.md
index 260dd8712..0763d4a9d 100644
--- a/docs/resources/gamelift_container_group_definition.md
+++ b/docs/resources/gamelift_container_group_definition.md
@@ -17,47 +17,109 @@ The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift
### Required
-- `container_definitions` (Attributes Set) A collection of container definitions that define the containers in this group. (see [below for nested schema](#nestedatt--container_definitions))
- `name` (String) A descriptive label for the container group definition.
- `operating_system` (String) The operating system of the container group
-- `total_cpu_limit` (Number) The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)
-- `total_memory_limit` (Number) The maximum amount of memory (in MiB) to allocate for this container group.
+- `total_memory_limit_mebibytes` (Number) The total memory limit of container groups following this definition in MiB
+- `total_vcpu_limit` (Number) The total amount of virtual CPUs on the container group definition
### Optional
-- `scheduling_strategy` (String) Specifies whether the container group includes replica or daemon containers.
+- `container_group_type` (String) The scope of the container group
+- `game_server_container_definition` (Attributes) Specifies the information required to run game servers with this container group (see [below for nested schema](#nestedatt--game_server_container_definition))
+- `source_version_number` (Number) A specific ContainerGroupDefinition version to be updated
+- `support_container_definitions` (Attributes Set) A collection of support container definitions that define the containers in this group. (see [below for nested schema](#nestedatt--support_container_definitions))
- `tags` (Attributes Set) An array of key-value pairs to apply to this resource. (see [below for nested schema](#nestedatt--tags))
+- `version_description` (String) The description of this version
### Read-Only
- `container_group_definition_arn` (String) The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.
- `creation_time` (String) A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example "1469498468.057").
- `id` (String) Uniquely identifies the resource.
+- `status` (String) A string indicating ContainerGroupDefinition status.
+- `status_reason` (String) A string indicating the reason for ContainerGroupDefinition status.
+- `version_number` (Number) The version of this ContainerGroupDefinition
-
-### Nested Schema for `container_definitions`
+
+### Nested Schema for `game_server_container_definition`
-Required:
+Optional:
- `container_name` (String) A descriptive label for the container definition. Container definition names must be unique with a container group definition.
+- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--game_server_container_definition--depends_on))
+- `environment_override` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--game_server_container_definition--environment_override))
- `image_uri` (String) Specifies the image URI of this container.
+- `mount_points` (Attributes Set) A list of mount point configurations to be used in a container. (see [below for nested schema](#nestedatt--game_server_container_definition--mount_points))
+- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--game_server_container_definition--port_configuration))
+- `resolved_image_digest` (String) The digest of the container image.
+- `server_sdk_version` (String) The version of the server SDK used in this container group
+
+
+### Nested Schema for `game_server_container_definition.depends_on`
+
+Optional:
+
+- `condition` (String) The type of dependency.
+- `container_name` (String) A descriptive label for the container definition. The container being defined depends on this container's condition.
+
+
+
+### Nested Schema for `game_server_container_definition.environment_override`
Optional:
-- `command` (List of String) The command that's passed to the container.
-- `cpu` (Number) The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units
-- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--container_definitions--depends_on))
-- `entry_point` (List of String) The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.
-- `environment` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--container_definitions--environment))
+- `name` (String) The environment variable name.
+- `value` (String) The environment variable value.
+
+
+
+### Nested Schema for `game_server_container_definition.mount_points`
+
+Optional:
+
+- `access_level` (String) The access permissions for the mounted path.
+- `container_path` (String) The path inside the container where the mount is accessible.
+- `instance_path` (String) The path on the host that will be mounted in the container.
+
+
+
+### Nested Schema for `game_server_container_definition.port_configuration`
+
+Optional:
+
+- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--game_server_container_definition--port_configuration--container_port_ranges))
+
+
+### Nested Schema for `game_server_container_definition.port_configuration.container_port_ranges`
+
+Optional:
+
+- `from_port` (Number) A starting value for the range of allowed port numbers.
+- `protocol` (String) Defines the protocol of these ports.
+- `to_port` (Number) An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.
+
+
+
+
+
+### Nested Schema for `support_container_definitions`
+
+Optional:
+
+- `container_name` (String) A descriptive label for the container definition.
+- `depends_on` (Attributes List) A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers. (see [below for nested schema](#nestedatt--support_container_definitions--depends_on))
+- `environment_override` (Attributes Set) The environment variables to pass to a container. (see [below for nested schema](#nestedatt--support_container_definitions--environment_override))
- `essential` (Boolean) Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.
-- `health_check` (Attributes) Specifies how the health of the containers will be checked. (see [below for nested schema](#nestedatt--container_definitions--health_check))
-- `memory_limits` (Attributes) Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition. (see [below for nested schema](#nestedatt--container_definitions--memory_limits))
-- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--container_definitions--port_configuration))
+- `health_check` (Attributes) Specifies how the health of the containers will be checked. (see [below for nested schema](#nestedatt--support_container_definitions--health_check))
+- `image_uri` (String) Specifies the image URI of this container.
+- `memory_hard_limit_mebibytes` (Number) The total memory limit of container groups following this definition in MiB
+- `mount_points` (Attributes Set) A list of mount point configurations to be used in a container. (see [below for nested schema](#nestedatt--support_container_definitions--mount_points))
+- `port_configuration` (Attributes) Defines the ports on the container. (see [below for nested schema](#nestedatt--support_container_definitions--port_configuration))
- `resolved_image_digest` (String) The digest of the container image.
-- `working_directory` (String) The working directory to run commands inside the container in.
+- `vcpu` (Number) The number of virtual CPUs to give to the support group
-
-### Nested Schema for `container_definitions.depends_on`
+
+### Nested Schema for `support_container_definitions.depends_on`
Optional:
@@ -65,8 +127,8 @@ Optional:
- `container_name` (String) A descriptive label for the container definition. The container being defined depends on this container's condition.
-
-### Nested Schema for `container_definitions.environment`
+
+### Nested Schema for `support_container_definitions.environment_override`
Optional:
@@ -74,8 +136,8 @@ Optional:
- `value` (String) The environment variable value.
-
-### Nested Schema for `container_definitions.health_check`
+
+### Nested Schema for `support_container_definitions.health_check`
Optional:
@@ -86,24 +148,25 @@ Optional:
- `timeout` (Number) How many seconds the process manager allows the command to run before canceling it.
-
-### Nested Schema for `container_definitions.memory_limits`
+
+### Nested Schema for `support_container_definitions.mount_points`
Optional:
-- `hard_limit` (Number) The hard limit of memory to reserve for the container.
-- `soft_limit` (Number) The amount of memory that is reserved for the container.
+- `access_level` (String) The access permissions for the mounted path.
+- `container_path` (String) The path inside the container where the mount is accessible.
+- `instance_path` (String) The path on the host that will be mounted in the container.
-
-### Nested Schema for `container_definitions.port_configuration`
+
+### Nested Schema for `support_container_definitions.port_configuration`
Optional:
-- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--container_definitions--port_configuration--container_port_ranges))
+- `container_port_ranges` (Attributes Set) Specifies one or more ranges of ports on a container. (see [below for nested schema](#nestedatt--support_container_definitions--port_configuration--container_port_ranges))
-
-### Nested Schema for `container_definitions.port_configuration.container_port_ranges`
+
+### Nested Schema for `support_container_definitions.port_configuration.container_port_ranges`
Optional:
diff --git a/internal/aws/gamelift/container_group_definition_resource_gen.go b/internal/aws/gamelift/container_group_definition_resource_gen.go
index d008264f5..d26794689 100644
--- a/internal/aws/gamelift/container_group_definition_resource_gen.go
+++ b/internal/aws/gamelift/container_group_definition_resource_gen.go
@@ -9,6 +9,7 @@ import (
"context"
"regexp"
+ "github.com/hashicorp/terraform-plugin-framework-validators/float64validator"
"github.com/hashicorp/terraform-plugin-framework-validators/int64validator"
"github.com/hashicorp/terraform-plugin-framework-validators/listvalidator"
"github.com/hashicorp/terraform-plugin-framework-validators/setvalidator"
@@ -16,6 +17,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/boolplanmodifier"
+ "github.com/hashicorp/terraform-plugin-framework/resource/schema/float64planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/listplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier"
@@ -37,43 +39,656 @@ func init() {
// This Terraform resource corresponds to the CloudFormation AWS::GameLift::ContainerGroupDefinition resource.
func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, error) {
attributes := map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: ContainerDefinitions
+ // Property: ContainerGroupDefinitionArn
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
+ // "maxLength": 512,
+ // "minLength": 1,
+ // "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$",
+ // "type": "string"
+ // }
+ "container_group_definition_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
+ Computed: true,
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerGroupType
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The scope of the container group",
+ // "enum": [
+ // "GAME_SERVER",
+ // "PER_INSTANCE"
+ // ],
+ // "type": "string"
+ // }
+ "container_group_type": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The scope of the container group",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "GAME_SERVER",
+ "PER_INSTANCE",
+ ),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ stringplanmodifier.RequiresReplaceIfConfigured(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: CreationTime
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
+ // "type": "string"
+ // }
+ "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
+ Computed: true,
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: GameServerContainerDefinition
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "additionalProperties": false,
+ // "description": "Specifies the information required to run game servers with this container group",
+ // "properties": {
+ // "ContainerName": {
+ // "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // },
+ // "DependsOn": {
+ // "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
+ // "insertionOrder": true,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A dependency that impacts a container's startup and shutdown.",
+ // "properties": {
+ // "Condition": {
+ // "description": "The type of dependency.",
+ // "enum": [
+ // "START",
+ // "COMPLETE",
+ // "SUCCESS",
+ // "HEALTHY"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerName": {
+ // "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "ContainerName",
+ // "Condition"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "EnvironmentOverride": {
+ // "description": "The environment variables to pass to a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "An environment variable to set inside a container, in the form of a key-value pair.",
+ // "properties": {
+ // "Name": {
+ // "description": "The environment variable name.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^.*$",
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The environment variable value.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^.*$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 20,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "ImageUri": {
+ // "description": "Specifies the image URI of this container.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$",
+ // "type": "string"
+ // },
+ // "MountPoints": {
+ // "description": "A list of mount point configurations to be used in a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Defines the mount point configuration within a container.",
+ // "properties": {
+ // "AccessLevel": {
+ // "description": "The access permissions for the mounted path.",
+ // "enum": [
+ // "READ_ONLY",
+ // "READ_AND_WRITE"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerPath": {
+ // "description": "The path inside the container where the mount is accessible.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^(\\/+[^\\/]+\\/*)+$",
+ // "type": "string"
+ // },
+ // "InstancePath": {
+ // "description": "The path on the host that will be mounted in the container.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^\\/[\\s\\S]*$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "InstancePath"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "PortConfiguration": {
+ // "additionalProperties": false,
+ // "description": "Defines the ports on the container.",
+ // "properties": {
+ // "ContainerPortRanges": {
+ // "description": "Specifies one or more ranges of ports on a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A set of one or more port numbers that can be opened on the container.",
+ // "properties": {
+ // "FromPort": {
+ // "description": "A starting value for the range of allowed port numbers.",
+ // "maximum": 60000,
+ // "minimum": 1,
+ // "type": "integer"
+ // },
+ // "Protocol": {
+ // "description": "Defines the protocol of these ports.",
+ // "enum": [
+ // "TCP",
+ // "UDP"
+ // ],
+ // "type": "string"
+ // },
+ // "ToPort": {
+ // "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
+ // "maximum": 60000,
+ // "minimum": 1,
+ // "type": "integer"
+ // }
+ // },
+ // "required": [
+ // "FromPort",
+ // "Protocol",
+ // "ToPort"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 100,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ // },
+ // "required": [
+ // "ContainerPortRanges"
+ // ],
+ // "type": "object"
+ // },
+ // "ResolvedImageDigest": {
+ // "description": "The digest of the container image.",
+ // "pattern": "^sha256:[a-fA-F0-9]{64}$",
+ // "type": "string"
+ // },
+ // "ServerSdkVersion": {
+ // "description": "The version of the server SDK used in this container group",
+ // "maxLength": 128,
+ // "pattern": "^\\d+\\.\\d+\\.\\d+$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "ContainerName",
+ // "ImageUri",
+ // "ServerSdkVersion"
+ // ],
+ // "type": "object"
+ // }
+ "game_server_container_definition": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: ContainerName
+ "container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 128),
+ stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-]+$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: DependsOn
+ "depends_on": schema.ListNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: Condition
+ "condition": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The type of dependency.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "START",
+ "COMPLETE",
+ "SUCCESS",
+ "HEALTHY",
+ ),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerName
+ "container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container definition. The container being defined depends on this container's condition.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 128),
+ stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-]+$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.List{ /*START VALIDATORS*/
+ listvalidator.SizeBetween(1, 10),
+ listvalidator.UniqueValues(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/
+ listplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: EnvironmentOverride
+ "environment_override": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: Name
+ "name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The environment variable name.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 255),
+ stringvalidator.RegexMatches(regexp.MustCompile("^.*$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: Value
+ "value": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The environment variable value.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 255),
+ stringvalidator.RegexMatches(regexp.MustCompile("^.*$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "The environment variables to pass to a container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Set{ /*START VALIDATORS*/
+ setvalidator.SizeBetween(1, 20),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/
+ setplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ImageUri
+ "image_uri": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "Specifies the image URI of this container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 255),
+ stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-_\\.@\\/:]+$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: MountPoints
+ "mount_points": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: AccessLevel
+ "access_level": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The access permissions for the mounted path.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "READ_ONLY",
+ "READ_AND_WRITE",
+ ),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerPath
+ "container_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path inside the container where the mount is accessible.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 1024),
+ stringvalidator.RegexMatches(regexp.MustCompile("^(\\/+[^\\/]+\\/*)+$"), ""),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: InstancePath
+ "instance_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path on the host that will be mounted in the container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 1024),
+ stringvalidator.RegexMatches(regexp.MustCompile("^\\/[\\s\\S]*$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of mount point configurations to be used in a container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Set{ /*START VALIDATORS*/
+ setvalidator.SizeBetween(1, 10),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/
+ setplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: PortConfiguration
+ "port_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: ContainerPortRanges
+ "container_port_ranges": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: FromPort
+ "from_port": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "A starting value for the range of allowed port numbers.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Int64{ /*START VALIDATORS*/
+ int64validator.Between(1, 60000),
+ fwvalidators.NotNullInt64(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
+ int64planmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: Protocol
+ "protocol": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "Defines the protocol of these ports.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "TCP",
+ "UDP",
+ ),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ToPort
+ "to_port": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Int64{ /*START VALIDATORS*/
+ int64validator.Between(1, 60000),
+ fwvalidators.NotNullInt64(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
+ int64planmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "Specifies one or more ranges of ports on a container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Set{ /*START VALIDATORS*/
+ setvalidator.SizeBetween(1, 100),
+ fwvalidators.NotNullSet(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/
+ setplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ Description: "Defines the ports on the container.",
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/
+ objectplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ResolvedImageDigest
+ "resolved_image_digest": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The digest of the container image.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.RegexMatches(regexp.MustCompile("^sha256:[a-fA-F0-9]{64}$"), ""),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ServerSdkVersion
+ "server_sdk_version": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The version of the server SDK used in this container group",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthAtMost(128),
+ stringvalidator.RegexMatches(regexp.MustCompile("^\\d+\\.\\d+\\.\\d+$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ Description: "Specifies the information required to run game servers with this container group",
+ Optional: true,
+ Computed: true,
+ PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/
+ objectplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: Name
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A descriptive label for the container group definition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // }
+ "name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container group definition.",
+ Required: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 128),
+ stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-]+$"), ""),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.RequiresReplace(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: OperatingSystem
// CloudFormation resource type schema:
//
// {
- // "description": "A collection of container definitions that define the containers in this group.",
+ // "description": "The operating system of the container group",
+ // "enum": [
+ // "AMAZON_LINUX_2023"
+ // ],
+ // "type": "string"
+ // }
+ "operating_system": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The operating system of the container group",
+ Required: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "AMAZON_LINUX_2023",
+ ),
+ }, /*END VALIDATORS*/
+ }, /*END ATTRIBUTE*/
+ // Property: SourceVersionNumber
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A specific ContainerGroupDefinition version to be updated",
+ // "minimum": 0,
+ // "type": "integer"
+ // }
+ "source_version_number": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "A specific ContainerGroupDefinition version to be updated",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Int64{ /*START VALIDATORS*/
+ int64validator.AtLeast(0),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
+ int64planmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: Status
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A string indicating ContainerGroupDefinition status.",
+ // "enum": [
+ // "READY",
+ // "COPYING",
+ // "FAILED"
+ // ],
+ // "type": "string"
+ // }
+ "status": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A string indicating ContainerGroupDefinition status.",
+ Computed: true,
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: StatusReason
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A string indicating the reason for ContainerGroupDefinition status.",
+ // "type": "string"
+ // }
+ "status_reason": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A string indicating the reason for ContainerGroupDefinition status.",
+ Computed: true,
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: SupportContainerDefinitions
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A collection of support container definitions that define the containers in this group.",
// "insertionOrder": false,
// "items": {
// "additionalProperties": false,
- // "description": "Details about a container that is used in a container fleet",
+ // "description": "Supports the function of the main container group",
// "properties": {
- // "Command": {
- // "description": "The command that's passed to the container.",
- // "insertionOrder": true,
- // "items": {
- // "maxLength": 255,
- // "minLength": 1,
- // "pattern": "^.*$",
- // "type": "string"
- // },
- // "maxItems": 20,
- // "minItems": 1,
- // "type": "array",
- // "uniqueItems": false
- // },
// "ContainerName": {
- // "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ // "description": "A descriptive label for the container definition.",
// "maxLength": 128,
// "minLength": 1,
// "pattern": "^[a-zA-Z0-9-]+$",
// "type": "string"
// },
- // "Cpu": {
- // "description": "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units",
- // "maximum": 10240,
- // "minimum": 1,
- // "type": "integer"
- // },
// "DependsOn": {
// "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
// "insertionOrder": true,
@@ -110,20 +725,7 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
// "type": "array",
// "uniqueItems": true
// },
- // "EntryPoint": {
- // "description": "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.",
- // "insertionOrder": true,
- // "items": {
- // "maxLength": 1024,
- // "minLength": 1,
- // "type": "string"
- // },
- // "maxItems": 20,
- // "minItems": 1,
- // "type": "array",
- // "uniqueItems": false
- // },
- // "Environment": {
+ // "EnvironmentOverride": {
// "description": "The environment variables to pass to a container.",
// "insertionOrder": false,
// "items": {
@@ -215,24 +817,51 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
// "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$",
// "type": "string"
// },
- // "MemoryLimits": {
- // "additionalProperties": false,
- // "description": "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.",
- // "properties": {
- // "HardLimit": {
- // "description": "The hard limit of memory to reserve for the container.",
- // "maximum": 1024000,
- // "minimum": 4,
- // "type": "integer"
+ // "MemoryHardLimitMebibytes": {
+ // "description": "The total memory limit of container groups following this definition in MiB",
+ // "maximum": 1024000,
+ // "minimum": 4,
+ // "type": "integer"
+ // },
+ // "MountPoints": {
+ // "description": "A list of mount point configurations to be used in a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Defines the mount point configuration within a container.",
+ // "properties": {
+ // "AccessLevel": {
+ // "description": "The access permissions for the mounted path.",
+ // "enum": [
+ // "READ_ONLY",
+ // "READ_AND_WRITE"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerPath": {
+ // "description": "The path inside the container where the mount is accessible.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^(\\/+[^\\/]+\\/*)+$",
+ // "type": "string"
+ // },
+ // "InstancePath": {
+ // "description": "The path on the host that will be mounted in the container.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^\\/[\\s\\S]*$",
+ // "type": "string"
+ // }
// },
- // "SoftLimit": {
- // "description": "The amount of memory that is reserved for the container.",
- // "maximum": 1024000,
- // "minimum": 4,
- // "type": "integer"
- // }
+ // "required": [
+ // "InstancePath"
+ // ],
+ // "type": "object"
// },
- // "type": "object"
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
// },
// "PortConfiguration": {
// "additionalProperties": false,
@@ -289,12 +918,11 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
// "pattern": "^sha256:[a-fA-F0-9]{64}$",
// "type": "string"
// },
- // "WorkingDirectory": {
- // "description": "The working directory to run commands inside the container in.",
- // "maxLength": 255,
- // "minLength": 1,
- // "pattern": "^.*$",
- // "type": "string"
+ // "Vcpu": {
+ // "description": "The number of virtual CPUs to give to the support group",
+ // "maximum": 10,
+ // "minimum": 0.125,
+ // "type": "number"
// }
// },
// "required": [
@@ -308,45 +936,21 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
// "type": "array",
// "uniqueItems": true
// }
- "container_definitions": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ "support_container_definitions": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: Command
- "command": schema.ListAttribute{ /*START ATTRIBUTE*/
- ElementType: types.StringType,
- Description: "The command that's passed to the container.",
- Optional: true,
- Computed: true,
- Validators: []validator.List{ /*START VALIDATORS*/
- listvalidator.SizeBetween(1, 20),
- listvalidator.ValueStringsAre(
- stringvalidator.LengthBetween(1, 255),
- stringvalidator.RegexMatches(regexp.MustCompile("^.*$"), ""),
- ),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/
- listplanmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
// Property: ContainerName
"container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
- Required: true,
+ Description: "A descriptive label for the container definition.",
+ Optional: true,
+ Computed: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthBetween(1, 128),
stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-]+$"), ""),
+ fwvalidators.NotNullString(),
}, /*END VALIDATORS*/
- }, /*END ATTRIBUTE*/
- // Property: Cpu
- "cpu": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units",
- Optional: true,
- Computed: true,
- Validators: []validator.Int64{ /*START VALIDATORS*/
- int64validator.Between(1, 10240),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
- int64planmodifier.UseStateForUnknown(),
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: DependsOn
@@ -398,24 +1002,8 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
listplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
- // Property: EntryPoint
- "entry_point": schema.ListAttribute{ /*START ATTRIBUTE*/
- ElementType: types.StringType,
- Description: "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.",
- Optional: true,
- Computed: true,
- Validators: []validator.List{ /*START VALIDATORS*/
- listvalidator.SizeBetween(1, 20),
- listvalidator.ValueStringsAre(
- stringvalidator.LengthBetween(1, 1024),
- ),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/
- listplanmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: Environment
- "environment": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ // Property: EnvironmentOverride
+ "environment_override": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
// Property: Name
@@ -547,45 +1135,85 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
// Property: ImageUri
"image_uri": schema.StringAttribute{ /*START ATTRIBUTE*/
Description: "Specifies the image URI of this container.",
- Required: true,
+ Optional: true,
+ Computed: true,
Validators: []validator.String{ /*START VALIDATORS*/
stringvalidator.LengthBetween(1, 255),
stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-_\\.@\\/:]+$"), ""),
+ fwvalidators.NotNullString(),
}, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
- // Property: MemoryLimits
- "memory_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
- Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: HardLimit
- "hard_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The hard limit of memory to reserve for the container.",
- Optional: true,
- Computed: true,
- Validators: []validator.Int64{ /*START VALIDATORS*/
- int64validator.Between(4, 1024000),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
- int64planmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: SoftLimit
- "soft_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The amount of memory that is reserved for the container.",
- Optional: true,
- Computed: true,
- Validators: []validator.Int64{ /*START VALIDATORS*/
- int64validator.Between(4, 1024000),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
- int64planmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- }, /*END SCHEMA*/
- Description: "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.",
+ // Property: MemoryHardLimitMebibytes
+ "memory_hard_limit_mebibytes": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total memory limit of container groups following this definition in MiB",
Optional: true,
Computed: true,
- PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/
- objectplanmodifier.UseStateForUnknown(),
+ Validators: []validator.Int64{ /*START VALIDATORS*/
+ int64validator.Between(4, 1024000),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
+ int64planmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: MountPoints
+ "mount_points": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: AccessLevel
+ "access_level": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The access permissions for the mounted path.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.OneOf(
+ "READ_ONLY",
+ "READ_AND_WRITE",
+ ),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerPath
+ "container_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path inside the container where the mount is accessible.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 1024),
+ stringvalidator.RegexMatches(regexp.MustCompile("^(\\/+[^\\/]+\\/*)+$"), ""),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: InstancePath
+ "instance_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path on the host that will be mounted in the container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 1024),
+ stringvalidator.RegexMatches(regexp.MustCompile("^\\/[\\s\\S]*$"), ""),
+ fwvalidators.NotNullString(),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of mount point configurations to be used in a container.",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.Set{ /*START VALIDATORS*/
+ setvalidator.SizeBetween(1, 10),
+ }, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/
+ setplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: PortConfiguration
@@ -670,128 +1298,28 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
stringplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
- // Property: WorkingDirectory
- "working_directory": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The working directory to run commands inside the container in.",
+ // Property: Vcpu
+ "vcpu": schema.Float64Attribute{ /*START ATTRIBUTE*/
+ Description: "The number of virtual CPUs to give to the support group",
Optional: true,
Computed: true,
- Validators: []validator.String{ /*START VALIDATORS*/
- stringvalidator.LengthBetween(1, 255),
- stringvalidator.RegexMatches(regexp.MustCompile("^.*$"), ""),
+ Validators: []validator.Float64{ /*START VALIDATORS*/
+ float64validator.Between(0.125000, 10.000000),
}, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.UseStateForUnknown(),
+ PlanModifiers: []planmodifier.Float64{ /*START PLAN MODIFIERS*/
+ float64planmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
}, /*END SCHEMA*/
}, /*END NESTED OBJECT*/
- Description: "A collection of container definitions that define the containers in this group.",
- Required: true,
+ Description: "A collection of support container definitions that define the containers in this group.",
+ Optional: true,
+ Computed: true,
Validators: []validator.Set{ /*START VALIDATORS*/
setvalidator.SizeBetween(1, 10),
}, /*END VALIDATORS*/
PlanModifiers: []planmodifier.Set{ /*START PLAN MODIFIERS*/
- setplanmodifier.RequiresReplace(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: ContainerGroupDefinitionArn
- // CloudFormation resource type schema:
- //
- // {
- // "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
- // "maxLength": 512,
- // "minLength": 1,
- // "pattern": "^arn:.*:containergroupdefinition/containergroupdefinition-[a-zA-Z0-9-]+$|^arn:.*:containergroupdefinition/[a-zA-Z0-9-\\:]+$",
- // "type": "string"
- // }
- "container_group_definition_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
- Computed: true,
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: CreationTime
- // CloudFormation resource type schema:
- //
- // {
- // "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
- // "type": "string"
- // }
- "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
- Computed: true,
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.UseStateForUnknown(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: Name
- // CloudFormation resource type schema:
- //
- // {
- // "description": "A descriptive label for the container group definition.",
- // "maxLength": 128,
- // "minLength": 1,
- // "pattern": "^[a-zA-Z0-9-]+$",
- // "type": "string"
- // }
- "name": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A descriptive label for the container group definition.",
- Required: true,
- Validators: []validator.String{ /*START VALIDATORS*/
- stringvalidator.LengthBetween(1, 128),
- stringvalidator.RegexMatches(regexp.MustCompile("^[a-zA-Z0-9-]+$"), ""),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.RequiresReplace(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: OperatingSystem
- // CloudFormation resource type schema:
- //
- // {
- // "description": "The operating system of the container group",
- // "enum": [
- // "AMAZON_LINUX_2023"
- // ],
- // "type": "string"
- // }
- "operating_system": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The operating system of the container group",
- Required: true,
- Validators: []validator.String{ /*START VALIDATORS*/
- stringvalidator.OneOf(
- "AMAZON_LINUX_2023",
- ),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.RequiresReplace(),
- }, /*END PLAN MODIFIERS*/
- }, /*END ATTRIBUTE*/
- // Property: SchedulingStrategy
- // CloudFormation resource type schema:
- //
- // {
- // "description": "Specifies whether the container group includes replica or daemon containers.",
- // "enum": [
- // "REPLICA",
- // "DAEMON"
- // ],
- // "type": "string"
- // }
- "scheduling_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "Specifies whether the container group includes replica or daemon containers.",
- Optional: true,
- Computed: true,
- Validators: []validator.String{ /*START VALIDATORS*/
- stringvalidator.OneOf(
- "REPLICA",
- "DAEMON",
- ),
- }, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
- stringplanmodifier.UseStateForUnknown(),
- stringplanmodifier.RequiresReplaceIfConfigured(),
+ setplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
// Property: Tags
@@ -873,42 +1401,71 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
setplanmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
- // Property: TotalCpuLimit
+ // Property: TotalMemoryLimitMebibytes
// CloudFormation resource type schema:
//
// {
- // "description": "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)",
- // "maximum": 10240,
- // "minimum": 128,
+ // "description": "The total memory limit of container groups following this definition in MiB",
+ // "maximum": 1024000,
+ // "minimum": 4,
// "type": "integer"
// }
- "total_cpu_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)",
+ "total_memory_limit_mebibytes": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total memory limit of container groups following this definition in MiB",
Required: true,
Validators: []validator.Int64{ /*START VALIDATORS*/
- int64validator.Between(128, 10240),
+ int64validator.Between(4, 1024000),
}, /*END VALIDATORS*/
- PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
- int64planmodifier.RequiresReplace(),
- }, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
- // Property: TotalMemoryLimit
+ // Property: TotalVcpuLimit
// CloudFormation resource type schema:
//
// {
- // "description": "The maximum amount of memory (in MiB) to allocate for this container group.",
- // "maximum": 1024000,
- // "minimum": 4,
- // "type": "integer"
+ // "description": "The total amount of virtual CPUs on the container group definition",
+ // "maximum": 10,
+ // "minimum": 0.125,
+ // "type": "number"
// }
- "total_memory_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum amount of memory (in MiB) to allocate for this container group.",
+ "total_vcpu_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total amount of virtual CPUs on the container group definition",
Required: true,
- Validators: []validator.Int64{ /*START VALIDATORS*/
- int64validator.Between(4, 1024000),
+ Validators: []validator.Float64{ /*START VALIDATORS*/
+ float64validator.Between(0.125000, 10.000000),
+ }, /*END VALIDATORS*/
+ }, /*END ATTRIBUTE*/
+ // Property: VersionDescription
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The description of this version",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ "version_description": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The description of this version",
+ Optional: true,
+ Computed: true,
+ Validators: []validator.String{ /*START VALIDATORS*/
+ stringvalidator.LengthBetween(1, 1024),
}, /*END VALIDATORS*/
+ PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/
+ stringplanmodifier.UseStateForUnknown(),
+ }, /*END PLAN MODIFIERS*/
+ }, /*END ATTRIBUTE*/
+ // Property: VersionNumber
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The version of this ContainerGroupDefinition",
+ // "minimum": 0,
+ // "type": "integer"
+ // }
+ "version_number": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The version of this ContainerGroupDefinition",
+ Computed: true,
PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/
- int64planmodifier.RequiresReplace(),
+ int64planmodifier.UseStateForUnknown(),
}, /*END PLAN MODIFIERS*/
}, /*END ATTRIBUTE*/
} /*END SCHEMA*/
@@ -933,41 +1490,48 @@ func containerGroupDefinitionResource(ctx context.Context) (resource.Resource, e
opts = opts.WithCloudFormationTypeName("AWS::GameLift::ContainerGroupDefinition").WithTerraformTypeName("awscc_gamelift_container_group_definition")
opts = opts.WithTerraformSchema(schema)
opts = opts.WithAttributeNameMap(map[string]string{
- "command": "Command",
- "condition": "Condition",
- "container_definitions": "ContainerDefinitions",
- "container_group_definition_arn": "ContainerGroupDefinitionArn",
- "container_name": "ContainerName",
- "container_port_ranges": "ContainerPortRanges",
- "cpu": "Cpu",
- "creation_time": "CreationTime",
- "depends_on": "DependsOn",
- "entry_point": "EntryPoint",
- "environment": "Environment",
- "essential": "Essential",
- "from_port": "FromPort",
- "hard_limit": "HardLimit",
- "health_check": "HealthCheck",
- "image_uri": "ImageUri",
- "interval": "Interval",
- "key": "Key",
- "memory_limits": "MemoryLimits",
- "name": "Name",
- "operating_system": "OperatingSystem",
- "port_configuration": "PortConfiguration",
- "protocol": "Protocol",
- "resolved_image_digest": "ResolvedImageDigest",
- "retries": "Retries",
- "scheduling_strategy": "SchedulingStrategy",
- "soft_limit": "SoftLimit",
- "start_period": "StartPeriod",
- "tags": "Tags",
- "timeout": "Timeout",
- "to_port": "ToPort",
- "total_cpu_limit": "TotalCpuLimit",
- "total_memory_limit": "TotalMemoryLimit",
- "value": "Value",
- "working_directory": "WorkingDirectory",
+ "access_level": "AccessLevel",
+ "command": "Command",
+ "condition": "Condition",
+ "container_group_definition_arn": "ContainerGroupDefinitionArn",
+ "container_group_type": "ContainerGroupType",
+ "container_name": "ContainerName",
+ "container_path": "ContainerPath",
+ "container_port_ranges": "ContainerPortRanges",
+ "creation_time": "CreationTime",
+ "depends_on": "DependsOn",
+ "environment_override": "EnvironmentOverride",
+ "essential": "Essential",
+ "from_port": "FromPort",
+ "game_server_container_definition": "GameServerContainerDefinition",
+ "health_check": "HealthCheck",
+ "image_uri": "ImageUri",
+ "instance_path": "InstancePath",
+ "interval": "Interval",
+ "key": "Key",
+ "memory_hard_limit_mebibytes": "MemoryHardLimitMebibytes",
+ "mount_points": "MountPoints",
+ "name": "Name",
+ "operating_system": "OperatingSystem",
+ "port_configuration": "PortConfiguration",
+ "protocol": "Protocol",
+ "resolved_image_digest": "ResolvedImageDigest",
+ "retries": "Retries",
+ "server_sdk_version": "ServerSdkVersion",
+ "source_version_number": "SourceVersionNumber",
+ "start_period": "StartPeriod",
+ "status": "Status",
+ "status_reason": "StatusReason",
+ "support_container_definitions": "SupportContainerDefinitions",
+ "tags": "Tags",
+ "timeout": "Timeout",
+ "to_port": "ToPort",
+ "total_memory_limit_mebibytes": "TotalMemoryLimitMebibytes",
+ "total_vcpu_limit": "TotalVcpuLimit",
+ "value": "Value",
+ "vcpu": "Vcpu",
+ "version_description": "VersionDescription",
+ "version_number": "VersionNumber",
})
opts = opts.WithCreateTimeoutInMinutes(0).WithDeleteTimeoutInMinutes(0)
diff --git a/internal/aws/gamelift/container_group_definition_singular_data_source_gen.go b/internal/aws/gamelift/container_group_definition_singular_data_source_gen.go
index 6f6e70725..13589976e 100644
--- a/internal/aws/gamelift/container_group_definition_singular_data_source_gen.go
+++ b/internal/aws/gamelift/container_group_definition_singular_data_source_gen.go
@@ -23,43 +23,448 @@ func init() {
// This Terraform data source corresponds to the CloudFormation AWS::GameLift::ContainerGroupDefinition resource.
func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSource, error) {
attributes := map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: ContainerDefinitions
+ // Property: ContainerGroupDefinitionArn
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
+ // "maxLength": 512,
+ // "minLength": 1,
+ // "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$",
+ // "type": "string"
+ // }
+ "container_group_definition_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerGroupType
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The scope of the container group",
+ // "enum": [
+ // "GAME_SERVER",
+ // "PER_INSTANCE"
+ // ],
+ // "type": "string"
+ // }
+ "container_group_type": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The scope of the container group",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: CreationTime
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
+ // "type": "string"
+ // }
+ "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: GameServerContainerDefinition
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "additionalProperties": false,
+ // "description": "Specifies the information required to run game servers with this container group",
+ // "properties": {
+ // "ContainerName": {
+ // "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // },
+ // "DependsOn": {
+ // "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
+ // "insertionOrder": true,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A dependency that impacts a container's startup and shutdown.",
+ // "properties": {
+ // "Condition": {
+ // "description": "The type of dependency.",
+ // "enum": [
+ // "START",
+ // "COMPLETE",
+ // "SUCCESS",
+ // "HEALTHY"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerName": {
+ // "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "ContainerName",
+ // "Condition"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "EnvironmentOverride": {
+ // "description": "The environment variables to pass to a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "An environment variable to set inside a container, in the form of a key-value pair.",
+ // "properties": {
+ // "Name": {
+ // "description": "The environment variable name.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^.*$",
+ // "type": "string"
+ // },
+ // "Value": {
+ // "description": "The environment variable value.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^.*$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "Name",
+ // "Value"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 20,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "ImageUri": {
+ // "description": "Specifies the image URI of this container.",
+ // "maxLength": 255,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$",
+ // "type": "string"
+ // },
+ // "MountPoints": {
+ // "description": "A list of mount point configurations to be used in a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Defines the mount point configuration within a container.",
+ // "properties": {
+ // "AccessLevel": {
+ // "description": "The access permissions for the mounted path.",
+ // "enum": [
+ // "READ_ONLY",
+ // "READ_AND_WRITE"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerPath": {
+ // "description": "The path inside the container where the mount is accessible.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^(\\/+[^\\/]+\\/*)+$",
+ // "type": "string"
+ // },
+ // "InstancePath": {
+ // "description": "The path on the host that will be mounted in the container.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^\\/[\\s\\S]*$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "InstancePath"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // },
+ // "PortConfiguration": {
+ // "additionalProperties": false,
+ // "description": "Defines the ports on the container.",
+ // "properties": {
+ // "ContainerPortRanges": {
+ // "description": "Specifies one or more ranges of ports on a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "A set of one or more port numbers that can be opened on the container.",
+ // "properties": {
+ // "FromPort": {
+ // "description": "A starting value for the range of allowed port numbers.",
+ // "maximum": 60000,
+ // "minimum": 1,
+ // "type": "integer"
+ // },
+ // "Protocol": {
+ // "description": "Defines the protocol of these ports.",
+ // "enum": [
+ // "TCP",
+ // "UDP"
+ // ],
+ // "type": "string"
+ // },
+ // "ToPort": {
+ // "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
+ // "maximum": 60000,
+ // "minimum": 1,
+ // "type": "integer"
+ // }
+ // },
+ // "required": [
+ // "FromPort",
+ // "Protocol",
+ // "ToPort"
+ // ],
+ // "type": "object"
+ // },
+ // "maxItems": 100,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
+ // }
+ // },
+ // "required": [
+ // "ContainerPortRanges"
+ // ],
+ // "type": "object"
+ // },
+ // "ResolvedImageDigest": {
+ // "description": "The digest of the container image.",
+ // "pattern": "^sha256:[a-fA-F0-9]{64}$",
+ // "type": "string"
+ // },
+ // "ServerSdkVersion": {
+ // "description": "The version of the server SDK used in this container group",
+ // "maxLength": 128,
+ // "pattern": "^\\d+\\.\\d+\\.\\d+$",
+ // "type": "string"
+ // }
+ // },
+ // "required": [
+ // "ContainerName",
+ // "ImageUri",
+ // "ServerSdkVersion"
+ // ],
+ // "type": "object"
+ // }
+ "game_server_container_definition": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: ContainerName
+ "container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: DependsOn
+ "depends_on": schema.ListNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: Condition
+ "condition": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The type of dependency.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerName
+ "container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container definition. The container being defined depends on this container's condition.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: EnvironmentOverride
+ "environment_override": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: Name
+ "name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The environment variable name.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: Value
+ "value": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The environment variable value.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "The environment variables to pass to a container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ImageUri
+ "image_uri": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "Specifies the image URI of this container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: MountPoints
+ "mount_points": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: AccessLevel
+ "access_level": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The access permissions for the mounted path.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerPath
+ "container_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path inside the container where the mount is accessible.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: InstancePath
+ "instance_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path on the host that will be mounted in the container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of mount point configurations to be used in a container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: PortConfiguration
+ "port_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: ContainerPortRanges
+ "container_port_ranges": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: FromPort
+ "from_port": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "A starting value for the range of allowed port numbers.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: Protocol
+ "protocol": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "Defines the protocol of these ports.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ToPort
+ "to_port": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "Specifies one or more ranges of ports on a container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ Description: "Defines the ports on the container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ResolvedImageDigest
+ "resolved_image_digest": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The digest of the container image.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ServerSdkVersion
+ "server_sdk_version": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The version of the server SDK used in this container group",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ Description: "Specifies the information required to run game servers with this container group",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: Name
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A descriptive label for the container group definition.",
+ // "maxLength": 128,
+ // "minLength": 1,
+ // "pattern": "^[a-zA-Z0-9-]+$",
+ // "type": "string"
+ // }
+ "name": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A descriptive label for the container group definition.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: OperatingSystem
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The operating system of the container group",
+ // "enum": [
+ // "AMAZON_LINUX_2023"
+ // ],
+ // "type": "string"
+ // }
+ "operating_system": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The operating system of the container group",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: SourceVersionNumber
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A specific ContainerGroupDefinition version to be updated",
+ // "minimum": 0,
+ // "type": "integer"
+ // }
+ "source_version_number": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "A specific ContainerGroupDefinition version to be updated",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: Status
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A string indicating ContainerGroupDefinition status.",
+ // "enum": [
+ // "READY",
+ // "COPYING",
+ // "FAILED"
+ // ],
+ // "type": "string"
+ // }
+ "status": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A string indicating ContainerGroupDefinition status.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: StatusReason
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "A string indicating the reason for ContainerGroupDefinition status.",
+ // "type": "string"
+ // }
+ "status_reason": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "A string indicating the reason for ContainerGroupDefinition status.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: SupportContainerDefinitions
// CloudFormation resource type schema:
//
// {
- // "description": "A collection of container definitions that define the containers in this group.",
+ // "description": "A collection of support container definitions that define the containers in this group.",
// "insertionOrder": false,
// "items": {
// "additionalProperties": false,
- // "description": "Details about a container that is used in a container fleet",
+ // "description": "Supports the function of the main container group",
// "properties": {
- // "Command": {
- // "description": "The command that's passed to the container.",
- // "insertionOrder": true,
- // "items": {
- // "maxLength": 255,
- // "minLength": 1,
- // "pattern": "^.*$",
- // "type": "string"
- // },
- // "maxItems": 20,
- // "minItems": 1,
- // "type": "array",
- // "uniqueItems": false
- // },
// "ContainerName": {
- // "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
+ // "description": "A descriptive label for the container definition.",
// "maxLength": 128,
// "minLength": 1,
// "pattern": "^[a-zA-Z0-9-]+$",
// "type": "string"
// },
- // "Cpu": {
- // "description": "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units",
- // "maximum": 10240,
- // "minimum": 1,
- // "type": "integer"
- // },
// "DependsOn": {
// "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
// "insertionOrder": true,
@@ -96,20 +501,7 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
// "type": "array",
// "uniqueItems": true
// },
- // "EntryPoint": {
- // "description": "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.",
- // "insertionOrder": true,
- // "items": {
- // "maxLength": 1024,
- // "minLength": 1,
- // "type": "string"
- // },
- // "maxItems": 20,
- // "minItems": 1,
- // "type": "array",
- // "uniqueItems": false
- // },
- // "Environment": {
+ // "EnvironmentOverride": {
// "description": "The environment variables to pass to a container.",
// "insertionOrder": false,
// "items": {
@@ -201,24 +593,51 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
// "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$",
// "type": "string"
// },
- // "MemoryLimits": {
- // "additionalProperties": false,
- // "description": "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.",
- // "properties": {
- // "HardLimit": {
- // "description": "The hard limit of memory to reserve for the container.",
- // "maximum": 1024000,
- // "minimum": 4,
- // "type": "integer"
+ // "MemoryHardLimitMebibytes": {
+ // "description": "The total memory limit of container groups following this definition in MiB",
+ // "maximum": 1024000,
+ // "minimum": 4,
+ // "type": "integer"
+ // },
+ // "MountPoints": {
+ // "description": "A list of mount point configurations to be used in a container.",
+ // "insertionOrder": false,
+ // "items": {
+ // "additionalProperties": false,
+ // "description": "Defines the mount point configuration within a container.",
+ // "properties": {
+ // "AccessLevel": {
+ // "description": "The access permissions for the mounted path.",
+ // "enum": [
+ // "READ_ONLY",
+ // "READ_AND_WRITE"
+ // ],
+ // "type": "string"
+ // },
+ // "ContainerPath": {
+ // "description": "The path inside the container where the mount is accessible.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^(\\/+[^\\/]+\\/*)+$",
+ // "type": "string"
+ // },
+ // "InstancePath": {
+ // "description": "The path on the host that will be mounted in the container.",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "pattern": "^\\/[\\s\\S]*$",
+ // "type": "string"
+ // }
// },
- // "SoftLimit": {
- // "description": "The amount of memory that is reserved for the container.",
- // "maximum": 1024000,
- // "minimum": 4,
- // "type": "integer"
- // }
+ // "required": [
+ // "InstancePath"
+ // ],
+ // "type": "object"
// },
- // "type": "object"
+ // "maxItems": 10,
+ // "minItems": 1,
+ // "type": "array",
+ // "uniqueItems": true
// },
// "PortConfiguration": {
// "additionalProperties": false,
@@ -275,12 +694,11 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
// "pattern": "^sha256:[a-fA-F0-9]{64}$",
// "type": "string"
// },
- // "WorkingDirectory": {
- // "description": "The working directory to run commands inside the container in.",
- // "maxLength": 255,
- // "minLength": 1,
- // "pattern": "^.*$",
- // "type": "string"
+ // "Vcpu": {
+ // "description": "The number of virtual CPUs to give to the support group",
+ // "maximum": 10,
+ // "minimum": 0.125,
+ // "type": "number"
// }
// },
// "required": [
@@ -294,23 +712,12 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
// "type": "array",
// "uniqueItems": true
// }
- "container_definitions": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ "support_container_definitions": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: Command
- "command": schema.ListAttribute{ /*START ATTRIBUTE*/
- ElementType: types.StringType,
- Description: "The command that's passed to the container.",
- Computed: true,
- }, /*END ATTRIBUTE*/
// Property: ContainerName
"container_name": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: Cpu
- "cpu": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units",
+ Description: "A descriptive label for the container definition.",
Computed: true,
}, /*END ATTRIBUTE*/
// Property: DependsOn
@@ -332,14 +739,8 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
Description: "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
Computed: true,
}, /*END ATTRIBUTE*/
- // Property: EntryPoint
- "entry_point": schema.ListAttribute{ /*START ATTRIBUTE*/
- ElementType: types.StringType,
- Description: "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: Environment
- "environment": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ // Property: EnvironmentOverride
+ "environment_override": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
// Property: Name
@@ -400,21 +801,33 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
Description: "Specifies the image URI of this container.",
Computed: true,
}, /*END ATTRIBUTE*/
- // Property: MemoryLimits
- "memory_limits": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/
- Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
- // Property: HardLimit
- "hard_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The hard limit of memory to reserve for the container.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: SoftLimit
- "soft_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The amount of memory that is reserved for the container.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- }, /*END SCHEMA*/
- Description: "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.",
+ // Property: MemoryHardLimitMebibytes
+ "memory_hard_limit_mebibytes": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total memory limit of container groups following this definition in MiB",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: MountPoints
+ "mount_points": schema.SetNestedAttribute{ /*START ATTRIBUTE*/
+ NestedObject: schema.NestedAttributeObject{ /*START NESTED OBJECT*/
+ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/
+ // Property: AccessLevel
+ "access_level": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The access permissions for the mounted path.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: ContainerPath
+ "container_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path inside the container where the mount is accessible.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: InstancePath
+ "instance_path": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The path on the host that will be mounted in the container.",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ }, /*END SCHEMA*/
+ }, /*END NESTED OBJECT*/
+ Description: "A list of mount point configurations to be used in a container.",
Computed: true,
}, /*END ATTRIBUTE*/
// Property: PortConfiguration
@@ -453,82 +866,14 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
Description: "The digest of the container image.",
Computed: true,
}, /*END ATTRIBUTE*/
- // Property: WorkingDirectory
- "working_directory": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The working directory to run commands inside the container in.",
+ // Property: Vcpu
+ "vcpu": schema.Float64Attribute{ /*START ATTRIBUTE*/
+ Description: "The number of virtual CPUs to give to the support group",
Computed: true,
}, /*END ATTRIBUTE*/
}, /*END SCHEMA*/
}, /*END NESTED OBJECT*/
- Description: "A collection of container definitions that define the containers in this group.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: ContainerGroupDefinitionArn
- // CloudFormation resource type schema:
- //
- // {
- // "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
- // "maxLength": 512,
- // "minLength": 1,
- // "pattern": "^arn:.*:containergroupdefinition/containergroupdefinition-[a-zA-Z0-9-]+$|^arn:.*:containergroupdefinition/[a-zA-Z0-9-\\:]+$",
- // "type": "string"
- // }
- "container_group_definition_arn": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: CreationTime
- // CloudFormation resource type schema:
- //
- // {
- // "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
- // "type": "string"
- // }
- "creation_time": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: Name
- // CloudFormation resource type schema:
- //
- // {
- // "description": "A descriptive label for the container group definition.",
- // "maxLength": 128,
- // "minLength": 1,
- // "pattern": "^[a-zA-Z0-9-]+$",
- // "type": "string"
- // }
- "name": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "A descriptive label for the container group definition.",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: OperatingSystem
- // CloudFormation resource type schema:
- //
- // {
- // "description": "The operating system of the container group",
- // "enum": [
- // "AMAZON_LINUX_2023"
- // ],
- // "type": "string"
- // }
- "operating_system": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "The operating system of the container group",
- Computed: true,
- }, /*END ATTRIBUTE*/
- // Property: SchedulingStrategy
- // CloudFormation resource type schema:
- //
- // {
- // "description": "Specifies whether the container group includes replica or daemon containers.",
- // "enum": [
- // "REPLICA",
- // "DAEMON"
- // ],
- // "type": "string"
- // }
- "scheduling_strategy": schema.StringAttribute{ /*START ATTRIBUTE*/
- Description: "Specifies whether the container group includes replica or daemon containers.",
+ Description: "A collection of support container definitions that define the containers in this group.",
Computed: true,
}, /*END ATTRIBUTE*/
// Property: Tags
@@ -585,30 +930,55 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
Description: "An array of key-value pairs to apply to this resource.",
Computed: true,
}, /*END ATTRIBUTE*/
- // Property: TotalCpuLimit
+ // Property: TotalMemoryLimitMebibytes
// CloudFormation resource type schema:
//
// {
- // "description": "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)",
- // "maximum": 10240,
- // "minimum": 128,
+ // "description": "The total memory limit of container groups following this definition in MiB",
+ // "maximum": 1024000,
+ // "minimum": 4,
// "type": "integer"
// }
- "total_cpu_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)",
+ "total_memory_limit_mebibytes": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total memory limit of container groups following this definition in MiB",
Computed: true,
}, /*END ATTRIBUTE*/
- // Property: TotalMemoryLimit
+ // Property: TotalVcpuLimit
// CloudFormation resource type schema:
//
// {
- // "description": "The maximum amount of memory (in MiB) to allocate for this container group.",
- // "maximum": 1024000,
- // "minimum": 4,
+ // "description": "The total amount of virtual CPUs on the container group definition",
+ // "maximum": 10,
+ // "minimum": 0.125,
+ // "type": "number"
+ // }
+ "total_vcpu_limit": schema.Float64Attribute{ /*START ATTRIBUTE*/
+ Description: "The total amount of virtual CPUs on the container group definition",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: VersionDescription
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The description of this version",
+ // "maxLength": 1024,
+ // "minLength": 1,
+ // "type": "string"
+ // }
+ "version_description": schema.StringAttribute{ /*START ATTRIBUTE*/
+ Description: "The description of this version",
+ Computed: true,
+ }, /*END ATTRIBUTE*/
+ // Property: VersionNumber
+ // CloudFormation resource type schema:
+ //
+ // {
+ // "description": "The version of this ContainerGroupDefinition",
+ // "minimum": 0,
// "type": "integer"
// }
- "total_memory_limit": schema.Int64Attribute{ /*START ATTRIBUTE*/
- Description: "The maximum amount of memory (in MiB) to allocate for this container group.",
+ "version_number": schema.Int64Attribute{ /*START ATTRIBUTE*/
+ Description: "The version of this ContainerGroupDefinition",
Computed: true,
}, /*END ATTRIBUTE*/
} /*END SCHEMA*/
@@ -628,41 +998,48 @@ func containerGroupDefinitionDataSource(ctx context.Context) (datasource.DataSou
opts = opts.WithCloudFormationTypeName("AWS::GameLift::ContainerGroupDefinition").WithTerraformTypeName("awscc_gamelift_container_group_definition")
opts = opts.WithTerraformSchema(schema)
opts = opts.WithAttributeNameMap(map[string]string{
- "command": "Command",
- "condition": "Condition",
- "container_definitions": "ContainerDefinitions",
- "container_group_definition_arn": "ContainerGroupDefinitionArn",
- "container_name": "ContainerName",
- "container_port_ranges": "ContainerPortRanges",
- "cpu": "Cpu",
- "creation_time": "CreationTime",
- "depends_on": "DependsOn",
- "entry_point": "EntryPoint",
- "environment": "Environment",
- "essential": "Essential",
- "from_port": "FromPort",
- "hard_limit": "HardLimit",
- "health_check": "HealthCheck",
- "image_uri": "ImageUri",
- "interval": "Interval",
- "key": "Key",
- "memory_limits": "MemoryLimits",
- "name": "Name",
- "operating_system": "OperatingSystem",
- "port_configuration": "PortConfiguration",
- "protocol": "Protocol",
- "resolved_image_digest": "ResolvedImageDigest",
- "retries": "Retries",
- "scheduling_strategy": "SchedulingStrategy",
- "soft_limit": "SoftLimit",
- "start_period": "StartPeriod",
- "tags": "Tags",
- "timeout": "Timeout",
- "to_port": "ToPort",
- "total_cpu_limit": "TotalCpuLimit",
- "total_memory_limit": "TotalMemoryLimit",
- "value": "Value",
- "working_directory": "WorkingDirectory",
+ "access_level": "AccessLevel",
+ "command": "Command",
+ "condition": "Condition",
+ "container_group_definition_arn": "ContainerGroupDefinitionArn",
+ "container_group_type": "ContainerGroupType",
+ "container_name": "ContainerName",
+ "container_path": "ContainerPath",
+ "container_port_ranges": "ContainerPortRanges",
+ "creation_time": "CreationTime",
+ "depends_on": "DependsOn",
+ "environment_override": "EnvironmentOverride",
+ "essential": "Essential",
+ "from_port": "FromPort",
+ "game_server_container_definition": "GameServerContainerDefinition",
+ "health_check": "HealthCheck",
+ "image_uri": "ImageUri",
+ "instance_path": "InstancePath",
+ "interval": "Interval",
+ "key": "Key",
+ "memory_hard_limit_mebibytes": "MemoryHardLimitMebibytes",
+ "mount_points": "MountPoints",
+ "name": "Name",
+ "operating_system": "OperatingSystem",
+ "port_configuration": "PortConfiguration",
+ "protocol": "Protocol",
+ "resolved_image_digest": "ResolvedImageDigest",
+ "retries": "Retries",
+ "server_sdk_version": "ServerSdkVersion",
+ "source_version_number": "SourceVersionNumber",
+ "start_period": "StartPeriod",
+ "status": "Status",
+ "status_reason": "StatusReason",
+ "support_container_definitions": "SupportContainerDefinitions",
+ "tags": "Tags",
+ "timeout": "Timeout",
+ "to_port": "ToPort",
+ "total_memory_limit_mebibytes": "TotalMemoryLimitMebibytes",
+ "total_vcpu_limit": "TotalVcpuLimit",
+ "value": "Value",
+ "vcpu": "Vcpu",
+ "version_description": "VersionDescription",
+ "version_number": "VersionNumber",
})
v, err := generic.NewSingularDataSource(ctx, opts...)
diff --git a/internal/provider/all_schemas.hcl b/internal/provider/all_schemas.hcl
index 913df48e0..4dc4d1345 100644
--- a/internal/provider/all_schemas.hcl
+++ b/internal/provider/all_schemas.hcl
@@ -2251,11 +2251,6 @@ resource_schema "aws_gamelift_container_fleet" {
resource_schema "aws_gamelift_container_group_definition" {
cloudformation_type_name = "AWS::GameLift::ContainerGroupDefinition"
-
- # Latest schema updates are suppressed.
- # git checkout internal/service/cloudformation/schemas/AWS_GameLift_ContainerGroupDefinition.json
- # Suppression Reason: set of unknown type
- # https://github.com/hashicorp/terraform-provider-awscc/issues/2069
}
resource_schema "aws_gamelift_fleet" {
diff --git a/internal/service/cloudformation/schemas/AWS_GameLift_ContainerGroupDefinition.json b/internal/service/cloudformation/schemas/AWS_GameLift_ContainerGroupDefinition.json
index 43343cb3f..b32949c89 100644
--- a/internal/service/cloudformation/schemas/AWS_GameLift_ContainerGroupDefinition.json
+++ b/internal/service/cloudformation/schemas/AWS_GameLift_ContainerGroupDefinition.json
@@ -1,99 +1,30 @@
{
+ "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json",
+ "typeName": "AWS::GameLift::ContainerGroupDefinition",
+ "description": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition.",
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git",
"tagging": {
- "permissions": [
- "gamelift:ListTagsForResource",
- "gamelift:TagResource",
- "gamelift:UntagResource"
- ],
"taggable": true,
+ "cloudFormationSystemTags": false,
"tagOnCreate": true,
"tagUpdatable": true,
"tagProperty": "/properties/Tags",
- "cloudFormationSystemTags": false
- },
- "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json",
- "typeName": "AWS::GameLift::ContainerGroupDefinition",
- "readOnlyProperties": [
- "/properties/ContainerGroupDefinitionArn",
- "/properties/CreationTime",
- "/properties/ContainerDefinitions/*/ResolvedImageDigest"
- ],
- "description": "The AWS::GameLift::ContainerGroupDefinition resource creates an Amazon GameLift container group definition.",
- "createOnlyProperties": [
- "/properties/Name",
- "/properties/SchedulingStrategy",
- "/properties/TotalMemoryLimit",
- "/properties/TotalCpuLimit",
- "/properties/ContainerDefinitions",
- "/properties/OperatingSystem"
- ],
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "required": [
- "Name",
- "TotalMemoryLimit",
- "TotalCpuLimit",
- "ContainerDefinitions",
- "OperatingSystem"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git",
- "handlers": {
- "read": {
- "permissions": [
- "gamelift:DescribeContainerGroupDefinition",
- "gamelift:ListTagsForResource"
- ]
- },
- "create": {
- "permissions": [
- "gamelift:CreateContainerGroupDefinition",
- "gamelift:DescribeContainerGroupDefinition",
- "gamelift:ListTagsForResource",
- "gamelift:TagResource",
- "ecr:BatchCheckLayerAvailability",
- "ecr:BatchGetImage",
- "ecr:GetDownloadUrlForLayer",
- "ecr:DescribeImages"
- ]
- },
- "update": {
- "permissions": [
- "gamelift:ListTagsForResource",
- "gamelift:TagResource",
- "gamelift:UntagResource"
- ]
- },
- "list": {
- "permissions": [
- "gamelift:ListContainerGroupDefinitions"
- ]
- },
- "delete": {
- "permissions": [
- "gamelift:DescribeContainerGroupDefinition",
- "gamelift:DeleteContainerGroupDefinition"
- ]
- }
+ "permissions": [
+ "gamelift:ListTagsForResource",
+ "gamelift:TagResource",
+ "gamelift:UntagResource"
+ ]
},
- "additionalProperties": false,
"definitions": {
"ContainerPortRange": {
"description": "A set of one or more port numbers that can be opened on the container.",
- "additionalProperties": false,
"type": "object",
"properties": {
"FromPort": {
"description": "A starting value for the range of allowed port numbers.",
- "maximum": 60000,
"type": "integer",
- "minimum": 1
- },
- "ToPort": {
- "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
- "maximum": 60000,
- "type": "integer",
- "minimum": 1
+ "minimum": 1,
+ "maximum": 60000
},
"Protocol": {
"description": "Defines the protocol of these ports.",
@@ -102,38 +33,158 @@
"TCP",
"UDP"
]
+ },
+ "ToPort": {
+ "description": "An ending value for the range of allowed port numbers. Port numbers are end-inclusive. This value must be equal to or greater than FromPort.",
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 60000
}
},
"required": [
"FromPort",
"Protocol",
"ToPort"
- ]
+ ],
+ "additionalProperties": false
},
- "MemoryLimits": {
- "description": "Specifies how much memory is available to the container.",
- "additionalProperties": false,
+ "ContainerHealthCheck": {
+ "description": "Specifies how the process manager checks the health of containers.",
"type": "object",
"properties": {
- "SoftLimit": {
- "description": "The amount of memory that is reserved for the container.",
- "maximum": 1024000,
+ "Command": {
+ "description": "A string array representing the command that the container runs to determine if it is healthy.",
+ "type": "array",
+ "uniqueItems": false,
+ "insertionOrder": true,
+ "minItems": 1,
+ "maxItems": 20,
+ "items": {
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": "^.*$"
+ }
+ },
+ "Interval": {
+ "description": "How often (in seconds) the health is checked.",
"type": "integer",
- "minimum": 4
+ "minimum": 60,
+ "maximum": 300
},
- "HardLimit": {
- "description": "The hard limit of memory to reserve for the container.",
- "maximum": 1024000,
+ "Timeout": {
+ "description": "How many seconds the process manager allows the command to run before canceling it.",
+ "type": "integer",
+ "minimum": 30,
+ "maximum": 60
+ },
+ "Retries": {
+ "description": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)",
+ "type": "integer",
+ "minimum": 5,
+ "maximum": 10
+ },
+ "StartPeriod": {
+ "description": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.",
"type": "integer",
- "minimum": 4
+ "minimum": 0,
+ "maximum": 300
}
- }
+ },
+ "required": [
+ "Command"
+ ],
+ "additionalProperties": false
+ },
+ "PortConfiguration": {
+ "description": "Defines the ports on a container.",
+ "type": "object",
+ "properties": {
+ "ContainerPortRanges": {
+ "description": "Specifies one or more ranges of ports on a container.",
+ "type": "array",
+ "uniqueItems": true,
+ "insertionOrder": false,
+ "minItems": 1,
+ "maxItems": 100,
+ "items": {
+ "$ref": "#/definitions/ContainerPortRange"
+ }
+ }
+ },
+ "required": [
+ "ContainerPortRanges"
+ ],
+ "additionalProperties": false
+ },
+ "ContainerEnvironment": {
+ "description": "An environment variable to set inside a container, in the form of a key-value pair.",
+ "type": "object",
+ "properties": {
+ "Name": {
+ "description": "The environment variable name.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": "^.*$"
+ },
+ "Value": {
+ "description": "The environment variable value.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": "^.*$"
+ }
+ },
+ "required": [
+ "Name",
+ "Value"
+ ],
+ "additionalProperties": false
+ },
+ "ContainerMountPoint": {
+ "description": "Defines the mount point configuration within a container.",
+ "type": "object",
+ "properties": {
+ "InstancePath": {
+ "description": "The path on the host that will be mounted in the container.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1024,
+ "pattern": "^\\/[\\s\\S]*$"
+ },
+ "ContainerPath": {
+ "description": "The path inside the container where the mount is accessible.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1024,
+ "pattern": "^(\\/+[^\\/]+\\/*)+$"
+ },
+ "AccessLevel": {
+ "description": "The access permissions for the mounted path.",
+ "type": "string",
+ "enum": [
+ "READ_ONLY",
+ "READ_AND_WRITE"
+ ]
+ }
+ },
+ "required": [
+ "InstancePath"
+ ],
+ "additionalProperties": false
},
"ContainerDependency": {
"description": "A dependency that impacts a container's startup and shutdown.",
- "additionalProperties": false,
"type": "object",
"properties": {
+ "ContainerName": {
+ "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 128,
+ "pattern": "^[a-zA-Z0-9-]+$"
+ },
"Condition": {
"description": "The type of dependency.",
"type": "string",
@@ -143,249 +194,213 @@
"SUCCESS",
"HEALTHY"
]
- },
- "ContainerName": {
- "minLength": 1,
- "pattern": "^[a-zA-Z0-9-]+$",
- "description": "A descriptive label for the container definition. The container being defined depends on this container's condition.",
- "type": "string",
- "maxLength": 128
}
},
"required": [
"ContainerName",
"Condition"
- ]
+ ],
+ "additionalProperties": false
},
- "ContainerEnvironment": {
- "description": "An environment variable to set inside a container, in the form of a key-value pair.",
- "additionalProperties": false,
+ "Tag": {
+ "description": "A key-value pair to associate with a resource.",
"type": "object",
"properties": {
- "Value": {
- "minLength": 1,
- "pattern": "^.*$",
- "description": "The environment variable value.",
+ "Key": {
+ "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.",
"type": "string",
- "maxLength": 255
- },
- "Name": {
"minLength": 1,
- "pattern": "^.*$",
- "description": "The environment variable name.",
+ "maxLength": 128,
+ "pattern": "^.*$"
+ },
+ "Value": {
+ "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.",
"type": "string",
- "maxLength": 255
+ "minLength": 0,
+ "maxLength": 256,
+ "pattern": "^.*$"
}
},
"required": [
- "Name",
+ "Key",
"Value"
- ]
+ ],
+ "additionalProperties": false
},
- "ContainerDefinition": {
- "description": "Details about a container that is used in a container fleet",
- "additionalProperties": false,
+ "GameServerContainerDefinition": {
+ "description": "Specifies the information required to run game servers with this container group",
"type": "object",
"properties": {
- "WorkingDirectory": {
- "minLength": 1,
- "pattern": "^.*$",
- "description": "The working directory to run commands inside the container in.",
+ "ContainerName": {
+ "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
"type": "string",
- "maxLength": 255
- },
- "MemoryLimits": {
- "description": "Specifies how much memory is available to the container. You must specify at least this parameter or the TotalMemoryLimit parameter of the ContainerGroupDefinition.",
- "$ref": "#/definitions/MemoryLimits"
- },
- "HealthCheck": {
- "description": "Specifies how the health of the containers will be checked.",
- "$ref": "#/definitions/ContainerHealthCheck"
- },
- "Cpu": {
- "description": "The maximum number of CPU units reserved for this container. The value is expressed as an integer amount of CPU units. 1 vCPU is equal to 1024 CPU units",
- "maximum": 10240,
- "type": "integer",
- "minimum": 1
+ "minLength": 1,
+ "maxLength": 128,
+ "pattern": "^[a-zA-Z0-9-]+$"
},
- "EntryPoint": {
- "minItems": 1,
- "maxItems": 20,
- "uniqueItems": false,
- "description": "The entry point that's passed to the container so that it will run as an executable. If there are multiple arguments, each argument is a string in the array.",
- "insertionOrder": true,
+ "DependsOn": {
+ "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
"type": "array",
+ "uniqueItems": true,
+ "insertionOrder": true,
+ "minItems": 1,
+ "maxItems": 10,
"items": {
- "minLength": 1,
- "type": "string",
- "maxLength": 1024
+ "$ref": "#/definitions/ContainerDependency"
}
},
+ "ServerSdkVersion": {
+ "description": "The version of the server SDK used in this container group",
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
+ },
"ImageUri": {
- "minLength": 1,
- "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$",
"description": "Specifies the image URI of this container.",
"type": "string",
- "maxLength": 255
+ "minLength": 1,
+ "maxLength": 255,
+ "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$"
},
"ResolvedImageDigest": {
- "pattern": "^sha256:[a-fA-F0-9]{64}$",
"description": "The digest of the container image.",
- "type": "string"
- },
- "Essential": {
- "description": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.",
- "type": "boolean"
- },
- "PortConfiguration": {
- "description": "Defines the ports on the container.",
- "$ref": "#/definitions/PortConfiguration"
- },
- "DependsOn": {
- "minItems": 1,
- "maxItems": 10,
- "uniqueItems": true,
- "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
- "insertionOrder": true,
- "type": "array",
- "items": {
- "$ref": "#/definitions/ContainerDependency"
- }
- },
- "ContainerName": {
- "minLength": 1,
- "pattern": "^[a-zA-Z0-9-]+$",
- "description": "A descriptive label for the container definition. Container definition names must be unique with a container group definition.",
"type": "string",
- "maxLength": 128
+ "pattern": "^sha256:[a-fA-F0-9]{64}$"
},
- "Command": {
+ "EnvironmentOverride": {
+ "description": "The environment variables to pass to a container.",
+ "type": "array",
+ "uniqueItems": true,
+ "insertionOrder": false,
"minItems": 1,
"maxItems": 20,
- "uniqueItems": false,
- "description": "The command that's passed to the container.",
- "insertionOrder": true,
- "type": "array",
"items": {
- "minLength": 1,
- "pattern": "^.*$",
- "type": "string",
- "maxLength": 255
+ "$ref": "#/definitions/ContainerEnvironment"
}
},
- "Environment": {
- "minItems": 1,
- "maxItems": 20,
+ "PortConfiguration": {
+ "description": "Defines the ports on the container.",
+ "$ref": "#/definitions/PortConfiguration"
+ },
+ "MountPoints": {
+ "description": "A list of mount point configurations to be used in a container.",
+ "type": "array",
"uniqueItems": true,
- "description": "The environment variables to pass to a container.",
"insertionOrder": false,
- "type": "array",
+ "minItems": 1,
+ "maxItems": 10,
"items": {
- "$ref": "#/definitions/ContainerEnvironment"
+ "$ref": "#/definitions/ContainerMountPoint"
}
}
},
"required": [
"ContainerName",
- "ImageUri"
- ]
+ "ImageUri",
+ "ServerSdkVersion"
+ ],
+ "additionalProperties": false
},
- "Tag": {
- "description": "A key-value pair to associate with a resource.",
- "additionalProperties": false,
+ "SupportContainerDefinition": {
+ "description": "Supports the function of the main container group",
"type": "object",
"properties": {
- "Value": {
- "minLength": 0,
- "pattern": "^.*$",
- "description": "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length.",
+ "ContainerName": {
+ "description": "A descriptive label for the container definition.",
"type": "string",
- "maxLength": 256
+ "minLength": 1,
+ "maxLength": 128,
+ "pattern": "^[a-zA-Z0-9-]+$"
},
- "Key": {
+ "Vcpu": {
+ "description": "The number of virtual CPUs to give to the support group",
+ "type": "number",
+ "minimum": 0.125,
+ "maximum": 10
+ },
+ "DependsOn": {
+ "description": "A list of container dependencies that determines when this container starts up and shuts down. For container groups with multiple containers, dependencies let you define a startup/shutdown sequence across the containers.",
+ "type": "array",
+ "uniqueItems": true,
+ "insertionOrder": true,
+ "minItems": 1,
+ "maxItems": 10,
+ "items": {
+ "$ref": "#/definitions/ContainerDependency"
+ }
+ },
+ "Essential": {
+ "description": "Specifies if the container is essential. If an essential container fails a health check, then all containers in the container group will be restarted. You must specify exactly 1 essential container in a container group.",
+ "type": "boolean"
+ },
+ "ImageUri": {
+ "description": "Specifies the image URI of this container.",
+ "type": "string",
"minLength": 1,
- "pattern": "^.*$",
- "description": "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length.",
+ "maxLength": 255,
+ "pattern": "^[a-zA-Z0-9-_\\.@\\/:]+$"
+ },
+ "ResolvedImageDigest": {
+ "description": "The digest of the container image.",
"type": "string",
- "maxLength": 128
- }
- },
- "required": [
- "Key",
- "Value"
- ]
- },
- "PortConfiguration": {
- "description": "Defines the ports on a container.",
- "additionalProperties": false,
- "type": "object",
- "properties": {
- "ContainerPortRanges": {
- "minItems": 1,
- "maxItems": 100,
+ "pattern": "^sha256:[a-fA-F0-9]{64}$"
+ },
+ "MemoryHardLimitMebibytes": {
+ "description": "The total memory limit of container groups following this definition in MiB",
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 1024000
+ },
+ "EnvironmentOverride": {
+ "description": "The environment variables to pass to a container.",
+ "type": "array",
"uniqueItems": true,
- "description": "Specifies one or more ranges of ports on a container.",
"insertionOrder": false,
- "type": "array",
- "items": {
- "$ref": "#/definitions/ContainerPortRange"
- }
- }
- },
- "required": [
- "ContainerPortRanges"
- ]
- },
- "ContainerHealthCheck": {
- "description": "Specifies how the process manager checks the health of containers.",
- "additionalProperties": false,
- "type": "object",
- "properties": {
- "Command": {
"minItems": 1,
"maxItems": 20,
- "uniqueItems": false,
- "description": "A string array representing the command that the container runs to determine if it is healthy.",
- "insertionOrder": true,
- "type": "array",
"items": {
- "minLength": 1,
- "pattern": "^.*$",
- "type": "string",
- "maxLength": 255
+ "$ref": "#/definitions/ContainerEnvironment"
}
},
- "Timeout": {
- "description": "How many seconds the process manager allows the command to run before canceling it.",
- "maximum": 60,
- "type": "integer",
- "minimum": 30
- },
- "Retries": {
- "description": "How many times the process manager will retry the command after a timeout. (The first run of the command does not count as a retry.)",
- "maximum": 10,
- "type": "integer",
- "minimum": 5
+ "PortConfiguration": {
+ "description": "Defines the ports on the container.",
+ "$ref": "#/definitions/PortConfiguration"
},
- "Interval": {
- "description": "How often (in seconds) the health is checked.",
- "maximum": 300,
- "type": "integer",
- "minimum": 60
+ "HealthCheck": {
+ "description": "Specifies how the health of the containers will be checked.",
+ "$ref": "#/definitions/ContainerHealthCheck"
},
- "StartPeriod": {
- "description": "The optional grace period (in seconds) to give a container time to boostrap before teh health check is declared failed.",
- "maximum": 300,
- "type": "integer",
- "minimum": 0
+ "MountPoints": {
+ "description": "A list of mount point configurations to be used in a container.",
+ "type": "array",
+ "uniqueItems": true,
+ "insertionOrder": false,
+ "minItems": 1,
+ "maxItems": 10,
+ "items": {
+ "$ref": "#/definitions/ContainerMountPoint"
+ }
}
},
"required": [
- "Command"
- ]
+ "ContainerName",
+ "ImageUri"
+ ],
+ "additionalProperties": false
}
},
"properties": {
+ "ContainerGroupDefinitionArn": {
+ "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 512,
+ "pattern": "^arn:.*:containergroupdefinition\\/[a-zA-Z0-9\\-]+(:[0-9]+)?$"
+ },
+ "CreationTime": {
+ "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
+ "type": "string"
+ },
"OperatingSystem": {
"description": "The operating system of the container group",
"type": "string",
@@ -394,64 +409,145 @@
]
},
"Name": {
- "minLength": 1,
- "pattern": "^[a-zA-Z0-9-]+$",
"description": "A descriptive label for the container group definition.",
"type": "string",
- "maxLength": 128
- },
- "ContainerGroupDefinitionArn": {
"minLength": 1,
- "pattern": "^arn:.*:containergroupdefinition/containergroupdefinition-[a-zA-Z0-9-]+$|^arn:.*:containergroupdefinition/[a-zA-Z0-9-\\:]+$",
- "description": "The Amazon Resource Name (ARN) that is assigned to a Amazon GameLift container group resource and uniquely identifies it across all AWS Regions.",
- "type": "string",
- "maxLength": 512
+ "maxLength": 128,
+ "pattern": "^[a-zA-Z0-9-]+$"
},
- "SchedulingStrategy": {
- "description": "Specifies whether the container group includes replica or daemon containers.",
+ "ContainerGroupType": {
+ "description": "The scope of the container group",
"type": "string",
"enum": [
- "REPLICA",
- "DAEMON"
+ "GAME_SERVER",
+ "PER_INSTANCE"
]
},
- "TotalMemoryLimit": {
- "description": "The maximum amount of memory (in MiB) to allocate for this container group.",
- "maximum": 1024000,
+ "TotalMemoryLimitMebibytes": {
+ "description": "The total memory limit of container groups following this definition in MiB",
"type": "integer",
- "minimum": 4
+ "minimum": 4,
+ "maximum": 1024000
},
- "CreationTime": {
- "description": "A time stamp indicating when this data object was created. Format is a number expressed in Unix time as milliseconds (for example \"1469498468.057\").",
- "type": "string"
+ "TotalVcpuLimit": {
+ "description": "The total amount of virtual CPUs on the container group definition",
+ "type": "number",
+ "minimum": 0.125,
+ "maximum": 10
},
- "ContainerDefinitions": {
- "minItems": 1,
- "maxItems": 10,
+ "GameServerContainerDefinition": {
+ "$ref": "#/definitions/GameServerContainerDefinition"
+ },
+ "SupportContainerDefinitions": {
+ "description": "A collection of support container definitions that define the containers in this group.",
+ "type": "array",
"uniqueItems": true,
- "description": "A collection of container definitions that define the containers in this group.",
"insertionOrder": false,
- "type": "array",
+ "minItems": 1,
+ "maxItems": 10,
"items": {
- "$ref": "#/definitions/ContainerDefinition"
+ "$ref": "#/definitions/SupportContainerDefinition"
}
},
+ "VersionNumber": {
+ "description": "The version of this ContainerGroupDefinition",
+ "type": "integer",
+ "minimum": 0
+ },
+ "SourceVersionNumber": {
+ "description": "A specific ContainerGroupDefinition version to be updated",
+ "type": "integer",
+ "minimum": 0
+ },
+ "VersionDescription": {
+ "description": "The description of this version",
+ "type": "string",
+ "minLength": 1,
+ "maxLength": 1024
+ },
+ "Status": {
+ "description": "A string indicating ContainerGroupDefinition status.",
+ "type": "string",
+ "enum": [
+ "READY",
+ "COPYING",
+ "FAILED"
+ ]
+ },
+ "StatusReason": {
+ "description": "A string indicating the reason for ContainerGroupDefinition status.",
+ "type": "string"
+ },
"Tags": {
- "minItems": 0,
- "maxItems": 200,
- "uniqueItems": true,
"description": "An array of key-value pairs to apply to this resource.",
- "insertionOrder": false,
"type": "array",
+ "uniqueItems": true,
+ "insertionOrder": false,
+ "minItems": 0,
+ "maxItems": 200,
"items": {
"$ref": "#/definitions/Tag"
}
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "Name",
+ "OperatingSystem",
+ "TotalMemoryLimitMebibytes",
+ "TotalVcpuLimit"
+ ],
+ "createOnlyProperties": [
+ "/properties/Name",
+ "/properties/ContainerGroupType"
+ ],
+ "readOnlyProperties": [
+ "/properties/ContainerGroupDefinitionArn",
+ "/properties/CreationTime",
+ "/properties/VersionNumber",
+ "/properties/Status",
+ "/properties/StatusReason"
+ ],
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "handlers": {
+ "create": {
+ "permissions": [
+ "gamelift:CreateContainerGroupDefinition",
+ "gamelift:DescribeContainerGroupDefinition",
+ "gamelift:ListTagsForResource",
+ "gamelift:TagResource",
+ "ecr:BatchCheckLayerAvailability",
+ "ecr:BatchGetImage",
+ "ecr:GetDownloadUrlForLayer",
+ "ecr:DescribeImages"
+ ]
},
- "TotalCpuLimit": {
- "description": "The maximum number of CPU units reserved for this container group. The value is expressed as an integer amount of CPU units. (1 vCPU is equal to 1024 CPU units.)",
- "maximum": 10240,
- "type": "integer",
- "minimum": 128
+ "read": {
+ "permissions": [
+ "gamelift:DescribeContainerGroupDefinition",
+ "gamelift:ListTagsForResource"
+ ]
+ },
+ "update": {
+ "permissions": [
+ "gamelift:UpdateContainerGroupDefinition",
+ "gamelift:ListTagsForResource",
+ "gamelift:TagResource",
+ "gamelift:UntagResource"
+ ]
+ },
+ "delete": {
+ "permissions": [
+ "gamelift:DescribeContainerGroupDefinition",
+ "gamelift:DeleteContainerGroupDefinition"
+ ]
+ },
+ "list": {
+ "permissions": [
+ "gamelift:ListContainerGroupDefinitions"
+ ]
}
}
}