my-express-cluster라는 이름의 cluster 하나 만들기 (Fargate 사용하도록 설정)redis-td 생성하기: 0.5 CPU, 1GB 메모리로 생성redis, image URL은 redis, container PORT는 6379, container App protocol은 None으로 설정해야 함


my-express-cluster Cluster에 들어가서 service 생성: LaunchType으로 설정!! Task definition에 미리 생성해둔 redis-td 선택


ecsTaskExecutionRole에 들어가서 add Permission 들어가고, create inline policy 선택, Cloud watch log 검색해서 선택, Write 중 CreateLogGroup 체크, Resorces로는 All에 체크, policy 생성 후 다시 시도해보기ECR 검색해서 들어간 후 아래와 같이 repository 생성 클릭

디폴트가 Private repository이므로 그대로 두고, 이름에 Express라고 적기
나머지 설정은 디폴트로 두고 생성!
참고 AWS docs: 링크의 2개의 json 코드 중, resorce를 현재 push하고자 하는 resorce로 제한하는 버전의 코드를 선택하기 (아래){
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:CompleteLayerUpload",
"ecr:UploadLayerPart",
"ecr:InitiateLayerUpload",
"ecr:BatchCheckLayerAvailability",
"ecr:PutImage",
"ecr:BatchGetImage"
],
"Resource": "arn:aws:ecr:region:111122223333:repository/repository-name"
},
{
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
}
]
}
region: 현재 URL의 region 정보만 복사해서 붙여넣기
ID: repository의 맨 앞 숫자 복사해서 붙여넣기
repository-name: 마지막 부분 이름 복사해서 붙여넣기
"Resource": "arn:aws:ecr:<region>:<ID>:repository/<repository-name>"
privateExpressECR_imagePush로 설정 후 policy 생성expressGithubAction

aws --version


aws configure 입력 후 키를 차례로 입력해주기




my-express라는 이름의 새로운 task definition 생성하기



tcp:// 부분은 빼고 복사해서 붙여넣고 맨 앞에는 redis://를 추가하기



my-express-cluster로 설정



redis와 express-service 중 express-service로 들어가서 view load balancer 눌러서 들어가고, load balancer의 DNS name으로 접속하면 express 서버 접속 가능!


코드 버전을 업데이트할 때 어떻게 변화해야 할지 생각해보자
명령어의 가장 끝에 latest 대신에 버전을 명시해주자.


task definition에서, 아래의 사진과 같이 선택하고 create new revision을 누르면 my-express:1을 기준으로 새로운 버전을 만들어달라는 의미임

나머지는 전부 그대로 두고 container의 image URL에서 :latest만 2로 바꿔주면 새로운 버전의 task definition이 생김

service로 들어가서 update service 클릭하고 다른 수정사항 없이 revision만 2 (latest)로 수정해주기



Self-healing: AWS ECS service는 죽은 서버(테스크)를 자동으로 살려낸다.


최대/최소/평균 값이, n분/n시간 동안 <threshold> %에 비해 클 때/크거나 작을 때/작거나 같을 때/작을 때 알람을 n분 이내에 trigger 해라.task/percentage를 n 만큼 추가해라/으로 설정해라/만큼 제거해라

load-test.yml 에서 loadbalancer의 DNS 주소를 가지고 부하를 주기: artillery run load-test.yml
# load-test.yml
config:
target: http://express-lb-2076134438.ap-northeast-2.elb.amazonaws.com
phases:
- duration: 3000
arrivalRate: 1500
scenarios:
- flow:
- get:
url: "/fibo/35"

const { hello } = process.env;
console.log({ hello });
ECR > Private Repository > Repositories > express 로 들어가서 push commands 확인 후 버전명만 바꿔가며 push해주기
my-express-secrets

ecsTaskExecutionRole에 들어가서 createInlinePolicies 클릭
"Action": "secretsmanager:GetSecretValue", "Resource": <ARN값>
expressSecretManagerReadAccess 로 짓고 생성
:hello:: 추가하기


