본문 바로가기

AWS Lambda ƛ/Lambda

(12)
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를 사용하면 전 세계 여러 위치에 있는 인프라를 프로비저닝하거나 관리하지 않아도 됩니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되..
Lambda Handler란? # Lambda Handler란? 간단 정리 Lambda 함수 호출시 Lambda는 핸들러 메서드를 실행한다. 그리고 당연한 이야기지만 하나의 람다에는 하나의 핸들러만 존재한다. (main 메소드?, 진입점 이라고 이해라면 되려나?...) 아래의 # 예제 코드 1에서 보면 3개의 파라미터(인수가 존재한다.) event: 첫 번째 인수는 호출자로부터의 정보가 포함된 event 객체. 이 정보는 함수를 호출할 때 호출자가 JSON 형식 문자열로 전달하고, 런타임은 이 정보를 객체로 변환한다. context: 두 번째 인수는 컨텍스트 객체이며, 호출, 함수 및 실행 환경에 대한 정보가 포함되어 있다. callback: 세 번째 인수는 callback이다. 비동기 응답을 전송하기 위해 필요하며, 위 코드와 같이..
AWS Lambda에 API Gateway를 연결하여 간단한 웹 서버 만들기 Lambda란 무엇인가? # AWS Lambda를 사용하면 별도의 프로그램을 설치할 필요 없이 바로 사용이 가능하다는 장점이 있다. 손쉽게 서버를 구축하여 데이터를 입력으로 받고 처리하고 전달하는 기능을 수행한다. 별도의 서버나 인프라 환경을 항상 구비해두고 실행 시킬 필요 없이 필요할 때에만 실행 시켜 연산을 수행하고, 수행이 필요 없을때에는 리소스 자원을 내려놓는 역할을 하는게 AWS Lambda의 역할이다. 한마디로 AWS 람다는 함수라고 생각하는게 편하다. 여기서 함수를 작성해서 자동으로 동작하도록 한다 라는 의미로 생각하면 쉽다. 그리고 작성한 함수를 언제 동작시킬지에 대한 조건도 정할 수 있다. 특정 이벤트가 발생했을때 우리가 작성한 AWS Lambda 함수가 동작하도록 설정할 수 있고, 코드..