From 718ff9bed286ebfce1fdcbec49034eb10549adba Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 4 Apr 2024 11:30:10 -0400 Subject: [PATCH 1/3] Download schemas with 'relationshipRef'. --- .../schemas/AWS_ECS_Cluster.json | 56 ++- .../schemas/AWS_Kinesis_Stream.json | 14 + .../AWS_S3_MultiRegionAccessPoint.json | 6 +- .../schemas/AWS_SSM_Association.json | 352 +++++++++--------- 4 files changed, 246 insertions(+), 182 deletions(-) diff --git a/internal/service/cloudformation/schemas/AWS_ECS_Cluster.json b/internal/service/cloudformation/schemas/AWS_ECS_Cluster.json index f66764563..17883338b 100644 --- a/internal/service/cloudformation/schemas/AWS_ECS_Cluster.json +++ b/internal/service/cloudformation/schemas/AWS_ECS_Cluster.json @@ -46,7 +46,7 @@ "readOnlyProperties": [ "/properties/Arn" ], - "description": "Create an Elastic Container Service (ECS) cluster.", + "description": "The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster.", "writeOnlyProperties": [ "/properties/ServiceConnectDefaults" ], @@ -59,102 +59,130 @@ ], "definitions": { "CapacityProviderStrategyItem": { - "description": "A capacity provider strategy consists of one or more capacity providers along with the `base` and `weight` to assign to them. A capacity provider must be associated with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders API is used to associate a capacity provider with a cluster. Only capacity providers with an `ACTIVE` or `UPDATING` status can be used.", + "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", "additionalProperties": false, "type": "object", "properties": { "CapacityProvider": { + "relationshipRef": { + "typeName": "AWS::ECS::CapacityProvider", + "propertyPath": "/properties/Name" + }, + "description": "The short name of the capacity provider.", "type": "string" }, "Weight": { + "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", "type": "integer" }, "Base": { + "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", "type": "integer" } } }, "ExecuteCommandLogConfiguration": { - "description": "The session logging configuration for ExecuteCommand.", + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket.", "additionalProperties": false, "type": "object", "properties": { "S3EncryptionEnabled": { + "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", "type": "boolean" }, "CloudWatchEncryptionEnabled": { + "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", "type": "boolean" }, "CloudWatchLogGroupName": { + "relationshipRef": { + "typeName": "AWS::Logs::LogGroup", + "propertyPath": "/properties/LogGroupName" + }, + "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", "type": "string" }, "S3KeyPrefix": { + "description": "An optional folder in the S3 bucket to place logs in.", "type": "string" }, "S3BucketName": { + "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", "type": "string" } } }, "ClusterSettings": { - "description": "The setting to use when creating a cluster. This parameter is used to enable CloudWatch Container Insights for a cluster. If this value is specified, it will override the containerInsights value set with PutAccountSetting or PutAccountSettingDefault.", + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", "type": "string" }, "Name": { + "description": "The name of the cluster setting. The value is ``containerInsights`` .", "type": "string" } } }, "ServiceConnectDefaults": { - "description": "Service Connect Configuration default for all services or tasks within this cluster", + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", "additionalProperties": false, "type": "object", "properties": { "Namespace": { - "description": "Service Connect Namespace Name or ARN default for all services or tasks within this cluster", + "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", "type": "string" } } }, "Tag": { - "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.", + "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", "additionalProperties": false, "type": "object", "properties": { "Value": { + "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", "type": "string" }, "Key": { + "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", "type": "string" } } }, "ClusterConfiguration": { - "description": "The configurations to be set at cluster level.", + "description": "The execute command configuration for the cluster.", "additionalProperties": false, "type": "object", "properties": { "ExecuteCommandConfiguration": { + "description": "The details of the execute command configuration.", "$ref": "#/definitions/ExecuteCommandConfiguration" } } }, "ExecuteCommandConfiguration": { - "description": "The configuration for ExecuteCommand.", + "description": "The details of the execute command configuration.", "additionalProperties": false, "type": "object", "properties": { "Logging": { + "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", "type": "string" }, "KmsKeyId": { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/Arn" + }, + "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", "type": "string" }, "LogConfiguration": { + "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided.", "$ref": "#/definitions/ExecuteCommandLogConfiguration" } } @@ -162,38 +190,44 @@ }, "properties": { "ClusterSettings": { + "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", "type": "array", "items": { "$ref": "#/definitions/ClusterSettings" } }, "DefaultCapacityProviderStrategy": { + "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", "type": "array", "items": { "$ref": "#/definitions/CapacityProviderStrategyItem" } }, "Configuration": { + "description": "The execute command configuration for the cluster.", "$ref": "#/definitions/ClusterConfiguration" }, "ServiceConnectDefaults": { + "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", "$ref": "#/definitions/ServiceConnectDefaults" }, "CapacityProviders": { + "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", "type": "array", "items": { "type": "string" } }, "ClusterName": { - "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.", + "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", "type": "string" }, "Arn": { - "description": "The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster.", + "description": "", "type": "string" }, "Tags": { + "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", "type": "array", "items": { "$ref": "#/definitions/Tag" diff --git a/internal/service/cloudformation/schemas/AWS_Kinesis_Stream.json b/internal/service/cloudformation/schemas/AWS_Kinesis_Stream.json index 0e67be049..e8c759752 100644 --- a/internal/service/cloudformation/schemas/AWS_Kinesis_Stream.json +++ b/internal/service/cloudformation/schemas/AWS_Kinesis_Stream.json @@ -101,6 +101,20 @@ "KeyId": { "minLength": 1, "description": "The GUID for the customer-managed AWS KMS key to use for encryption. This value can be a globally unique identifier, a fully specified Amazon Resource Name (ARN) to either an alias or a key, or an alias name prefixed by \"alias/\".You can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis.", + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/Arn" + } + }, + { + "relationshipRef": { + "typeName": "AWS::KMS::Key", + "propertyPath": "/properties/KeyId" + } + } + ], "type": "string", "maxLength": 2048 } diff --git a/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json index ab34c3113..d92858b43 100644 --- a/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json +++ b/internal/service/cloudformation/schemas/AWS_S3_MultiRegionAccessPoint.json @@ -31,7 +31,11 @@ "type": "string", "minLength": 3, "maxLength": 63, - "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$" + "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", + "relationshipRef": { + "typeName": "AWS::S3::Bucket", + "propertyPath": "/properties/BucketName" + } }, "BucketAccountId": { "type": "string", diff --git a/internal/service/cloudformation/schemas/AWS_SSM_Association.json b/internal/service/cloudformation/schemas/AWS_SSM_Association.json index db1187f39..e6511b4a8 100644 --- a/internal/service/cloudformation/schemas/AWS_SSM_Association.json +++ b/internal/service/cloudformation/schemas/AWS_SSM_Association.json @@ -1,171 +1,213 @@ { + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", + "tagging": { + "taggable": false + }, + "handlers": { + "read": { + "permissions": [ + "ssm:DescribeAssociation", + "resource-groups:GetGroupQuery", + "resource-groups:ListGroups", + "resource-groups:ListGroupResources" + ] + }, + "create": { + "permissions": [ + "ec2:DescribeInstanceStatus", + "iam:PassRole", + "iam:CreateServiceLinkedRole", + "ssm:CreateAssociation", + "ssm:DescribeAssociation", + "ssm:GetCalendarState" + ] + }, + "update": { + "permissions": [ + "iam:PassRole", + "ssm:UpdateAssociation", + "ssm:GetCalendarState" + ] + }, + "list": { + "permissions": [ + "ssm:ListAssociations" + ] + }, + "delete": { + "permissions": [ + "ssm:DeleteAssociation" + ] + } + }, "typeName": "AWS::SSM::Association", + "readOnlyProperties": [ + "/properties/AssociationId" + ], "description": "The AWS::SSM::Association resource associates an SSM document in AWS Systems Manager with EC2 instances that contain a configuration agent to process the document.", - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", + "writeOnlyProperties": [ + "/properties/WaitForSuccessTimeoutSeconds" + ], + "additionalProperties": false, + "primaryIdentifier": [ + "/properties/AssociationId" + ], "definitions": { "Target": { + "additionalProperties": false, "type": "object", "properties": { - "Key": { - "type": "string", - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name" - }, "Values": { + "minItems": 0, + "maxItems": 50, "type": "array", "items": { + "anyOf": [ + { + "relationshipRef": { + "typeName": "AWS::EC2::Instance", + "propertyPath": "/properties/Id" + } + } + ], "type": "string" - }, - "minItems": 0, - "maxItems": 50 + } + }, + "Key": { + "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", + "type": "string" } }, - "additionalProperties": false, "required": [ "Key", "Values" ] }, - "ParameterValues": { - "type": "array", - "items": { - "type": "string" - } - }, - "S3Region": { + "S3KeyPrefix": { "type": "string", - "minLength": 3, - "maxLength": 20 + "maxLength": 1024 }, - "S3BucketName": { - "type": "string", + "S3Region": { "minLength": 3, - "maxLength": 63 - }, - "S3KeyPrefix": { "type": "string", - "maxLength": 1024 + "maxLength": 20 }, "S3OutputLocation": { + "additionalProperties": false, "type": "object", "properties": { + "OutputS3KeyPrefix": { + "$ref": "#/definitions/S3KeyPrefix" + }, "OutputS3Region": { "$ref": "#/definitions/S3Region" }, "OutputS3BucketName": { "$ref": "#/definitions/S3BucketName" - }, - "OutputS3KeyPrefix": { - "$ref": "#/definitions/S3KeyPrefix" } + } + }, + "S3BucketName": { + "relationshipRef": { + "typeName": "AWS::S3::Bucket", + "propertyPath": "/properties/BucketName" }, - "additionalProperties": false + "minLength": 3, + "type": "string", + "maxLength": 63 }, "InstanceAssociationOutputLocation": { + "additionalProperties": false, "type": "object", "properties": { "S3Location": { "$ref": "#/definitions/S3OutputLocation" } - }, - "additionalProperties": false + } + }, + "ParameterValues": { + "type": "array", + "items": { + "type": "string" + } } }, "properties": { - "AssociationId": { - "description": "Unique identifier of the association.", - "type": "string", - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "examples": [ - "88df7b09-95e8-48c4-a3cb-08c2c20d5110", - "203dd0ec-0055-4bf0-a872-707f72ef06aa" - ] - }, "AssociationName": { + "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", "description": "The name of the association.", - "type": "string", - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$" - }, - "DocumentVersion": { - "description": "The version of the SSM document to associate with the target.", - "type": "string", - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)" + "type": "string" }, - "InstanceId": { - "description": "The ID of the instance that the SSM document is associated with.", - "type": "string", - "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", - "examples": [ - "i-0e60836d21cf313c4", - "mi-0532c22e49636ee13" - ] - }, - "Name": { - "description": "The name of the SSM document.", - "type": "string", - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", + "CalendarNames": { "examples": [ - "AWS-GatherSoftwareInventory", - "MyCustomSSMDocument" - ] - }, - "Parameters": { - "description": "Parameter values that the SSM document uses at runtime.", - "type": "object", - "patternProperties": { - "": { - "$ref": "#/definitions/ParameterValues" - } - }, - "additionalProperties": false + [ + "calendar1", + "calendar2" + ], + [ + "calendar3" + ] + ], + "type": "array", + "items": { + "type": "string" + } }, "ScheduleExpression": { - "description": "A Cron or Rate expression that specifies when the association is applied to the target.", - "type": "string", - "minLength": 1, - "maxLength": 256, "examples": [ "cron(0 0 */1 * * ? *)", "cron(0 16 ? * TUE *)", "rate(30 minutes)", "rate(7 days)" - ] - }, - "Targets": { - "description": "The targets that the SSM document sends commands to.", - "type": "array", - "items": { - "$ref": "#/definitions/Target" - }, - "minItems": 0, - "maxItems": 5 - }, - "OutputLocation": { - "$ref": "#/definitions/InstanceAssociationOutputLocation" - }, - "AutomationTargetParameterName": { - "type": "string", + ], "minLength": 1, - "maxLength": 50 + "description": "A Cron or Rate expression that specifies when the association is applied to the target.", + "type": "string", + "maxLength": 256 }, "MaxErrors": { - "type": "string", - "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", "examples": [ "1%", "10%", "50%", "1" - ] + ], + "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", + "type": "string" + }, + "Parameters": { + "patternProperties": { + "": { + "$ref": "#/definitions/ParameterValues" + } + }, + "description": "Parameter values that the SSM document uses at runtime.", + "additionalProperties": false, + "type": "object" + }, + "InstanceId": { + "examples": [ + "i-0e60836d21cf313c4", + "mi-0532c22e49636ee13" + ], + "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", + "description": "The ID of the instance that the SSM document is associated with.", + "type": "string" + }, + "WaitForSuccessTimeoutSeconds": { + "maximum": 172800, + "type": "integer", + "minimum": 15 }, "MaxConcurrency": { - "type": "string", - "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", "examples": [ "1%", "10%", "50%", "1" - ] + ], + "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", + "type": "string" }, "ComplianceSeverity": { "type": "string", @@ -177,6 +219,15 @@ "UNSPECIFIED" ] }, + "Targets": { + "minItems": 0, + "maxItems": 5, + "description": "The targets that the SSM document sends commands to.", + "type": "array", + "items": { + "$ref": "#/definitions/Target" + } + }, "SyncCompliance": { "type": "string", "enum": [ @@ -184,86 +235,47 @@ "MANUAL" ] }, - "WaitForSuccessTimeoutSeconds": { + "OutputLocation": { + "$ref": "#/definitions/InstanceAssociationOutputLocation" + }, + "ScheduleOffset": { + "maximum": 6, "type": "integer", - "minimum": 15, - "maximum": 172800 + "minimum": 1 + }, + "Name": { + "examples": [ + "AWS-GatherSoftwareInventory", + "MyCustomSSMDocument" + ], + "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", + "description": "The name of the SSM document.", + "type": "string" }, "ApplyOnlyAtCronInterval": { "type": "boolean" }, - "CalendarNames": { - "type": "array", - "items": { - "type": "string" - }, + "DocumentVersion": { + "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", + "description": "The version of the SSM document to associate with the target.", + "type": "string" + }, + "AssociationId": { "examples": [ - [ - "calendar1", - "calendar2" - ], - [ - "calendar3" - ] - ] + "88df7b09-95e8-48c4-a3cb-08c2c20d5110", + "203dd0ec-0055-4bf0-a872-707f72ef06aa" + ], + "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", + "description": "Unique identifier of the association.", + "type": "string" }, - "ScheduleOffset": { - "type": "integer", - "minimum": 1, - "maximum": 6 + "AutomationTargetParameterName": { + "minLength": 1, + "type": "string", + "maxLength": 50 } }, "required": [ "Name" - ], - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "writeOnlyProperties": [ - "/properties/WaitForSuccessTimeoutSeconds" - ], - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "tagging": { - "taggable": false - }, - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeInstanceStatus", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:GetCalendarState" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteAssociation" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "ssm:UpdateAssociation", - "ssm:GetCalendarState" - ] - }, - "read": { - "permissions": [ - "ssm:DescribeAssociation", - "resource-groups:GetGroupQuery", - "resource-groups:ListGroups", - "resource-groups:ListGroupResources" - ] - }, - "list": { - "permissions": [ - "ssm:ListAssociations" - ] - } - }, - "additionalProperties": false + ] } From 02afb920de71bb4f002efbc21fec030513812fc1 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 4 Apr 2024 12:14:44 -0400 Subject: [PATCH 2/3] Run 'make resources singular-data-sources'. --- internal/aws/ecs/cluster_resource_gen.go | 152 ++++++++++++------ .../ecs/cluster_singular_data_source_gen.go | 116 +++++++++---- internal/aws/kinesis/stream_resource_gen.go | 4 + .../stream_singular_data_source_gen.go | 4 + .../multi_region_access_point_resource_gen.go | 4 + ...n_access_point_singular_data_source_gen.go | 4 + internal/aws/ssm/association_resource_gen.go | 7 + .../association_singular_data_source_gen.go | 7 + 8 files changed, 212 insertions(+), 86 deletions(-) diff --git a/internal/aws/ecs/cluster_resource_gen.go b/internal/aws/ecs/cluster_resource_gen.go index ce4c6d2f1..82c702a72 100644 --- a/internal/aws/ecs/cluster_resource_gen.go +++ b/internal/aws/ecs/cluster_resource_gen.go @@ -33,11 +33,11 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster.", + // "description": "", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster.", + Description: "", Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), @@ -47,6 +47,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", // "items": { // "type": "string" // }, @@ -54,6 +55,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // } "capacity_providers": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, + Description: "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", Optional: true, Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ @@ -64,11 +66,11 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { - // "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.", + // "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", // "type": "string" // } "cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.", + Description: "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -80,14 +82,17 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", // "items": { // "additionalProperties": false, - // "description": "The setting to use when creating a cluster. This parameter is used to enable CloudWatch Container Insights for a cluster. If this value is specified, it will override the containerInsights value set with PutAccountSetting or PutAccountSettingDefault.", + // "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", // "properties": { // "Name": { + // "description": "The name of the cluster setting. The value is ``containerInsights`` .", // "type": "string" // }, // "Value": { + // "description": "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", // "type": "string" // } // }, @@ -100,24 +105,27 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Name "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The name of the cluster setting. The value is ``containerInsights`` .", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Optional: true, - Computed: true, + Description: "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -127,38 +135,53 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "The configurations to be set at cluster level.", + // "description": "The execute command configuration for the cluster.", // "properties": { // "ExecuteCommandConfiguration": { // "additionalProperties": false, - // "description": "The configuration for ExecuteCommand.", + // "description": "The details of the execute command configuration.", // "properties": { // "KmsKeyId": { + // "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + // "relationshipRef": { + // "propertyPath": "/properties/Arn", + // "typeName": "AWS::KMS::Key" + // }, // "type": "string" // }, // "LogConfiguration": { // "additionalProperties": false, - // "description": "The session logging configuration for ExecuteCommand.", + // "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided.", // "properties": { // "CloudWatchEncryptionEnabled": { + // "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", // "type": "boolean" // }, // "CloudWatchLogGroupName": { + // "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + // "relationshipRef": { + // "propertyPath": "/properties/LogGroupName", + // "typeName": "AWS::Logs::LogGroup" + // }, // "type": "string" // }, // "S3BucketName": { + // "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", // "type": "string" // }, // "S3EncryptionEnabled": { + // "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", // "type": "boolean" // }, // "S3KeyPrefix": { + // "description": "An optional folder in the S3 bucket to place logs in.", // "type": "string" // } // }, // "type": "object" // }, // "Logging": { + // "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", // "type": "string" // } // }, @@ -174,8 +197,9 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: KmsKeyId "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -185,46 +209,51 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CloudWatchEncryptionEnabled "cloudwatch_encryption_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: CloudWatchLogGroupName "cloudwatch_log_group_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: S3BucketName "s3_bucket_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: S3EncryptionEnabled "s3_encryption_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Bool{ /*START PLAN MODIFIERS*/ boolplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: S3KeyPrefix "s3_key_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "An optional folder in the S3 bucket to place logs in.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The session logging configuration for ExecuteCommand.", + Description: "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -233,14 +262,15 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { }, /*END ATTRIBUTE*/ // Property: Logging "logging": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The configuration for ExecuteCommand.", + Description: "The details of the execute command configuration.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -248,7 +278,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The configurations to be set at cluster level.", + Description: "The execute command configuration for the cluster.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -259,17 +289,25 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", // "items": { // "additionalProperties": false, - // "description": "A capacity provider strategy consists of one or more capacity providers along with the `base` and `weight` to assign to them. A capacity provider must be associated with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders API is used to associate a capacity provider with a cluster. Only capacity providers with an `ACTIVE` or `UPDATING` status can be used.", + // "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", // "properties": { // "Base": { + // "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", // "type": "integer" // }, // "CapacityProvider": { + // "description": "The short name of the capacity provider.", + // "relationshipRef": { + // "propertyPath": "/properties/Name", + // "typeName": "AWS::ECS::CapacityProvider" + // }, // "type": "string" // }, // "Weight": { + // "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", // "type": "integer" // } // }, @@ -282,32 +320,36 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Base "base": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: CapacityProvider "capacity_provider": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The short name of the capacity provider.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Weight "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.Int64{ /*START PLAN MODIFIERS*/ int64planmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Optional: true, - Computed: true, + Description: "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -317,10 +359,10 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // // { // "additionalProperties": false, - // "description": "Service Connect Configuration default for all services or tasks within this cluster", + // "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", // "properties": { // "Namespace": { - // "description": "Service Connect Namespace Name or ARN default for all services or tasks within this cluster", + // "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (\u003e), less than (\u003c), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", // "type": "string" // } // }, @@ -330,7 +372,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Namespace "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Service Connect Namespace Name or ARN default for all services or tasks within this cluster", + Description: "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", Optional: true, Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ @@ -338,7 +380,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "Service Connect Configuration default for all services or tasks within this cluster", + Description: "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", Optional: true, Computed: true, PlanModifiers: []planmodifier.Object{ /*START PLAN MODIFIERS*/ @@ -350,14 +392,17 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { // CloudFormation resource type schema: // // { + // "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", // "items": { // "additionalProperties": false, - // "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.", + // "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", // "properties": { // "Key": { + // "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", // "type": "string" // }, // "Value": { + // "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", // "type": "string" // } // }, @@ -370,24 +415,27 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Optional: true, - Computed: true, + Description: "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.String{ /*START PLAN MODIFIERS*/ stringplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Optional: true, - Computed: true, + Description: "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + Optional: true, + Computed: true, PlanModifiers: []planmodifier.List{ /*START PLAN MODIFIERS*/ listplanmodifier.UseStateForUnknown(), }, /*END PLAN MODIFIERS*/ @@ -404,7 +452,7 @@ func clusterResource(ctx context.Context) (resource.Resource, error) { } schema := schema.Schema{ - Description: "Create an Elastic Container Service (ECS) cluster.", + Description: "The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster.", Version: 1, Attributes: attributes, } diff --git a/internal/aws/ecs/cluster_singular_data_source_gen.go b/internal/aws/ecs/cluster_singular_data_source_gen.go index 2c1ef5be9..1a7872e02 100644 --- a/internal/aws/ecs/cluster_singular_data_source_gen.go +++ b/internal/aws/ecs/cluster_singular_data_source_gen.go @@ -27,17 +27,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // CloudFormation resource type schema: // // { - // "description": "The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster.", + // "description": "", // "type": "string" // } "arn": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster.", + Description: "", Computed: true, }, /*END ATTRIBUTE*/ // Property: CapacityProviders // CloudFormation resource type schema: // // { + // "description": "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", // "items": { // "type": "string" // }, @@ -45,31 +46,35 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { // } "capacity_providers": schema.ListAttribute{ /*START ATTRIBUTE*/ ElementType: types.StringType, + Description: "The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions.\n If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation.\n To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used.\n The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created.", Computed: true, }, /*END ATTRIBUTE*/ // Property: ClusterName // CloudFormation resource type schema: // // { - // "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.", + // "description": "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", // "type": "string" // } "cluster_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name.", + Description: "A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name.", Computed: true, }, /*END ATTRIBUTE*/ // Property: ClusterSettings // CloudFormation resource type schema: // // { + // "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", // "items": { // "additionalProperties": false, - // "description": "The setting to use when creating a cluster. This parameter is used to enable CloudWatch Container Insights for a cluster. If this value is specified, it will override the containerInsights value set with PutAccountSetting or PutAccountSettingDefault.", + // "description": "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", // "properties": { // "Name": { + // "description": "The name of the cluster setting. The value is ``containerInsights`` .", // "type": "string" // }, // "Value": { + // "description": "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", // "type": "string" // } // }, @@ -82,53 +87,71 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Name "name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The name of the cluster setting. The value is ``containerInsights`` .", + Computed: true, }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. \n If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html).", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Computed: true, + Description: "The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: Configuration // CloudFormation resource type schema: // // { // "additionalProperties": false, - // "description": "The configurations to be set at cluster level.", + // "description": "The execute command configuration for the cluster.", // "properties": { // "ExecuteCommandConfiguration": { // "additionalProperties": false, - // "description": "The configuration for ExecuteCommand.", + // "description": "The details of the execute command configuration.", // "properties": { // "KmsKeyId": { + // "description": "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + // "relationshipRef": { + // "propertyPath": "/properties/Arn", + // "typeName": "AWS::KMS::Key" + // }, // "type": "string" // }, // "LogConfiguration": { // "additionalProperties": false, - // "description": "The session logging configuration for ExecuteCommand.", + // "description": "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided.", // "properties": { // "CloudWatchEncryptionEnabled": { + // "description": "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", // "type": "boolean" // }, // "CloudWatchLogGroupName": { + // "description": "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + // "relationshipRef": { + // "propertyPath": "/properties/LogGroupName", + // "typeName": "AWS::Logs::LogGroup" + // }, // "type": "string" // }, // "S3BucketName": { + // "description": "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", // "type": "string" // }, // "S3EncryptionEnabled": { + // "description": "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", // "type": "boolean" // }, // "S3KeyPrefix": { + // "description": "An optional folder in the S3 bucket to place logs in.", // "type": "string" // } // }, // "type": "object" // }, // "Logging": { + // "description": "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", // "type": "string" // } // }, @@ -144,62 +167,77 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: KmsKeyId "kms_key_id": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Specify an KMSlong key ID to encrypt the data between the local client and the container.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: LogConfiguration "log_configuration": schema.SingleNestedAttribute{ /*START ATTRIBUTE*/ Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: CloudWatchEncryptionEnabled "cloudwatch_encryption_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: CloudWatchLogGroupName "cloudwatch_log_group_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The name of the CloudWatch log group to send logs to.\n The CloudWatch log group must already be created.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: S3BucketName "s3_bucket_name": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The name of the S3 bucket to send logs to.\n The S3 bucket must already be created.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: S3EncryptionEnabled "s3_encryption_enabled": schema.BoolAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "Determines whether to use encryption on the S3 logs. If not specified, encryption is not used.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: S3KeyPrefix "s3_key_prefix": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "An optional folder in the S3 bucket to place logs in.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The session logging configuration for ExecuteCommand.", + Description: "The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Logging "logging": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The log setting to use for redirecting logs for your execute command results. The following log settings are available.\n + ``NONE``: The execute command session is not logged.\n + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged.\n + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The configuration for ExecuteCommand.", + Description: "The details of the execute command configuration.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "The configurations to be set at cluster level.", + Description: "The execute command configuration for the cluster.", Computed: true, }, /*END ATTRIBUTE*/ // Property: DefaultCapacityProviderStrategy // CloudFormation resource type schema: // // { + // "description": "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", // "items": { // "additionalProperties": false, - // "description": "A capacity provider strategy consists of one or more capacity providers along with the `base` and `weight` to assign to them. A capacity provider must be associated with the cluster to be used in a capacity provider strategy. The PutClusterCapacityProviders API is used to associate a capacity provider with a cluster. Only capacity providers with an `ACTIVE` or `UPDATING` status can be used.", + // "description": "The ``CapacityProviderStrategyItem`` property specifies the details of the default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", // "properties": { // "Base": { + // "description": "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", // "type": "integer" // }, // "CapacityProvider": { + // "description": "The short name of the capacity provider.", + // "relationshipRef": { + // "propertyPath": "/properties/Name", + // "typeName": "AWS::ECS::CapacityProvider" + // }, // "type": "string" // }, // "Weight": { + // "description": "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", // "type": "integer" // } // }, @@ -212,29 +250,33 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Base "base": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: CapacityProvider "capacity_provider": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The short name of the capacity provider.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: Weight "weight": schema.Int64Attribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied.\n If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail.\n An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*.", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Computed: true, + Description: "The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: ServiceConnectDefaults // CloudFormation resource type schema: // // { // "additionalProperties": false, - // "description": "Service Connect Configuration default for all services or tasks within this cluster", + // "description": "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", // "properties": { // "Namespace": { - // "description": "Service Connect Namespace Name or ARN default for all services or tasks within this cluster", + // "description": "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (\u003e), less than (\u003c), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", // "type": "string" // } // }, @@ -244,25 +286,28 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Namespace "namespace": schema.StringAttribute{ /*START ATTRIBUTE*/ - Description: "Service Connect Namespace Name or ARN default for all services or tasks within this cluster", + Description: "The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/).\n If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region.\n If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the \"API calls\" method of instance discovery only. This instance discovery method is the \"HTTP\" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect.\n If you update the cluster with an empty string ``\"\"`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately.\n For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*.", Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ - Description: "Service Connect Configuration default for all services or tasks within this cluster", + Description: "Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter.\n Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*.", Computed: true, }, /*END ATTRIBUTE*/ // Property: Tags // CloudFormation resource type schema: // // { + // "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", // "items": { // "additionalProperties": false, - // "description": "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.", + // "description": "The metadata that you apply to a resource to help you categorize and organize them. Each tag consists of a key and an optional value. You define them.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", // "properties": { // "Key": { + // "description": "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", // "type": "string" // }, // "Value": { + // "description": "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", // "type": "string" // } // }, @@ -275,15 +320,18 @@ func clusterDataSource(ctx context.Context) (datasource.DataSource, error) { Attributes: map[string]schema.Attribute{ /*START SCHEMA*/ // Property: Key "key": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values.", + Computed: true, }, /*END ATTRIBUTE*/ // Property: Value "value": schema.StringAttribute{ /*START ATTRIBUTE*/ - Computed: true, + Description: "The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key).", + Computed: true, }, /*END ATTRIBUTE*/ }, /*END SCHEMA*/ }, /*END NESTED OBJECT*/ - Computed: true, + Description: "The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both.\n The following basic restrictions apply to tags:\n + Maximum number of tags per resource - 50\n + For each resource, each tag key must be unique, and each tag key can have only one value.\n + Maximum key length - 128 Unicode characters in UTF-8\n + Maximum value length - 256 Unicode characters in UTF-8\n + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.\n + Tag keys and values are case-sensitive.\n + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.", + Computed: true, }, /*END ATTRIBUTE*/ } /*END SCHEMA*/ diff --git a/internal/aws/kinesis/stream_resource_gen.go b/internal/aws/kinesis/stream_resource_gen.go index 5aaee41a1..7a2054972 100644 --- a/internal/aws/kinesis/stream_resource_gen.go +++ b/internal/aws/kinesis/stream_resource_gen.go @@ -122,6 +122,10 @@ func streamResource(ctx context.Context) (resource.Resource, error) { // "type": "string" // }, // "KeyId": { + // "anyOf": [ + // {}, + // {} + // ], // "description": "The GUID for the customer-managed AWS KMS key to use for encryption. This value can be a globally unique identifier, a fully specified Amazon Resource Name (ARN) to either an alias or a key, or an alias name prefixed by \"alias/\".You can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis.", // "maxLength": 2048, // "minLength": 1, diff --git a/internal/aws/kinesis/stream_singular_data_source_gen.go b/internal/aws/kinesis/stream_singular_data_source_gen.go index 050baaef2..ee8b82647 100644 --- a/internal/aws/kinesis/stream_singular_data_source_gen.go +++ b/internal/aws/kinesis/stream_singular_data_source_gen.go @@ -86,6 +86,10 @@ func streamDataSource(ctx context.Context) (datasource.DataSource, error) { // "type": "string" // }, // "KeyId": { + // "anyOf": [ + // {}, + // {} + // ], // "description": "The GUID for the customer-managed AWS KMS key to use for encryption. This value can be a globally unique identifier, a fully specified Amazon Resource Name (ARN) to either an alias or a key, or an alias name prefixed by \"alias/\".You can also use a master key owned by Kinesis Data Streams by specifying the alias aws/kinesis.", // "maxLength": 2048, // "minLength": 1, diff --git a/internal/aws/s3/multi_region_access_point_resource_gen.go b/internal/aws/s3/multi_region_access_point_resource_gen.go index ce2e3f6a8..3d65aecb6 100644 --- a/internal/aws/s3/multi_region_access_point_resource_gen.go +++ b/internal/aws/s3/multi_region_access_point_resource_gen.go @@ -168,6 +168,10 @@ func multiRegionAccessPointResource(ctx context.Context) (resource.Resource, err // "maxLength": 63, // "minLength": 3, // "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", + // "relationshipRef": { + // "propertyPath": "/properties/BucketName", + // "typeName": "AWS::S3::Bucket" + // }, // "type": "string" // }, // "BucketAccountId": { diff --git a/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go b/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go index 96e50906e..6221063de 100644 --- a/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go +++ b/internal/aws/s3/multi_region_access_point_singular_data_source_gen.go @@ -123,6 +123,10 @@ func multiRegionAccessPointDataSource(ctx context.Context) (datasource.DataSourc // "maxLength": 63, // "minLength": 3, // "pattern": "^[a-z0-9][a-z0-9//.//-]*[a-z0-9]$", + // "relationshipRef": { + // "propertyPath": "/properties/BucketName", + // "typeName": "AWS::S3::Bucket" + // }, // "type": "string" // }, // "BucketAccountId": { diff --git a/internal/aws/ssm/association_resource_gen.go b/internal/aws/ssm/association_resource_gen.go index f8deb882c..c94d58801 100644 --- a/internal/aws/ssm/association_resource_gen.go +++ b/internal/aws/ssm/association_resource_gen.go @@ -278,6 +278,10 @@ func associationResource(ctx context.Context) (resource.Resource, error) { // "OutputS3BucketName": { // "maxLength": 63, // "minLength": 3, + // "relationshipRef": { + // "propertyPath": "/properties/BucketName", + // "typeName": "AWS::S3::Bucket" + // }, // "type": "string" // }, // "OutputS3KeyPrefix": { @@ -454,6 +458,9 @@ func associationResource(ctx context.Context) (resource.Resource, error) { // }, // "Values": { // "items": { + // "anyOf": [ + // {} + // ], // "type": "string" // }, // "maxItems": 50, diff --git a/internal/aws/ssm/association_singular_data_source_gen.go b/internal/aws/ssm/association_singular_data_source_gen.go index 3a601183b..635a8d887 100644 --- a/internal/aws/ssm/association_singular_data_source_gen.go +++ b/internal/aws/ssm/association_singular_data_source_gen.go @@ -197,6 +197,10 @@ func associationDataSource(ctx context.Context) (datasource.DataSource, error) { // "OutputS3BucketName": { // "maxLength": 63, // "minLength": 3, + // "relationshipRef": { + // "propertyPath": "/properties/BucketName", + // "typeName": "AWS::S3::Bucket" + // }, // "type": "string" // }, // "OutputS3KeyPrefix": { @@ -316,6 +320,9 @@ func associationDataSource(ctx context.Context) (datasource.DataSource, error) { // }, // "Values": { // "items": { + // "anyOf": [ + // {} + // ], // "type": "string" // }, // "maxItems": 50, From 40f6da743e1f15fe7b2081c48497b99c8bcfc96e Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 4 Apr 2024 12:26:20 -0400 Subject: [PATCH 3/3] Run 'make docs'. --- docs/data-sources/ecs_cluster.md | 74 ++++++++++++++++++++---------- docs/resources/ecs_cluster.md | 78 +++++++++++++++++++++----------- 2 files changed, 100 insertions(+), 52 deletions(-) diff --git a/docs/data-sources/ecs_cluster.md b/docs/data-sources/ecs_cluster.md index f13901b6c..e4e185d44 100644 --- a/docs/data-sources/ecs_cluster.md +++ b/docs/data-sources/ecs_cluster.md @@ -21,22 +21,35 @@ Data Source schema for AWS::ECS::Cluster ### Read-Only -- `arn` (String) The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster. -- `capacity_providers` (List of String) -- `cluster_name` (String) A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name. -- `cluster_settings` (Attributes List) (see [below for nested schema](#nestedatt--cluster_settings)) -- `configuration` (Attributes) The configurations to be set at cluster level. (see [below for nested schema](#nestedatt--configuration)) -- `default_capacity_provider_strategy` (Attributes List) (see [below for nested schema](#nestedatt--default_capacity_provider_strategy)) -- `service_connect_defaults` (Attributes) Service Connect Configuration default for all services or tasks within this cluster (see [below for nested schema](#nestedatt--service_connect_defaults)) -- `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) +- `arn` (String) +- `capacity_providers` (List of String) The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions. + If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation. + To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used. + The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created. +- `cluster_name` (String) A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name. +- `cluster_settings` (Attributes List) The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster. (see [below for nested schema](#nestedatt--cluster_settings)) +- `configuration` (Attributes) The execute command configuration for the cluster. (see [below for nested schema](#nestedatt--configuration)) +- `default_capacity_provider_strategy` (Attributes List) The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used. (see [below for nested schema](#nestedatt--default_capacity_provider_strategy)) +- `service_connect_defaults` (Attributes) Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter. + Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*. (see [below for nested schema](#nestedatt--service_connect_defaults)) +- `tags` (Attributes List) The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both. + The following basic restrictions apply to tags: + + Maximum number of tags per resource - 50 + + For each resource, each tag key must be unique, and each tag key can have only one value. + + Maximum key length - 128 Unicode characters in UTF-8 + + Maximum value length - 256 Unicode characters in UTF-8 + + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @. + + Tag keys and values are case-sensitive. + + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit. (see [below for nested schema](#nestedatt--tags)) ### Nested Schema for `cluster_settings` Read-Only: -- `name` (String) -- `value` (String) +- `name` (String) The name of the cluster setting. The value is ``containerInsights`` . +- `value` (String) The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. + If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html). @@ -44,27 +57,32 @@ Read-Only: Read-Only: -- `execute_command_configuration` (Attributes) The configuration for ExecuteCommand. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration)) +- `execute_command_configuration` (Attributes) The details of the execute command configuration. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration)) ### Nested Schema for `configuration.execute_command_configuration` Read-Only: -- `kms_key_id` (String) -- `log_configuration` (Attributes) The session logging configuration for ExecuteCommand. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration--log_configuration)) -- `logging` (String) +- `kms_key_id` (String) Specify an KMSlong key ID to encrypt the data between the local client and the container. +- `log_configuration` (Attributes) The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration--log_configuration)) +- `logging` (String) The log setting to use for redirecting logs for your execute command results. The following log settings are available. + + ``NONE``: The execute command session is not logged. + + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged. + + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required. ### Nested Schema for `configuration.execute_command_configuration.log_configuration` Read-Only: -- `cloudwatch_encryption_enabled` (Boolean) -- `cloudwatch_log_group_name` (String) -- `s3_bucket_name` (String) -- `s3_encryption_enabled` (Boolean) -- `s3_key_prefix` (String) +- `cloudwatch_encryption_enabled` (Boolean) Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off. +- `cloudwatch_log_group_name` (String) The name of the CloudWatch log group to send logs to. + The CloudWatch log group must already be created. +- `s3_bucket_name` (String) The name of the S3 bucket to send logs to. + The S3 bucket must already be created. +- `s3_encryption_enabled` (Boolean) Determines whether to use encryption on the S3 logs. If not specified, encryption is not used. +- `s3_key_prefix` (String) An optional folder in the S3 bucket to place logs in. @@ -74,9 +92,11 @@ Read-Only: Read-Only: -- `base` (Number) -- `capacity_provider` (String) -- `weight` (Number) +- `base` (Number) The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. +- `capacity_provider` (String) The short name of the capacity provider. +- `weight` (Number) The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. + If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. + An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*. @@ -84,7 +104,11 @@ Read-Only: Read-Only: -- `namespace` (String) Service Connect Namespace Name or ARN default for all services or tasks within this cluster +- `namespace` (String) The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/). + If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region. + If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the "API calls" method of instance discovery only. This instance discovery method is the "HTTP" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect. + If you update the cluster with an empty string ``""`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately. + For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*. @@ -92,5 +116,5 @@ Read-Only: Read-Only: -- `key` (String) -- `value` (String) +- `key` (String) One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values. +- `value` (String) The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key). diff --git a/docs/resources/ecs_cluster.md b/docs/resources/ecs_cluster.md index be14d2844..e549daadb 100644 --- a/docs/resources/ecs_cluster.md +++ b/docs/resources/ecs_cluster.md @@ -2,12 +2,12 @@ page_title: "awscc_ecs_cluster Resource - terraform-provider-awscc" subcategory: "" description: |- - Create an Elastic Container Service (ECS) cluster. + The AWS::ECS::Cluster resource creates an Amazon Elastic Container Service (Amazon ECS) cluster. --- # awscc_ecs_cluster (Resource) -Create an Elastic Container Service (ECS) cluster. +The ``AWS::ECS::Cluster`` resource creates an Amazon Elastic Container Service (Amazon ECS) cluster. ## Example Usage @@ -35,17 +35,29 @@ resource "awscc_ecs_cluster" "this" { ### Optional -- `capacity_providers` (List of String) -- `cluster_name` (String) A user-generated string that you use to identify your cluster. If you don't specify a name, AWS CloudFormation generates a unique physical ID for the name. -- `cluster_settings` (Attributes List) (see [below for nested schema](#nestedatt--cluster_settings)) -- `configuration` (Attributes) The configurations to be set at cluster level. (see [below for nested schema](#nestedatt--configuration)) -- `default_capacity_provider_strategy` (Attributes List) (see [below for nested schema](#nestedatt--default_capacity_provider_strategy)) -- `service_connect_defaults` (Attributes) Service Connect Configuration default for all services or tasks within this cluster (see [below for nested schema](#nestedatt--service_connect_defaults)) -- `tags` (Attributes List) (see [below for nested schema](#nestedatt--tags)) +- `capacity_providers` (List of String) The short name of one or more capacity providers to associate with the cluster. A capacity provider must be associated with a cluster before it can be included as part of the default capacity provider strategy of the cluster or used in a capacity provider strategy when calling the [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) or [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) actions. + If specifying a capacity provider that uses an Auto Scaling group, the capacity provider must be created but not associated with another cluster. New Auto Scaling group capacity providers can be created with the [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html) API operation. + To use a FARGATElong capacity provider, specify either the ``FARGATE`` or ``FARGATE_SPOT`` capacity providers. The FARGATElong capacity providers are available to all accounts and only need to be associated with a cluster to be used. + The [PutCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html) API operation is used to update the list of available capacity providers for a cluster after the cluster is created. +- `cluster_name` (String) A user-generated string that you use to identify your cluster. If you don't specify a name, CFNlong generates a unique physical ID for the name. +- `cluster_settings` (Attributes List) The settings to use when creating a cluster. This parameter is used to turn on CloudWatch Container Insights for a cluster. (see [below for nested schema](#nestedatt--cluster_settings)) +- `configuration` (Attributes) The execute command configuration for the cluster. (see [below for nested schema](#nestedatt--configuration)) +- `default_capacity_provider_strategy` (Attributes List) The default capacity provider strategy for the cluster. When services or tasks are run in the cluster with no launch type or capacity provider strategy specified, the default capacity provider strategy is used. (see [below for nested schema](#nestedatt--default_capacity_provider_strategy)) +- `service_connect_defaults` (Attributes) Use this parameter to set a default Service Connect namespace. After you set a default Service Connect namespace, any new services with Service Connect turned on that are created in the cluster are added as client services in the namespace. This setting only applies to new services that set the ``enabled`` parameter to ``true`` in the ``ServiceConnectConfiguration``. You can set the namespace of each service individually in the ``ServiceConnectConfiguration`` to override this default parameter. + Tasks that run in a namespace can use short names to connect to services in the namespace. Tasks can connect to services across all of the clusters in the namespace. Tasks connect through a managed proxy container that collects logs and metrics for increased visibility. Only the tasks that Amazon ECS services create are supported with Service Connect. For more information, see [Service Connect](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html) in the *Amazon Elastic Container Service Developer Guide*. (see [below for nested schema](#nestedatt--service_connect_defaults)) +- `tags` (Attributes List) The metadata that you apply to the cluster to help you categorize and organize them. Each tag consists of a key and an optional value. You define both. + The following basic restrictions apply to tags: + + Maximum number of tags per resource - 50 + + For each resource, each tag key must be unique, and each tag key can have only one value. + + Maximum key length - 128 Unicode characters in UTF-8 + + Maximum value length - 256 Unicode characters in UTF-8 + + If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @. + + Tag keys and values are case-sensitive. + + Do not use ``aws:``, ``AWS:``, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit. (see [below for nested schema](#nestedatt--tags)) ### Read-Only -- `arn` (String) The Amazon Resource Name (ARN) of the Amazon ECS cluster, such as arn:aws:ecs:us-east-2:123456789012:cluster/MyECSCluster. +- `arn` (String) - `id` (String) Uniquely identifies the resource. @@ -53,8 +65,9 @@ resource "awscc_ecs_cluster" "this" { Optional: -- `name` (String) -- `value` (String) +- `name` (String) The name of the cluster setting. The value is ``containerInsights`` . +- `value` (String) The value to set for the cluster setting. The supported values are ``enabled`` and ``disabled``. + If you set ``name`` to ``containerInsights`` and ``value`` to ``enabled``, CloudWatch Container Insights will be on for the cluster, otherwise it will be off unless the ``containerInsights`` account setting is turned on. If a cluster value is specified, it will override the ``containerInsights`` value set with [PutAccountSetting](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html) or [PutAccountSettingDefault](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html). @@ -62,27 +75,32 @@ Optional: Optional: -- `execute_command_configuration` (Attributes) The configuration for ExecuteCommand. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration)) +- `execute_command_configuration` (Attributes) The details of the execute command configuration. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration)) ### Nested Schema for `configuration.execute_command_configuration` Optional: -- `kms_key_id` (String) -- `log_configuration` (Attributes) The session logging configuration for ExecuteCommand. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration--log_configuration)) -- `logging` (String) +- `kms_key_id` (String) Specify an KMSlong key ID to encrypt the data between the local client and the container. +- `log_configuration` (Attributes) The log configuration for the results of the execute command actions. The logs can be sent to CloudWatch Logs or an Amazon S3 bucket. When ``logging=OVERRIDE`` is specified, a ``logConfiguration`` must be provided. (see [below for nested schema](#nestedatt--configuration--execute_command_configuration--log_configuration)) +- `logging` (String) The log setting to use for redirecting logs for your execute command results. The following log settings are available. + + ``NONE``: The execute command session is not logged. + + ``DEFAULT``: The ``awslogs`` configuration in the task definition is used. If no logging parameter is specified, it defaults to this value. If no ``awslogs`` log driver is configured in the task definition, the output won't be logged. + + ``OVERRIDE``: Specify the logging details as a part of ``logConfiguration``. If the ``OVERRIDE`` logging option is specified, the ``logConfiguration`` is required. ### Nested Schema for `configuration.execute_command_configuration.log_configuration` Optional: -- `cloudwatch_encryption_enabled` (Boolean) -- `cloudwatch_log_group_name` (String) -- `s3_bucket_name` (String) -- `s3_encryption_enabled` (Boolean) -- `s3_key_prefix` (String) +- `cloudwatch_encryption_enabled` (Boolean) Determines whether to use encryption on the CloudWatch logs. If not specified, encryption will be off. +- `cloudwatch_log_group_name` (String) The name of the CloudWatch log group to send logs to. + The CloudWatch log group must already be created. +- `s3_bucket_name` (String) The name of the S3 bucket to send logs to. + The S3 bucket must already be created. +- `s3_encryption_enabled` (Boolean) Determines whether to use encryption on the S3 logs. If not specified, encryption is not used. +- `s3_key_prefix` (String) An optional folder in the S3 bucket to place logs in. @@ -92,9 +110,11 @@ Optional: Optional: -- `base` (Number) -- `capacity_provider` (String) -- `weight` (Number) +- `base` (Number) The *base* value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a *base* defined. If no value is specified, the default value of ``0`` is used. +- `capacity_provider` (String) The short name of the capacity provider. +- `weight` (Number) The *weight* value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The ``weight`` value is taken into consideration after the ``base`` value, if defined, is satisfied. + If no ``weight`` value is specified, the default value of ``0`` is used. When multiple capacity providers are specified within a capacity provider strategy, at least one of the capacity providers must have a weight value greater than zero and any capacity providers with a weight of ``0`` can't be used to place tasks. If you specify multiple capacity providers in a strategy that all have a weight of ``0``, any ``RunTask`` or ``CreateService`` actions using the capacity provider strategy will fail. + An example scenario for using weights is defining a strategy that contains two capacity providers and both have a weight of ``1``, then when the ``base`` is satisfied, the tasks will be split evenly across the two capacity providers. Using that same logic, if you specify a weight of ``1`` for *capacityProviderA* and a weight of ``4`` for *capacityProviderB*, then for every one task that's run using *capacityProviderA*, four tasks would use *capacityProviderB*. @@ -102,7 +122,11 @@ Optional: Optional: -- `namespace` (String) Service Connect Namespace Name or ARN default for all services or tasks within this cluster +- `namespace` (String) The namespace name or full Amazon Resource Name (ARN) of the CMAPlong namespace that's used when you create a service and don't specify a Service Connect configuration. The namespace name can include up to 1024 characters. The name is case-sensitive. The name can't include hyphens (-), tilde (~), greater than (>), less than (<), or slash (/). + If you enter an existing namespace name or ARN, then that namespace will be used. Any namespace type is supported. The namespace must be in this account and this AWS Region. + If you enter a new name, a CMAPlong namespace will be created. Amazon ECS creates a CMAP namespace with the "API calls" method of instance discovery only. This instance discovery method is the "HTTP" namespace type in the CLIlong. Other types of instance discovery aren't used by Service Connect. + If you update the cluster with an empty string ``""`` for the namespace name, the cluster configuration for Service Connect is removed. Note that the namespace will remain in CMAP and must be deleted separately. + For more information about CMAPlong, see [Working with Services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) in the *Developer Guide*. @@ -110,8 +134,8 @@ Optional: Optional: -- `key` (String) -- `value` (String) +- `key` (String) One part of a key-value pair that make up a tag. A ``key`` is a general label that acts like a category for more specific tag values. +- `value` (String) The optional part of a key-value pair that make up a tag. A ``value`` acts as a descriptor within a tag category (key). ## Import