Terraform AWS ECS
ECS clusters, services, and task definitions with IAM roles, logging, load balancer integration, service discovery, capacity providers, and Fargate or EC2 runtime settings.
Quick start
module "ecs" {
source = "pcidss.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "fedrampmoderate.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "iso27001.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "nist800171.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "nist80053.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "soc2.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "awswellarchitected.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}module "ecs" {
source = "cfrpart11.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
# ... your arguments here
}This module on the compliance.tf registry lists its versions, inputs and outputs. The Get Started guide and Registry Endpoints cover authentication and how to customize the module for your requirements.
Migration from upstream
Already using terraform-aws-modules? Change only the source URL:
module "ecs" {
source = "terraform-aws-modules/ecs/aws"
version = "~> 7.6"
}module "ecs" {
source = "soc2.compliance.tf/terraform-aws-modules/ecs/aws"
version = "~> 7.6"
}Same arguments. Same outputs. Controls are checked at terraform plan. The Migration Guide has the step-by-step version.
Reversibility
No lock-in. Switch back by reverting the source URL:
module "ecs" {
source = "terraform-aws-modules/ecs/aws"
}Run terraform init -upgrade. Terraform state is unchanged: same resource addresses, same provider, no compliance.tf-specific resources. Controls you already applied remain in AWS.
Controls enforced
Up to 8 controls are checked at terraform plan when this module comes from a compliance.tf endpoint. Which ones are active depends on the endpoint; see Framework coverage.
Mapped compliance frameworks
| Clause | Controls from this module |
|---|---|
| 1.3.1: Network access to and from the cardholder data environment is restricted. | |
| 1.3.2: Network access to and from the cardholder data environment is restricted. | |
| 1.4.5 The disclosure of internal IP addresses and routing information is limited to only authorized parties | |
| 10.3.2: Audit logs are protected from destruction and unauthorized modifications. | |
| 10.3.3: Audit log files, including those for externalfacing technologies, are promptly backed up to a secure, central, internal log server(s) or other media that is difficult to modify | |
| 10.3.4: File integrity monitoring or change-detection mechanisms is used on audit logs to ensure that existing log data cannot be changed without generating alerts | |
| 10.5.1: Retain audit log history for at least 12 months, with at least the most recent three months immediately available for analysis | |
| 3.2.1: Storage of account data is kept to a minimum. | |
| 3.3.1.1: Sensitive authentication data (SAD) is not stored after authorization. | |
| 3.3.1.3: Sensitive authentication data (SAD) is not stored after authorization. | |
| 3.3.2: Sensitive authentication data (SAD) is not stored after authorization. | |
| 3.3.3: Sensitive authentication data (SAD) is not stored after authorization. | |
| 3.5.1: Primary account number (PAN) is secured wherever it is stored. | |
| 5.3.4: Anti-malware mechanisms and processes are active, maintained, and monitored. | |
| 8.3.2: Strong cryptography is used to render all authentication factors unreadable during transmission and storage on all system components | |
| A1.2.3: Processes or mechanisms are implemented for reporting and addressing suspected or confirmed security incidents and vulnerabilities |
| Clause | Controls from this module |
|---|---|
| AC-4: Information Flow Enforcement | |
| AU-6(1)(3) | |
| Audit Record Retention (AU-11) | |
| Information Handling and Retention (SI-12) | |
| Protection of Audit Information (AU-9) | |
| Protection of Information at Rest (SC-28) | |
| SC-7: Boundary Protection |
| Clause | Controls from this module |
|---|---|
| A.8.15 Logging | |
| A.8.16 Monitoring activities | |
| A.8.24 Use of cryptography | |
| A.8.3 Information access restriction |
| Clause | Controls from this module |
|---|---|
| 3.1.3: Control the flow of CUI in accordance with approved authorizations. | |
| 3.13.11 Employ FIPS-validated cryptography when used to protect the confidentiality of CUI | |
| 3.13.16: Protect the confidentiality of CUI at rest. | |
| 3.13.1: Monitor, control, and protect communications (i.e., information transmitted or received by organizational systems) at the external boundaries and key internal boundaries of organizational systems. | |
| 3.3.1: Create and retain system audit logs and records to the extent needed to enable the monitoring, analysis, investigation, and reporting of unlawful or unauthorized system activity | |
| 3.3.8: Protect audit information and audit logging tools from unauthorized access, modification, and deletion. | |
| 3.6.1 Establish an operational incident-handling capability for organizational systems that includes preparation, detection, analysis, containment, recovery, and user response activities | |
| 3.6.2 Track, document, and report incidents to designated officials and/or authorities both internal and external to the organization |
| Clause | Controls from this module |
|---|---|
| AC-16(b) | |
| AU-11(1) Long-Term Retrieval Capability | |
| AU-12(1) System-Wide And Time-Correlated Audit Trial | |
| AU-12(2) Standardized Formats | |
| AU-12(3) Changes By Authorized Individuals | |
| AU-14(a) | |
| AU-14(b) | |
| AU-6(3) Correlate Audit Record Repositories | |
| AU-6(4) Central Review And Analysis | |
| AU-6(6) Correletion With Physical Monitoring | |
| AU-6(9) Correletion With From Nontechnical Sources | |
| AU-9(3) Cryptographic Protection | |
| Audit Record Retention (AU-11) | |
| CA-7(b) | |
| CP-9(d) | |
| Continuous Monitoring Strategy (PM-31) | |
| Information Management and Retention (SI-12) | |
| Non-Repudiation (AU-10) | |
| PM-14(a)(1) | |
| PM-14(b) | |
| PM-21(b) | |
| SC-13(a) | |
| SC-28(1): Cryptographic Protection | |
| SC-28(2) Offline Storage | |
| SC-7(13): Isolation Of Security Tools, Mechanisms, And Support Components | |
| SC-7: Boundary Protection | |
| SC-8(3) Cryptographic Protection For Message Externals | |
| SC-8(4) Conceal Or Ramdomize Communications | |
| SI-19(4) Removal, Masking, Encryption, Hashing, Or Replacement Of Direct Identifiers | |
| SI-4(17) Integrated Situational Awareness |
| Clause | Controls from this module |
|---|---|
| C1.2 The entity disposes of confidential information to meet the entity's objectives related to confidentiality | |
| CC6.6: The entity implements logical access security measures to protect against threats from sources outside its system boundaries. | |
| CC7.2: The entity monitors system components and the operation of those components for anomalies that are indicative of malicious acts, natural disasters, and errors affecting the entity's ability to meet its objectives; anomalies are analyzed to determine whether they represent security events. | |
| CC7.3 The entity evaluates security events to determine whether they could or have resulted in a failure of the entity to meet its objectives (security incidents) and, if so, takes actions to prevent or address such failures | |
| P4.2 The entity retains personal information consistent with the entity's objectives related to privacy | |
| PI1.4 System outputs are complete, accurate, distributed only to intended parties, and retained to meet the entity's processing integrity commitments and system requirements |
| Clause | Controls from this module |
|---|---|
| Data protection | |
| Identity and access management |
| Clause | Controls from this module |
|---|---|
| 11.10(c) Protection of records to enable their accurate and ready retrieval throughout the records retention period | |
| 11.10(d) Limiting system access to authorized individuals | |
| 11.10(e) Use of secure, computer-generated, time-stamped audit trails to independently record the date and time of operator entries and actions that create, modify, or delete electronic records | |
| 11.30 Controls for open systems |
Framework coverage
Which controls from this module are active under each framework endpoint. Your framework preferences choose the columns.
| Control | PCI DSS v4.0 | SOC 2 |
|---|---|---|
| CloudWatch log groups should have retention period of at least 365 days | Enforced | Enforced |
| ECS clusters should have container insights enabled | Not active | Not active |
| ECS fargate services should run on the latest fargate platform version | Not active | Not active |
| ECS services should not have public IP addresses assigned automatically | Not active | Enforced |
| ECS task definitions should not share the host's process namespace | Enforced | Not active |
| Log groups should have encryption at rest enabled | Enforced | Enforced |
| VPC Security groups should only allow unrestricted incoming traffic for authorized ports | Enforced | Not active |
| VPC security groups should restrict ingress from 0.0.0.0/0 or ::/0 to cassandra ports 7199 or 9160 or 8888 | Enforced | Not active |
Known Terraform limitations
Separately from the controls above, some things people ask this module for cannot be implemented by any module in any registry: they are limits of Terraform itself. Known limitations for this module lists the recurring ones: what causes each, the native workaround in full, and, where one exists, the opt-in Operational Rule that removes the need for a fork.