Lambda@Edge 소개
6634 단어 람다CloudFrontLambda@EdgeAWS
소개
Lambda@Edge를 처음 사용하고 여러가지 당황하는 일이 많았기 때문에 조사한 것을 정리한다.
또, 매번 추가해 간다.
Lambda@Edge란?
Lambda@Edge는 CloudFront의 기능 중 하나로 CloudFront의 에지 서버에서 코드를 실행하는 Lambda 함수입니다. 사용자와 가까운 곳에서 코드를 실행하면 애플리케이션 성능이 향상됩니다.
CloudFront 이벤트를 트리거로 코드를 실행합니다.
트리거
전술한 바와 같이, CloudFront의 이벤트를 트리거로 하고, 이벤트가 있던 CloudFront와 같은 리전에서 기동한다. 지정할 수 있는 CloudFront의 이벤트는 이하의 4개.
1. 뷰어 요청
2. 뷰어 응답
3. 오리진 요청
4. 오리진 응답
Lambda@Edge의 트리거를 뷰어 요청으로 설정하면 CloudFront가 캐시를 보유하고 있는지에 관계없이 뷰어로부터 요청이 있을 때마다 Lambda가 시작됩니다. 캐시가있는 경우 시작하지 않으려면 트리거를 オリジンリクエスト
로 설정하십시오.
로그
Lambda@Edge 로그는 Lambda와 마찬가지로 CloudWatchLogs에 저장되지만 Lambda 함수가 시작된 에지 서버가 있는 리전의 CloudWatchLogs에 저장됩니다.
Lambda@Edge를 작성할 때의 주의
지역
Lambda@Edge는 버지니아 북부 지역에서 Lambda 함수를 만듭니다.
작성 방법은 Lambda 함수와 동일
부끄러운 이야기이지만, Lmadba@Edge를 사용하기 전에, Lambda@Edge라는 서비스가 있다고 생각하고 있었습니다만, Lambda 함수를 버지니아 북부 리전에서 작성해, CloudFront의 이벤트를 트리거로 하는 것으로 Lambda@ Edge가 되는 것 같다.
IAM 역할
Lambda@Edge에 첨부하는 IAM 역할은 서비스 프린시펄 lambda.amazonaws.com
및 edgelambda.amazonaws.com
가 맡을 수 있는 역할이어야 하기 때문에 다음의 신뢰 정책을 기술한 IAM 역할을 작성한다.
역할 신뢰 정책{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"edgelambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
IAM 정책 만들기
IAM 정책{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"lambda:GetFunction",
"lambda:EnableReplication"
],
"Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:function:<関数名>:<バージョン>"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:UpdateDistribution"
],
"Resource":"arn:aws:cloudfront::xxxxxxxxxxxx:distribution/<ディストリビューションID>"
}
]
}
함수를 편집한 후 CloudFront에 배포
함수를 편집하여 저장 후 CloudFront에 배포하여 편집 내용을 각 에지 서버에 반영합니다.
덧붙여서, Lambda 함수는 버전 관리하고 있어 배포할 때에 자동으로 버젼 업 되어 그것이 배포 된다.
참고
Lambda@Edge
Lambda@Edge에 대한 IAM 액세스 권한 및 역할 설정
Reference
이 문제에 관하여(Lambda@Edge 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chii-08/items/1b8c7f9f876673b7aa20
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Lambda@Edge는 CloudFront의 기능 중 하나로 CloudFront의 에지 서버에서 코드를 실행하는 Lambda 함수입니다. 사용자와 가까운 곳에서 코드를 실행하면 애플리케이션 성능이 향상됩니다.
CloudFront 이벤트를 트리거로 코드를 실행합니다.
트리거
전술한 바와 같이, CloudFront의 이벤트를 트리거로 하고, 이벤트가 있던 CloudFront와 같은 리전에서 기동한다. 지정할 수 있는 CloudFront의 이벤트는 이하의 4개.
1. 뷰어 요청
2. 뷰어 응답
3. 오리진 요청
4. 오리진 응답
Lambda@Edge의 트리거를 뷰어 요청으로 설정하면 CloudFront가 캐시를 보유하고 있는지에 관계없이 뷰어로부터 요청이 있을 때마다 Lambda가 시작됩니다. 캐시가있는 경우 시작하지 않으려면 트리거를
オリジンリクエスト
로 설정하십시오.로그
Lambda@Edge 로그는 Lambda와 마찬가지로 CloudWatchLogs에 저장되지만 Lambda 함수가 시작된 에지 서버가 있는 리전의 CloudWatchLogs에 저장됩니다.
Lambda@Edge를 작성할 때의 주의
지역
Lambda@Edge는 버지니아 북부 지역에서 Lambda 함수를 만듭니다.
작성 방법은 Lambda 함수와 동일
부끄러운 이야기이지만, Lmadba@Edge를 사용하기 전에, Lambda@Edge라는 서비스가 있다고 생각하고 있었습니다만, Lambda 함수를 버지니아 북부 리전에서 작성해, CloudFront의 이벤트를 트리거로 하는 것으로 Lambda@ Edge가 되는 것 같다.
IAM 역할
Lambda@Edge에 첨부하는 IAM 역할은 서비스 프린시펄 lambda.amazonaws.com
및 edgelambda.amazonaws.com
가 맡을 수 있는 역할이어야 하기 때문에 다음의 신뢰 정책을 기술한 IAM 역할을 작성한다.
역할 신뢰 정책{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"edgelambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
IAM 정책 만들기
IAM 정책{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"lambda:GetFunction",
"lambda:EnableReplication"
],
"Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:function:<関数名>:<バージョン>"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:UpdateDistribution"
],
"Resource":"arn:aws:cloudfront::xxxxxxxxxxxx:distribution/<ディストリビューションID>"
}
]
}
함수를 편집한 후 CloudFront에 배포
함수를 편집하여 저장 후 CloudFront에 배포하여 편집 내용을 각 에지 서버에 반영합니다.
덧붙여서, Lambda 함수는 버전 관리하고 있어 배포할 때에 자동으로 버젼 업 되어 그것이 배포 된다.
참고
Lambda@Edge
Lambda@Edge에 대한 IAM 액세스 권한 및 역할 설정
Reference
이 문제에 관하여(Lambda@Edge 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/chii-08/items/1b8c7f9f876673b7aa20
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"edgelambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"lambda:GetFunction",
"lambda:EnableReplication"
],
"Resource": "arn:aws:lambda:us-east-1:xxxxxxxxxxxx:function:<関数名>:<バージョン>"
},
{
"Effect": "Allow",
"Action": [
"cloudfront:UpdateDistribution"
],
"Resource":"arn:aws:cloudfront::xxxxxxxxxxxx:distribution/<ディストリビューションID>"
}
]
}
Lambda@Edge
Lambda@Edge에 대한 IAM 액세스 권한 및 역할 설정
Reference
이 문제에 관하여(Lambda@Edge 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chii-08/items/1b8c7f9f876673b7aa20텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)