AWS Lambda - Lambda 레이어를 통한 기능 향상

8578 단어 lambdaaws
2014년 11월에 Lambda functions는 클라우드 컴퓨팅 세계에 혁명을 가져왔다.이것은 우리로 하여금 진정한 의미의 무서버 계산을 이해하게 했다.빠르고 부담스럽기 쉬운 독립 계산의 개념은 새로운 범례를 제공했다.
독립된 계산 단원은 매우 좋다.그러나 곧 사람들은 그들의 코드 단편이 독립적이지 않다는 것을 깨달았다.그들은 많은 것을 나눠야 한다.우리는 일반적인 데이터 구조와 응용 프로그램의 실용 프로그램이 필요하다.Lambda 함수에서 이러한 기능을 제공하는 방법은 무엇입니까?
이것은 일부 코드의 중복을 초래했다.사람들은 이 문제를 해결하는 혁신적인 방법을 찾았다. 한 곳에 하나의 통일된 코드가 있어 여러 개의 다른 단원에 배치할 수 있다.따라서 같은 코드는 다른 lambda 함수에 배치된다.이것은 어느 정도 작용했다.그러나 그 후 배치의 복잡성이 폭발했다.
사람들은 모든 lambda 함수를 위해 모든 것을 배치하고 싶어 한다.이것도 마찬가지로 효과가 있다.그러나 라이브러리와 의존 항목의 규모가 커지면서 메모리 사용량과 계산 시간에 대한 대가를 치러야 한다.
이 모든 문제를 고려해 AWS는 2018년 리인벤트에 람바다 층의 개념을 도입했다.

Lambda 레이어란?


간단히 말해서 Lambda 레이어는 Lambda 함수에 직접 포함할 수 있는 외부 라이브러리입니다.
Lambda 레이어는 코드를 통해 업로드하거나 웹 콘솔에 직접 업로드할 수 있는 압축 파일로 제공됩니다.코드가 필요한 lambda 함수는 이 층을 사용하도록 설정해야 합니다.
이러한 lambda 함수가 실행될 때, 층의 내용은 lambda가 실행될 때 환경의/opt 폴더에 추출됩니다.레이어에는 Lambda 함수에 국한된 언어가 필요하지 않습니다.코드가 그것을 호출하고 사용할 수만 있다면 된다.
이제 Lambda 레이어를 생성하고 사용하는 간단한 예를 살펴보겠습니다.간단한 NodeJS 기반 Lambda 함수를 개발하고 사용자 정의 레이어를 사용하도록 구성합니다.
  • Lambda 레이어 생성
  • AWS 콘솔 사용
  • 명령줄
  • Lambda 함수에서 사용
  • AWS 콘솔 사용
  • 명령줄
  • Lambda 레이어 생성하기


    Lambda 레이어는 우리가 개발한 Lambda 함수에 사용할 수 있는 조직적인 코드입니다.또는 Lambda 환경에서 사용할 수 없는 모듈 세트를 포함할 수도 있습니다.프레젠테이션에 대해 간단한 자바스크립트 층을 만듭니다. 사용자 정의 코드와 http 요청을 호출하는 axios 모듈을 포함합니다.
    이를 위해 nodejs라는 폴더를 만듭니다.JavaScript 레이어를 개발하는 경우 이 폴더 이름은 신성불가침입니다.
    Linux 프롬프트에서 다음을 수행합니다.
    mkdir nodejs && cd nodejs
    
    그리고 npm init를 사용하여 노드 프로젝트를 만듭니다.이것은 테스트 항목이기 때문에, 우리는 특정한 가방 세부 사항에 관심이 없다.그래서 저희가 기본값을 받아들이기 위해 - y를 제공합니다.
    npm init -y
    
    다음에 우리는 즉시 설치할 것이다.js 모듈.
    npm install --save moment
    
    그러면 폴더인 노드 모듈이 생성됩니다.만약 네가 그것을 훔쳐본다면, 너는 몇 개의 폴더와 파일이 이미 그곳에 착륙한 것을 볼 수 있을 것이다.
    다음에 작은 자바스크립트 코드인 custom을 만듭니다.js
    moment=require("moment");
    exports.now = () => { console.log(moment().format()) };
    
    node modules 폴더에 추가합니다.이 모든 것이 준비된 후에, 우리는 모든 nodejs 폴더를 압축했다. 모든 코드가 거기에 추가되었다.
    저기 있다.우리는 이미 람바다 층을 만들었다.그런 다음 AWS 계정으로 밀어 넣어야 합니다.
    웹 컨트롤러나 간단한 명령행 스크립트를 통해 lambda층을 만들 수 있습니다.초보자에게는 네트워크 컨트롤러에서 조작이 더욱 간단하다.하지만 만약 AWS에 대해 진지하다면, UI에서 설정하는 것이 아니라, 장애를 깨고 인코딩을 시작해야 한다.우리는 이곳에서 그 중 어떤 것도 조사할 것이다.

    AWS 웹 콘솔 사용


    먼저 AWS Lambda 대시보드를 계정으로 엽니다.왼쪽에는 대시보드, 응용 프로그램, 기능을 볼 수 있는 옵션이 표시되며 리스트의 마지막 옵션은 레이어입니다.그걸 클릭하세요.

    도면층 페이지가 열립니다.다음과 같은 내용이 표시됩니다.

    지금 도면층 만들기 단추를 누르십시오
    이런 메뉴를 열어요.

    우리는 그것에 좋은 이름을 지어 zip 파일을 올렸다.호환되는 운행을 선택할 때가 필요합니다.이 경우, 우리는 사용할 수 있는 nodejs가 실행될 때를 선택할 수 있습니다.마지막으로 창설을 클릭하십시오.
    그곳에서, 우리 lambda층이 생성되었습니다.

    명령줄에서


    콘솔이 좋아요.하지만 항상 좋은 것은 아니다.실제 생산 배치에서 우리는 수백 개의 이런 부품을 배치할 것으로 예상된다.우리는 하나하나 그것들을 창조할 수 없다.지루하고 시간이 걸리는 것 외에, 그것은 잘못되기 쉽다.소스 코드가 빠르고 반복 가능합니다.그래서 우리는 우리의 도면을 설정하기 위해 스크립트를 썼다.AWS CLI가 설치되어 있는 경우 코드를 한 줄만 호출하면 이 zip 파일에서 새 Lambda 레이어를 만들 수 있습니다.
    aws lambda publish-layer-version --layer-name learnlayer --compatible-runtime nodejs12.x --zip-file fileb://layer.zip
    
    그곳에서 lambda층이 발표되었습니다.
    Lambda 레이어는 항상 버전 번호로 게시됩니다.게시된 후에는 도면층을 변경할 수 없습니다.만약 우리가 그것을 수정한다면, 우리는 반드시 새로운 버전 번호를 발표해야 한다.
    이것은 매우 주도면밀하다.한 층은 여러 개의 lambda 함수에 한 번에 사용됩니다.우리가 특정한 수요를 위해 도면층을 수정할 때, 우리는 누구도 놀라게 하고 싶지 않다.하지만 이 층의 모든 람다 함수를 사용하는 코드를 정말로 수정하고 싶을 때도 화가 난다.
    이 문제를 해결할 방법이 있다.우리는 아래의 한 절에서 볼 것이다.

    Lambda 레이어 사용


    일단 우리가 이 층을 가지게 되면, 우리는 그것을 사용하도록 람바다 함수를 설정해야 한다.마찬가지로 명령줄이나 AWS 웹 콘솔을 사용하는 두 가지 옵션이 있습니다.
    웹 컨트롤러부터 시작합시다.

    AWS 웹 콘솔 사용


    만약 당신이 이 블로그를 읽고 이 점을 달성하고 있다면, 나는 당신이 Lambda 함수가 무엇인지, 그리고 그것을 어떻게 만드는지 알고 있다고 믿는다. 적어도 웹 컨트롤러에서는 이렇다.그래서 나는 이 세부 사항들을 뛰어넘을 것이다.일단 lambda를 설정하면 이 층을 추가할 수 있습니다

    Lambda 구성에서 레이어를 클릭합니다.이렇게 하면 레이어 구성과 레이어 추가 버튼이 표시됩니다.그걸 클릭하세요.
    페이지에 데리고 가서 그림 층을 선택할 것입니다.너는 다른 출처에서 적합한 도층을 선택할 수 있다.이 경우 사용자 정의 레이어를 선택합니다.그게 우리가 가진 거니까.우리는 새로 만든 도면층을 보여 주는 밑에 있는 목록을 보았다.

    새로 만든 lambda 레이어를 선택하고 추가 를 클릭합니다.여기서 Lambda 함수를 새 레이어를 사용하도록 구성했습니다.

    명령줄에서


    명령 행사는 매우 간단해졌다.우리는 새로운 층을 추가하기 위해 기존의 lambda 함수를 수정할 뿐입니다.
    aws lambda update-function-configuration --function-name TestLambda --layers arn:aws:lambda:us-east-1:869871132949:layer:learnlayer:1
    

    익명 함수


    이 층을 사용하려면, 우리는 Lambda 함수에서 간단한 코드를 사용할 수 있다
    const moment = require("moment");
    const custom = require("custom");
    
    exports.handler = async (event, context) => {
        console.log(moment().format());
        custom.now();    
    
        const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
        };
        return response;
    };
    
    이 코드는 사용자 정의된 JavaScript 코드와 인스턴트 메시지를 사용합니다.우리가 설치한 js 모듈입니다.이 두 개 모두 예상한 대로 완벽해서 우리는 그를 기록했다
    2020-09-10T19:20:03.267Z    b36bcc48-9b66-4437-82f8-4c4fe9459e2e    INFO    2020-09-10T19:20:03+00:00
    2020-09-10T19:20:03.267Z    b36bcc48-9b66-4437-82f8-4c4fe9459e2e    INFO    2020-09-10T19:20:03+00:00
    
    됐다!모든 기능이 포함된 Lambda 레이어를 방금 만들었고 Lambda 함수에서 사용했습니다.물론 현실에서의 람다층과 람다 함수의 기능은 이뿐만이 아니다.
    그러나 핵심 개념은 변하지 않는다.너는 너의 모든 상업 논리로 그것을 확장할 수 있다.

    좋은 웹페이지 즐겨찾기