Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Local AWS cloud emulator. Part of the faisca project family.
## Product Context

- FakeCloud is a local AWS emulator focused on high-fidelity behavior and AWS-compatible responses.
- Current project state: 105 AWS services, 7,491 operations, 248,557/248,557 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations.
- Current project state: 105 AWS services, 7,505 operations, 248,557/248,557 Smithy conformance variants pass — true 100% across every implemented service, no flake margin. See [the parity matrix](website/content/docs/parity.md) for the full service-by-service breakdown of control-plane vs data-plane coverage and known limitations.
- The broader roadmap prioritizes services that LocalStack keeps behind paid tiers, especially ECS, ELB/ALB, CloudFront, CloudWatch Metrics, and EC2.
- Introspection SDKs (Rust, Python, TypeScript, Go, PHP, Java) are already built and maintained for the `/_fakecloud/*` endpoints.

Expand Down
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Works as a drop-in for LocalStack in CI, with Terraform (`endpoints` block), CDK

## Supported services

105 services, 7,491 operations, and true 100% conformance across every implemented service.
105 services, 7,505 operations, and true 100% conformance across every implemented service.

Highlights: S3, DynamoDB, SQS, SNS, EventBridge, Lambda, IAM, STS, KMS, Secrets Manager, CloudFormation, SES, Cognito, Kinesis, RDS (6 real engines), ElastiCache, ECS/ECR, EC2, Step Functions, API Gateway v1/v2, Bedrock, and 80+ more.

Expand Down
8 changes: 7 additions & 1 deletion aws-models/bedrock.json
Original file line number Diff line number Diff line change
Expand Up @@ -8256,6 +8256,12 @@
"smithy.api#enumValue": "none"
}
},
"AWS_REVIEW": {
"target": "smithy.api#Unit",
"traits": {
"smithy.api#enumValue": "aws_review"
}
},
"PROVIDER_DATA_SHARE": {
"target": "smithy.api#Unit",
"traits": {
Expand All @@ -8270,7 +8276,7 @@
}
},
"traits": {
"smithy.api#documentation": "<p>The data retention mode for the account. Valid values are:</p> <ul> <li> <p> <code>default</code> \u2013 The standard data handling for the model applies.</p> </li> <li> <p> <code>none</code> \u2013 Zero data retention.</p> </li> <li> <p> <code>provider_data_share</code> \u2013 Data may be shared with the model provider.</p> </li> <li> <p> <code>inherit</code> \u2013 No data retention mode is set at this scope.</p> </li> </ul>"
"smithy.api#documentation": "<p>The data retention mode for the account. Valid values are:</p> <ul> <li> <p> <code>default</code> \u2013 The standard data handling for the model applies.</p> </li> <li> <p> <code>none</code> \u2013 Zero data retention.</p> </li> <li> <p> <code>aws_review</code> \u2013 Amazon Web Services may review the request data. The data is not shared with the model provider. A model must support this mode to be invoked under it.</p> </li> <li> <p> <code>provider_data_share</code> \u2013 Data may be shared with the model provider.</p> </li> <li> <p> <code>inherit</code> \u2013 No data retention mode is set at this scope.</p> </li> </ul>"
}
},
"com.amazonaws.bedrock#DataRetentionResource": {
Expand Down
155 changes: 135 additions & 20 deletions aws-models/ec2.json
Original file line number Diff line number Diff line change
Expand Up @@ -5082,6 +5082,9 @@
{
"target": "com.amazonaws.ec2#UpdateSecurityGroupRuleDescriptionsIngress"
},
{
"target": "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterface"
},
{
"target": "com.amazonaws.ec2#WithdrawByoipCidr"
}
Expand Down Expand Up @@ -11690,18 +11693,6 @@
"com.amazonaws.ec2#Blob": {
"type": "blob"
},
"com.amazonaws.ec2#BlobAttributeValue": {
"type": "structure",
"members": {
"Value": {
"target": "com.amazonaws.ec2#Blob",
"traits": {
"aws.protocols#ec2QueryName": "Value",
"smithy.api#xmlName": "value"
}
}
}
},
"com.amazonaws.ec2#BlockDeviceMapping": {
"type": "structure",
"members": {
Expand Down Expand Up @@ -14770,6 +14761,14 @@
"smithy.api#documentation": "<p>\n\t\t\tInformation about the interruption configuration and association with the source reservation for interruptible Capacity Reservations.\n\t\t</p>",
"smithy.api#xmlName": "interruptionInfo"
}
},
"ZeroSizePreference": {
"target": "com.amazonaws.ec2#ZeroSizePreference",
"traits": {
"aws.protocols#ec2QueryName": "ZeroSizePreference",
"smithy.api#documentation": "<p>\n\t\t\tThe zero-size preference configured for the interruptible Capacity Reservation. A value of <code>retain</code> keeps the interruptible Capacity Reservation active at zero capacity when you reduce its allocation to zero. A value of <code>default</code> cancels the interruptible Capacity Reservation when you reduce its allocation to zero.\n\t\t</p>",
"smithy.api#xmlName": "zeroSizePreference"
}
}
},
"traits": {
Expand Down Expand Up @@ -21531,6 +21530,12 @@
"smithy.api#documentation": "<p>\n\t\t\tThe tags to apply to the interruptible Capacity Reservation during creation.\n\t\t</p>",
"smithy.api#xmlName": "TagSpecification"
}
},
"ZeroSizePreference": {
"target": "com.amazonaws.ec2#ZeroSizePreference",
"traits": {
"smithy.api#documentation": "<p>\n\t\t\tSpecifies the behavior for the interruptible Capacity Reservation when you reduce its allocation to zero instances. Specify <code>retain</code> to keep the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. Specify <code>default</code> to cancel the interruptible Capacity Reservation and return the capacity to your source Capacity Reservation. The default value is <code>default</code>.\n\t\t</p>"
}
}
},
"traits": {
Expand Down Expand Up @@ -40497,15 +40502,15 @@
"target": "com.amazonaws.ec2#String",
"traits": {
"aws.protocols#ec2QueryName": "ErrorCode",
"smithy.api#documentation": "<p>The error code that indicates why the instance could not be launched. For more\n information about error codes, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html\">Error codes</a>.</p>",
"smithy.api#documentation": "<p>The error code that indicates why the instance could not be launched. For more\n information about error codes, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html\">Error codes</a>.</p>",
"smithy.api#xmlName": "errorCode"
}
},
"ErrorMessage": {
"target": "com.amazonaws.ec2#String",
"traits": {
"aws.protocols#ec2QueryName": "ErrorMessage",
"smithy.api#documentation": "<p>The error message that describes why the instance could not be launched. For more\n information about error messages, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html.html\">Error codes</a>.</p>",
"smithy.api#documentation": "<p>The error message that describes why the instance could not be launched. For more\n information about error messages, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/errors-overview.html\">Error codes</a>.</p>",
"smithy.api#xmlName": "errorMessage"
}
}
Expand Down Expand Up @@ -81457,7 +81462,7 @@
"target": "com.amazonaws.ec2#ApplicationStatusSummary",
"traits": {
"aws.protocols#ec2QueryName": "ApplicationStatus",
"smithy.api#documentation": "<p>Reports impaired functionality that stems from issues with applications running on the instance.</p>",
"smithy.api#documentation": "<p>Reports the application-level health status for the instance.</p>",
"smithy.api#xmlName": "applicationStatus"
}
}
Expand Down Expand Up @@ -90920,6 +90925,14 @@
"smithy.api#documentation": "<p>\n\t\t\tThe type of interruption policy applied to the interruptible reservation.\n\t\t</p>",
"smithy.api#xmlName": "interruptionType"
}
},
"ZeroSizePreference": {
"target": "com.amazonaws.ec2#ZeroSizePreference",
"traits": {
"aws.protocols#ec2QueryName": "ZeroSizePreference",
"smithy.api#documentation": "<p>\n\t\t\tSpecifies how Amazon EC2 handles the interruptible Capacity Reservation when you reduce its allocation to zero instances. A value of <code>retain</code> keeps the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. A value of <code>default</code> cancels the interruptible Capacity Reservation and returns the capacity to your source Capacity Reservation.\n\t\t</p>",
"smithy.api#xmlName": "zeroSizePreference"
}
}
},
"traits": {
Expand Down Expand Up @@ -92425,6 +92438,14 @@
"smithy.api#xmlName": "state"
}
},
"StateMessage": {
"target": "com.amazonaws.ec2#String",
"traits": {
"aws.protocols#ec2QueryName": "StateMessage",
"smithy.api#documentation": "<p>A message describing the current state of the internet registry association, including additional details such as the reason for a failure.</p>",
"smithy.api#xmlName": "stateMessage"
}
},
"ChildRequestXml": {
"target": "com.amazonaws.ec2#String",
"traits": {
Expand Down Expand Up @@ -103668,7 +103689,7 @@
}
},
"UserData": {
"target": "com.amazonaws.ec2#BlobAttributeValue",
"target": "com.amazonaws.ec2#SecureBlobAttributeValue",
"traits": {
"aws.protocols#ec2QueryName": "UserData",
"smithy.api#documentation": "<p>Changes the instance's user data to the specified value. User data must be base64-encoded.\n Depending on the tool or SDK that you're using, the base64-encoding might be performed for you.\n For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-add-user-data.html\">Work with instance user data</a>.</p>",
Expand Down Expand Up @@ -125700,7 +125721,7 @@
}
},
"UploadPolicy": {
"target": "com.amazonaws.ec2#Blob",
"target": "com.amazonaws.ec2#SecureBlob",
"traits": {
"aws.protocols#ec2QueryName": "UploadPolicy",
"smithy.api#documentation": "<p>An Amazon S3 upload policy that gives Amazon EC2 permission to upload items into Amazon S3 on your\n behalf.</p>",
Expand Down Expand Up @@ -127577,6 +127598,28 @@
"smithy.api#pattern": "^(?=.{20,2048}$)arn:aws[a-z-]*:secretsmanager:[a-z0-9-]+:\\d{12}:secret:[a-zA-Z0-9/_+=.@-]+$"
}
},
"com.amazonaws.ec2#SecureBlob": {
"type": "blob",
"traits": {
"smithy.api#sensitive": {}
}
},
"com.amazonaws.ec2#SecureBlobAttributeValue": {
"type": "structure",
"members": {
"Value": {
"target": "com.amazonaws.ec2#SecureBlob",
"traits": {
"aws.protocols#ec2QueryName": "Value",
"smithy.api#documentation": "<p>The attribute value.</p>",
"smithy.api#xmlName": "value"
}
}
},
"traits": {
"smithy.api#documentation": "<p>Describes a value for a resource attribute that is a Base64-encoded binary data object.</p>"
}
},
"com.amazonaws.ec2#SecurityGroup": {
"type": "structure",
"members": {
Expand Down Expand Up @@ -139221,16 +139264,20 @@
"TargetInstanceCount": {
"target": "com.amazonaws.ec2#Integer",
"traits": {
"smithy.api#clientOptional": {},
"smithy.api#documentation": "<p>\n\t\t\tThe new number of instances to allocate. Enter a higher number to add more capacity to share, or a lower number to reclaim capacity to your source Capacity Reservation.\n\t\t</p>",
"smithy.api#required": {}
"smithy.api#documentation": "<p>\n\t\t\tThe new number of instances to allocate. Enter a higher number to add more capacity to share, or a lower number to reclaim capacity to your source Capacity Reservation.\n\t\t</p>"
}
},
"DryRun": {
"target": "com.amazonaws.ec2#Boolean",
"traits": {
"smithy.api#documentation": "<p>\n\t\t\tChecks whether you have the required permissions for the action, without actually making the request, and provides an error response.\n\t\t</p>"
}
},
"ZeroSizePreference": {
"target": "com.amazonaws.ec2#ZeroSizePreference",
"traits": {
"smithy.api#documentation": "<p>\n\t\t\tSpecifies the updated behavior for the interruptible Capacity Reservation when you reduce its allocation to zero instances. Specify <code>retain</code> to keep the interruptible Capacity Reservation active at zero capacity so that you can allocate instances to it again later. Specify <code>default</code> to cancel the interruptible Capacity Reservation and return the capacity to your source Capacity Reservation.\n\t\t</p>"
}
}
},
"traits": {
Expand Down Expand Up @@ -139789,6 +139836,57 @@
"smithy.api#documentation": "<p>Describes the vCPU configurations for the instance type.</p>"
}
},
"com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterface": {
"type": "operation",
"input": {
"target": "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceRequest"
},
"output": {
"target": "com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceResult"
},
"traits": {
"smithy.api#documentation": "<p>Validates whether the specified security groups can be associated with a single\n network interface. The operation checks Amazon Virtual Private Cloud (Amazon VPC)\n quotas for inbound or outbound rules per security group and security groups per\n network interface. Only authorized AWS services can call this operation.</p>\n <p>For more information about security group quotas, see <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-security-groups\">Amazon\n VPC quotas</a> in the <i>Amazon VPC User Guide</i>.</p>"
}
},
"com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceRequest": {
"type": "structure",
"members": {
"SecurityGroupIds": {
"target": "com.amazonaws.ec2#SecurityGroupIdList",
"traits": {
"smithy.api#clientOptional": {},
"smithy.api#documentation": "<p>The IDs of the security groups to validate for association with a single network\n interface. You must specify at least one ID, and each ID must be unique. The number\n of IDs cannot exceed the maximum number of security groups allowed per network\n interface.</p>",
"smithy.api#required": {},
"smithy.api#xmlName": "SecurityGroupId"
}
},
"DryRun": {
"target": "com.amazonaws.ec2#Boolean",
"traits": {
"smithy.api#documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, \n and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. \n Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
}
}
},
"traits": {
"smithy.api#input": {}
}
},
"com.amazonaws.ec2#ValidateSecurityGroupQuotasForInterfaceResult": {
"type": "structure",
"members": {
"Valid": {
"target": "com.amazonaws.ec2#Boolean",
"traits": {
"aws.protocols#ec2QueryName": "Valid",
"smithy.api#documentation": "<p>The operation returns <code>true</code> if the specified security groups can be\n associated with a single network interface without exceeding the quotas. It returns\n an error if associating the security groups would exceed a quota.</p>",
"smithy.api#xmlName": "valid"
}
}
},
"traits": {
"smithy.api#output": {}
}
},
"com.amazonaws.ec2#ValidationError": {
"type": "structure",
"members": {
Expand Down Expand Up @@ -145601,6 +145699,23 @@
}
}
},
"com.amazonaws.ec2#ZeroSizePreference": {
"type": "enum",
"members": {
"retain": {
"target": "smithy.api#Unit",
"traits": {
"smithy.api#enumValue": "retain"
}
},
"default": {
"target": "smithy.api#Unit",
"traits": {
"smithy.api#enumValue": "default"
}
}
}
},
"com.amazonaws.ec2#ZoneIdStringList": {
"type": "list",
"member": {
Expand Down
Loading
Loading