Search

2024 지방기능경기대회 2과제 솔루션

문제지
Loading PDF…
`Automation` 1. VPC Create 2. Security Group Create 3. CodeCommit Create 4. S3 Bucket Create (WEB, Build) 5. Cloudfront Create 6. Bastion Server Create 7. scp 배포자료 8. Target Group, ALB Create 9. ECR Create 10. ECS Cluster, Taskdef Create 11. ECS Service Create 12. ALB Test 13. Code Build Create 14. Code Pipeline Create Bastion 1. package install (jq, git, aws cli v2) 2. docker install 3. .gitignore checking 4. ECR Image Upload 5. git push for code commit repo
Markdown
복사
신경써야 하는 부분
배포 구성 1시간 -> 5분
Markdown
복사
Backend Manifest
version: 0.2 env: variables: AWS_REGION: "REGION" AWS_ACCOUNT_ID: "ACCOUNT_ID" ECR_REPO_NAME: "ECR_REPO_NAME" phases: pre_build: commands: - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com build: commands: - docker build -t $ECR_REPO_NAME . - docker tag $ECR_REPO_NAME:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:latest - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$ECR_REPO_NAME:latest - echo "{\"ImageURI\":\"${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${ECR_REPO_NAME}:latest\"}" > imageDetail.json artifacts: files: - appspec.yml - taskdef.json - imageDetail.json
YAML
복사
version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "<TASK_DEFINITION>" LoadBalancerInfo: ContainerName: "skills-app" ContainerPort: 8080
YAML
복사
{ "containerDefinitions": [ { "name": "skills-app", "image": "<IMAGE1_NAME>", "cpu": 0, "portMappings": [ { "containerPort": 8080, "hostPort": 8080, "protocol": "tcp" } ], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "healthCheck": { "command": [ "/bin/sh", "-c", "curl -f http://localhost:8080/api/health || exit 1" ], "interval": 30, "timeout": 5, "retries": 3 }, "systemControls": [] } ], "family": "skills-task-def", "executionRoleArn": "arn:aws:iam::<<AWS_ID>>:role/ecsTaskExecutionRole", "networkMode": "awsvpc", "volumes": [], "status": "ACTIVE", "requiresAttributes": [ { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.24" }, { "name": "com.amazonaws.ecs.capability.ecr-auth" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21" }, { "name": "ecs.capability.container-health-check" }, { "name": "ecs.capability.execution-role-ecr-pull" }, { "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" }, { "name": "ecs.capability.task-eni" } ], "placementConstraints": [], "compatibilities": ["EC2", "FARGATE"], "requiresCompatibilities": ["FARGATE"], "cpu": "512", "memory": "1024", "registeredAt": "2024-08-30T13:56:40.838Z", "registeredBy": "arn:aws:sts::<<AWS_ID>>:assumed-role/AWSCodePipelineServiceRole-ap-northeast-2-skills-backend-pipeli/1725026200431" }
JSON
복사