https://velog.io/@ky0_hw/amazon-linux2023에서-java17-설치하기
클라우드컴퓨팅 제2과제 공개문제.pdf
https://github.com/learn-wlstmd/ECS-Blue-Green
`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
신경써야 하는 부분
배포 구성 1시간 -> 5분
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
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: "<TASK_DEFINITION>"
LoadBalancerInfo:
ContainerName: "skills-app"
ContainerPort: 8080
{
"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"
}