viewer requests// index.mjs (ES Module)export const handler = async (event, context, callback) => { var request = event.Records[0].cf.request; console.log("Original request:", JSON.stringify(request, null, 2)); // querystring 파싱 let querystring = request.querystring; let params = new URLSearchParams(querystring); // 'hello'가 있으면 'id'로 변경 if (params.has('hello')) { ..
Aws
NodeJS CodeLambda@Edge로 배포할때 Viewer Request로 배포합니다.더보기// index.mjs (ES Module)export const handler = async (event, context, callback) => { var request = event.Records[0].cf.request; console.log(JSON.stringify(request.body)); // body data를 Base64로 디코딩 let body = Buffer.from(request.body.data, 'base64').toString('utf8'); let parsedBody = JSON.parse(body); // 'hello'가 있으면 ..
SG_ID=""aws ec2 create-tags --resources $SG_ID --tags \ Key=Name,Value=$SG_NAME \ Key=ingress.k8s.aws/stack,Value=wsi/wsi \ Key=ingress.k8s.aws/resource,Value=ManagedLBSecurityGroup \ Key=elbv2.k8s.aws/cluster,Value=wsi-eks-cluster명령어를 실행하면 보안그룹에 태그를 추가해줍니다.이제 ALB의 보안그룹을 변경해주면 됩니다.
Config 규칙을 생성할때 꼭!!!!! 보안그룹 아이디를 지정해주세요람다가 Config에 접근할 수 있도록 권한 추가하기aws lambda add-permission --function-name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.comPython Code더보기import jsonimport boto3import timefrom datetime import datetime, timedelta# 클라이언트 초기화ec2 = boto3.resource('ec2')cloudwatch_logs = boto3.client('logs')config_client = boto3.client('config')..
{ "Name": "wsi-header-rule", "Priority": 1, "Action": { "Block": { "CustomResponse": { "ResponseCode": "403", "CustomResponseBodyKey": "403" } } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "wsi-header-metric" }, "Statement": { "NotStatement": { "Statement": { "ByteMatchStatem..
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::*", "arn:aws:s3:::*/*" ] }, { "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::j-s3-bucket-qqqqqqq-backup/2024", "arn:aws:s3:::j-s3-bucket-qqqqqqq-backup/2024/*" ] } ]} buckets=$(aws s3 ls | awk '{print..
kubectl create ns wsi-nswget https://raw.githubusercontent.com/wngnl-dev/AWS/main/Image/test/configmap.yamlwget https://raw.githubusercontent.com/wngnl-dev/AWS/main/Image/test/deployment.yaml POD_ID=$(kubectl get po -n wsi-ns -o jsonpath='{.items[0].metadata.name}')kubectl exec -it $POD_ID -n wsi-ns -- curl localhost:8080/2xxkubectl exec -it $POD_ID -n wsi-ns -- curl localhost:8080/3xxkubectl e..
FROM alpine:latestWORKDIR /COPY ./ /ENV RUN apk update && apk add --no-cache libc6-compat curl && adduser -D USER EXPOSE 8080CMD ["/"]
{ "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike..
wsi-project: developer라는 태그가 들어간 인스턴스만 생성 할 수 있는 IAM 정책더보기{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccess", "Action": [ "ec2:Describe*", "ec2:GetConsole*", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "iam:ListInstanceProfiles" ], ..
Deployment에서 Fargat로 pod를 배포한뒤아래의 파일을 이용해서 namespace와 configmap을 생성해줍니다. pod에 exec로 접속하여 호출하였음에도 로그 그룹에 로그가 생성되지 않는다면deployment.yaml을 삭제하고 다시 시도해보세요. Down filewget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/CloudWatch/Fargate/aws-observability-namespace.yamlwget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/CloudWatch/Fargate/configmap.yaml Testaws logs filter-log-events..
{ "Name": "CheckForLengthKey", "Priority": 1, "Action": { "Block": { "CustomResponse": { "ResponseCode": 403 } } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "CheckForLengthKey" }, "Statement": { "AndStatement": { "Statements": [ { "ByteMatchStatement": { "FieldTo..
이름CIDRRouteTable 이름gwangju-VPC110.0.0.0/24 gwangju-VPC1-priv-a10.0.0.0/25gwangju-VPC1-priv-a-rtgwangju-VPC1-priv-b10.0.0.128/25gwangju-VPC1-priv-b-rt 이름CIDRRouteTable 이름gwangju-VPC210.0.1.0/24 gwangju-VPC2-priv-a10.0.1.0/25gwangju-VPC2-priv-a-rtgwangju-VPC2-priv-b10.0.1.128/25gwangju-VPC2-priv-b-rt 이름CIDRRouteTable 이름gwangju-EgressVPC10.0.2.0/24 gwangju-EgressVPC-priv-a10.0.2.0/25gwangju-EgressV..
ip 제한 해제kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=truekubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=100kubectl set env ds aws-node -n kube-system WARM_IP_TARGET=150kubectl set env ds aws-node -n kube-system MINIMUM_IP_TARGET=150노드의 남은 CPU와 메모리 확인kubectl top nodes
Link External Secret 역활 & 정책 만들기더보기REGION=""CLUSTER_NAME=""NAMESPACE=""cat >secret-policy.json External Secret 설치하기helm repo add external-secrets https://charts.external-secrets.io helm install external-secrets \ external-secrets/external-secrets \ -n kube-system \ --set serviceAccount.create=false Secret Reloader 설치하기helm repo add stakater https://stakater.github.io/stakater-chartshelm re..
Ec2에서 Assume역활의 세션을 받아 RBAC을 적용하는 방식입니다. EC2 역활 신뢰 정책더보기{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:::user/" }..
vi ~/.bash_logout2024.04.21 - [Aws] - EC2 접속 시 CloudWatch LogGroup에 USER 로그 작성하기
Github Cluster Rolek8s cluster의 모든 네임스페이스와 리소스에 대한 권한을 설정할려면wget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/RBAC/Cluster_Role/configmap.yamlwget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/RBAC/Cluster_Role/rolebinding.yamlRolek8s cluster의 특정 네임스페이스 내의 리소스에 대한 권한을 설정할려면wget https://raw.githubusercontent.com/wngnl-dev/AWS/main/EKS/RBAC/Role/configmap.yamlwget https://ra..
Lambda 역활 신뢰 정책더보기{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "edgelambda.amazonaws.com", "lambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ]}Lambda 코드이 코드는 S3 버킷 /frontend 폴더에 있는 이미지를 params로 받고s3 presigned u..
설치하는 명령sudo yum install lynx -y접속하는 명령 -- 접속이 안될시 서버에 문제가 없나 확인해 줍니다.lynx
Python Flask에서는 index.html 파일을 /templates 경로에 위치 시켜야 합니다
URl 경로가 /v1으로 시작되고 QueryString에 "baduser"가 포함되어 있으면 차단하는 규칙입니다.아래는 Waf 규칙 Json 입니다.{ "Name": "query-waf", "Priority": 1, "Action": { "Block": { "CustomResponse": { "ResponseCode": 403 } } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "query-waf" }, "Statement": { "AndStatement": { "Statement..
GET, POST를 제외한 Method를 차단하는 WAF 규칙입니다.아래는 WAF 규칙의 Json 입니다.{ "Name": "method-waf", "Priority": 0, "Statement": { "NotStatement": { "Statement": { "OrStatement": { "Statements": [ { "ByteMatchStatement": { "SearchString": "GET", "FieldToMatch": { "Method": {} }, "TextTra..
dynamodb, ecr.dk, ecr.apiURL 경로가 /static으로 시작하고 User-Agent가 safe-client가 아니면 차단하도록 구성했습니다.아래는 WAF 규칙의 Json 입니다.{ "Name": "user-agent-check", "Priority": 0, "Statement": { "NotStatement": { "Statement": { "ByteMatchStatement": { "SearchString": "safe-client", "FieldToMatch": { "SingleHeader": { "Name": "user-agent" } ..
Install Modulesudo yum updatesudo yum install ruby -ysudo yum insatll wget -ywget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/installchmod +x ./installsudo ./install autoChecksudo systemctl status codedeploy-agentsudo systemctl start codedeploy-agent블로그Ec2 & CodeDeploy 역활 신뢰 정책역활을 생성하고 EC2와 CodeDeploy에 연결해주세요.{ "Version": "2012-10-17", "Statement": [ { "Effect..
로그 스트림 생성하기aws logs create-log-stream \ --log-group-name \ --log-stream-name ssm_login.sh #!/bin/bashSESSION_ID=$(aws ssm describe-sessions --state Active --query 'Sessions[*]' --output json | jq -r 'max_by(.StartDate) | .SessionId')LOG_ENTRY=$(jq -n \ --arg eventTime "$(date '+%Y-%m-%dT%H:%M:%SZ')" \ --arg eventSource "ssm.amazonaws.com" \ --arg state "Active" \ --arg accountId "6546544..
동영상ArgoCD 설치더보기#ArgoCD 설치curl -LO https://github.com/argoproj/argo-cd/releases/download/v1.4.2/argocd-linux-amd64chmod u+x argocd-linux-amd64sudo mv argocd-linux-amd64 /usr/local/bin/argocdexport PATH=/usr/local/bin:$PATHecho 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrckubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests..
nginx.conf더보기events {}http { server { listen 80; server_name localhost; location / { root /usr/share/nginx; index index.html; } }}Dockerfile더보기FROM nginx:alpineCOPY nginx.conf /etc/nginx/nginx.confCOPY index.html /usr/share/nginx/index.htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]
aws sts get-caller-identity
Link Lattice를 설정하기 전에 Node의 보안그룹에서 인바운드를 AnyOpen 해줍니다. Lattice 대상그룹을 먼저 만들어줍니다.대상 유형은 ip로 선택하고Ipv4 주소는 EKS에서 만든 대상그룹에 연결되어 있는 IP를 넣어줍니다,이제 Lattice 서비스를 생성해줍니다. 마지막으로 Lattice 서비스 네트워크를 생성해줍니다.Lattice 서비스 네트워크에서 위에서 만든 서비스를 연결해주고Vpc Lattice Service 에 호출을 보낼 VPC를 연결해줍니다.보안그룹은 선택하지 않습니다 Lattice 대상그룹 확인TARGET_GROUP_ID=$(aws vpc-lattice list-target-groups --target-group-type IP | jq -r '.items[].id')a..