본문 바로가기

AWS Lambda ƛ

(20)
Lambda@Edge에서 CloudFront 동작 구성 시 권한 에러 해결 방법 # Lambda@Edge에서 CloudFront 동작 구성 시 권한 에러 해결 방법0. 요약클라우드 프론트에서 동작을 설정할때 아래와 같이 람다 엣지를 트리거 하여 구성을 해야한다. 허나 여기서 권한 에러가 발생 하면 아래와 같이 처리하면 된다.아래의 URL로 이동하여 3번 Lambda@Edge 트리거를 확인https://may9noy.tistory.com/1811 CloudFront에서 Lambda@Edge 흐름 설명CloudFront와 Lambda@Edge를 사용하는 흐름은 다음과 같습니다:1. 사용자 요청사용자가 웹 브라우저를 통해 CloudFront에 설정된 도메인 이름으로 콘텐츠를 요청. 예를 들어, 사용자가 https://example.com/index.may9noy.tistory.com1. ..
Lambda@Edge에 권한 부여하기 # Lambda@Edge에 권한 부여하기신뢰 정책에 edgelambda.amazonaws.com과 lambda.amazonaws.com을 신뢰할 수 있는 엔터티로 포함시키는 방법은 다음과 같다.AWS Management Console에 로그인. IAM 대시보드로 이동. 역할 섹션으로 이동하여 수정하려는 역할을 찾아 선택. 예를 들어, lambda-edge-role-00740aaa 역할을 선택. 역할 요약 페이지에서 신뢰 관계 탭을 클릭. 신뢰 정책 편집 또는 신뢰 관계 편집 버튼을 클릭. 신뢰 정책의 JSON 편집기가 열린다. 여기에서 Statement 배열 내에 두 개의 Principal을 추가한다. 이미 다른 서비스가 신뢰할 수 있는 엔터티로 설정되어 있다면, Service 배열에 추가한다. 없다면 ..
Lambda@Edge 함수 배포하기 # Lambda@Edge 함수 배포하기Lambda@Edge 함수의 ARN(Amazon Resource Name)에서 특정 함수 버전을 참조하려면 ARN 끝에 버전 번호를 추가해야 한다. AWS Lambda 콘솔로 이동한다. 해당 lambda-edge의 이름을  찾는다. 아직 하지 않았다면 함수의 새 버전을 발행한다. 발행 후, AWS Lambda는 버전별 ARN을 제공할 것이다. 예를 들어, 버전 번호가 1이라면 ARN은 다음과 같다.arn:aws:lambda:us-east-1:12345678910:function:lambda-edge/lambda-edge:11을 실제 함수의 버전 번호로 교체한다.이 버전별 ARN은 Lambda 함수를 CloudFront와 연결할 때 사용한다. - 끝 -
Lambda@Edge # Lambda@Edge 구성하기 1. 생성 - 버지니아 북부 리전에서 Lambda를 생성한다. 배포는 아래와 같이 작업 버튼을 클릭하여 배포가 가능하다. 배포를 클릭하면 아래와 같이 CloudFront의 단일 배포로 이루어 진다. - 생성을 하면 생성이 안된다. 권한을 부여해 줘야 한다. 아래의 커스텀 역할을 생성한다. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "edgelambda.amazonaws.com", "lambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] } 여기서 위의 역할을 나는 edge_role_test라고 생성을 하였..
AWS Lambda & API Gateway & Route53 사용하기 # AWS Lambda & API Gateway & Route53을 활용한 서비스 1. ACM 에서 퍼블릭 인증서를 요청한다. - 완전히 정규화된 도메인 이름을 입력 - DNS 검증 - 권장 선택 2. 해당 인증서로 들어가서 아래와 같이 Route53에서 레코드 생성을 클릭 - 레코드 생성 버튼을 클릭하여 생성 한다. - 아래와 같이 생성되면 정상이다. 3. Lambda를 생성한다. - 기본 헬로우 월드를 출력하는 함수를 생성한다. - 코드는 기본코드 이다. exports.handler = async (event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('람다 테스트 !!'), }; return res..
Lambda@Edge란? # Lambda@Edge란? 간단 정리 Lambda@Edge : 사용자에게 가장 가까운 위치에서 호출 (그래서 버지니아 북부 리전) 로그인 및 세션체크 등 빠르게 뭔가를 사용자가 응답 받아야 할 경우, Lambda@Edge 서비스를 통해 빠른 Request & Response 구현이 가능하다. AWS 의 설명은 아래와 같다. Lambda@Edge는 Amazon CloudFront의 기능 중 하나로서 애플리케이션의 사용자에게 더 가까운 위치에서 코드를 실행하여 성능을 개선하고 지연 시간을 단축할 수 있게 해 줍니다. Lambda@Edge를 사용하면 전 세계 여러 위치에 있는 인프라를 프로비저닝하거나 관리하지 않아도 됩니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되..
CloudTrail 정보를 활용하여 AWS Lambda로 개발하기 # CloudTrail에서 넘어오는 정보를 활용하여 AWS Lambda로 개발하기 1. 시나리오 작성하기 - 시나리오를 짜보면 아래와 같다. 일단 김 짱구라는 AWS 사용자가 존재한다. 김 짱구 라는 사용자는 인스턴스를 생성하면 자동으로 누가 해당 인스턴스를 만들었는지 그리고 EBS에 생성한 사용자와 인스턴스 id 를 자동으로 태깅하고 싶었다. 2. 작업시작하기 - 일단 인스턴스가 생성될때 태깅을 해야하므로 특정한 사용자가 인스턴스를 생성 했다 라는 정보를 어디선가 가져와야 한다. 가장 일반적으로 CloudTrail은 해당 계정의 AWS 리소스의 거의 모든 생성 및 변경 그리고 삭제 내역에 대한 정보를 가지고 있으므로 인스턴스가 생성될때 발생하는 이벤트 정보를 당연히 가져올 수 있다. 그럼 인스턴스가 생..
CloudTrail의 Resource 정보를 EventBridge에서 수신하는 방법 # CloudTrail의 특정 Resource 정보를 EventBridge에서 수신 후 다음 스텝을 실행하는 방법 1. 클라우드 트레일의 리소스 정보를 살펴보기 - 클라우드 트레일에서 리소스 정보가 어떤 방식으로 저장되는지 보면 아래와 같다. 일단 json 형태로 저장이 되는 것을 확인 할 수 있다. 일부 정보를 확인하면 아래와 같다. "eventTime":"2023-08-04T04:37:21Z", "eventSource":"ec2.amazonaws.com", "eventName":"DescribeVolumes", "awsRegion":"ap-northeast-2", "sourceIPAddress":"config.amazonaws.com", "userAgent":"config.amazonaws.com",..