@altostra/core
Version:
Core library for shared types and logic
43 lines (42 loc) • 1.56 kB
TypeScript
import type { NonEmptyString } from "../../../common/CustomTypes/NonEmptyString";
import type { NaturalNumber } from "../../../common/CustomTypes/Numerics";
import type { SecurityGroupId } from "../../../common/CustomTypes/SecurityGroupId";
import type { SubnetId } from "../../../common/CustomTypes/SubnetId";
import type { Arn } from "../../Arn";
import type { AwsResourceCommon, CloudFormationTags } from "../common";
import type { CloudFormationValue, Ref } from "../IntrinsicFunctions";
export declare type ServiceType = 'AWS::ECS::Service';
export interface Service extends AwsResourceCommon {
Type: ServiceType;
Properties: ServiceProperties;
}
export interface LoadBalancer {
TargetGroupArn: CloudFormationValue<Arn>;
ContainerPort: NaturalNumber;
ContainerName: NonEmptyString;
}
interface ServiceRegistry {
RegistryArn: CloudFormationValue<Arn>;
ContainerName?: NonEmptyString;
ContainerPort?: NaturalNumber;
Port?: NaturalNumber;
}
interface NetworkConfiguration {
AwsvpcConfiguration: {
AssignPublicIp?: 'DISABLED' | 'ENABLED';
SecurityGroups?: CloudFormationValue<SecurityGroupId>[];
Subnets: SubnetId[];
};
}
export interface ServiceProperties {
Cluster?: Ref;
LaunchType: 'FARGATE';
ServiceName: NonEmptyString;
TaskDefinition: CloudFormationValue<Arn>;
DesiredCount: NaturalNumber;
NetworkConfiguration: NetworkConfiguration;
LoadBalancers?: LoadBalancer[];
ServiceRegistries: ServiceRegistry[];
Tags?: CloudFormationTags;
}
export {};