•
문제지
`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
복사


