AWSTemplateFormatVersion: "2010-09-09" Description: Deploy a Fargate task that uses hey to generate parallel concurrent traffic Parameters: EnvironmentName: Type: String Default: "ecs" Description: An environment name that will be prefixed to resource names URL: Type: String Description: Url for load test Resources: # IAM Rules ECSTaskPolicy: Type: "AWS::IAM::ManagedPolicy" Properties: Description: Managed policy for the ECS Task roles PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: # Allow the ECS tasks to upload logs to CloudWatch - "logs:CreateLogStream" - "logs:PutLogEvents" Resource: "*" # ECS Loadtest Task Role ECSLoadTaskRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ecs.amazonaws.com" - "ecs-tasks.amazonaws.com" Action: "sts:AssumeRole" - Effect: "Allow" Principal: AWS: - !Sub "arn:aws:iam::${AWS::AccountId}:root" Action: - "sts:AssumeRole" Path: "/" ManagedPolicyArns: - !Ref ECSTaskPolicy # ECS Loadtest Task Execution Role ECSLoadTaskExecutionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Effect: Allow Principal: Service: [ecs-tasks.amazonaws.com] Action: ["sts:AssumeRole"] Path: / Policies: - PolicyName: AmazonECSTaskExecutionRolePolicy PolicyDocument: Statement: - Effect: Allow Action: # Allow the ECS tasks to upload logs to CloudWatch - "logs:CreateLogStream" - "logs:PutLogEvents" Resource: "*" # Fargate Task TaskDefinition: Type: AWS::ECS::TaskDefinition Properties: Family: "yelb-loadtest" NetworkMode: awsvpc Cpu: "256" Memory: "512" RequiresCompatibilities: - FARGATE TaskRoleArn: !Ref "ECSLoadTaskRole" ExecutionRoleArn: !Ref "ECSLoadTaskExecutionRole" ContainerDefinitions: - Name: yelb-loadtest Image: public.ecr.aws/j7e2a1k3/hey-loadtest:1.0 Cpu: 100 Command: - -c - 100 - -n - 10000 - -z - 2m - !Sub "${URL}" LogConfiguration: LogDriver: "awslogs" Options: awslogs-group: ecs/serviceconnectdemo awslogs-region: !Ref "AWS::Region" awslogs-stream-prefix: "yelb"