ecspresso advent calendar 2020 day 24 - lambroll, sailtrim

Amazon ECS의 개발 도구ecspresso 사용 방법 요약ecspresso Advent calendar 24일째다.

ecspresso의 형제 제품


ecspresso에는 사상이 일치하는 형제라고 할 수 있는 디자인 도구가 있다.AWS Lambda의 디버그 도구인 lambroll과 Lightsail Contaainer의 디버그 도구인sailtrim입니다.
이 두 제품을 소개하겠습니다.

lambroll


https://github.com/fujiwara/lambroll
AWS Lambda의 설계 도구입니다.'등루'라고 읽다.
lambroll is a minimal deployment tool for AWS Lambda.
이름처럼 AWS Lambda를 대상으로 함수만 설계하는 도구입니다.
사용된 설정 파일은 하나의 파일function.json뿐이며 구조는 AWS SDKlambda.CreateFunctionInput입니다.
  • function.json에서ecspresso의 정의 파일과 같음,env,mustenv, tfstate 함수를 사용하여 템플릿 처리 가능
  • 지정된 카탈로그의 컨텐트를 zip에 취합하여 Lambda를 추출하고 적용function.json 변경 사항
  • IAM Role, VPC(Subnet) 등의 관리 불필요
    외부 자원의 ID 등은 tfstate 참조 기능을 통해 해결
  • 기존 함수와 설정을 인코딩할 수 있는 명령lambroll init
  • function.json는 다음과 같다.
    {
      "Description": "hello function",
      "FunctionName": "hello",
      "Handler": "index.js",
      "MemorySize": 128,
      "Role": "{{ tfstate `aws_iam_role.lambda.arn` }}",
      "Runtime": "nodejs12.x",
      "Timeout": 5,
      "TracingConfig": {
        "Mode": "PassThrough"
      }
    }
    
    는 원래 Apex라는 경량의 디자인 도구를 사용했으나 2019년 프로젝트가 중단됐다.대체품SAMServerless으로 시도해 봤지만 램브롤이 너무 많은 스택을 개발해 에이펙스의 대체품이 되기 어려웠다면 스스로 쓸 수밖에 없었다.
    사용이 편리하다는 것은ecspresso와 거의 같기 때문에ecspresso에 익숙해진 사람이라면 불협화음을 느끼지 않을 것이다.
    ecspresso와 마찬가지로 내부에 사용된 구조를 원상태로 유지합니다.이에 따라 2020년 리벤트에서 발표한 람다의 컨테이너 이미지 지원에 대해서도 발표 후 1일 이내에 최소한의 코드로 추가 대응할 수 있게 됐다.
    https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/
    https://github.com/fujiwara/lambroll/releases/tag/v0.10.0

    sailtrim


    https://github.com/fujiwara/sailtrim
    2020년 11월 발표된 라이트사일 컨테이너의 디자인 도구다.'ギギギ'로 읽다.
    Lightsail Contaainer는 밸런스에서 컨테이너를 사용하는 애플리케이션을 간단히 공개할 수 있는 서비스다.
    https://aws.amazon.com/jp/blogs/news/lightsail-containers-an-easy-way-to-run-your-containers-in-the-cloud/
    ECS는 기본적으로 필수적이며 IAM Role, 서브넷, 보안 그룹, 타겟 그룹 등의 준비 없이 활용할 수 있어 설정이 간단하다.
    다음 예는 nginx:latest 웹 서버를 그림으로 공개하는sailtrim의 설정 파일과 정의 파일입니다.이 3개의 파일만으로도 컨테이너가 작동한nginx를 HTTPS에서 전 세계에 공개할 수 있다.
    service: service.json
    deployment: deployment.json
    
    {
      "containerServiceName": "container-service-1",
      "power": "micro",
      "scale": 1
    }
    
    {
      "containers": {
        "nginx": {
          "image": "nginx:latest",
          "command": [],
          "environment": {},
          "ports": {
            "80": "HTTP"
          }
        }
      },
      "publicEndpoint": {
        "containerName": "nginx",
        "containerPort": 80,
        "healthCheck": {
          "healthyThreshold": 2,
          "unhealthyThreshold": 2,
          "timeoutSeconds": 2,
          "intervalSeconds": 5,
          "path": "/",
          "successCodes": "200-499"
        }
      }
    }
    
    sailtrim도 설정 파일의 템플릿 처리 환경 변수를 이용하여 (env,must env)를 전개할 수 있다.현재 tfstate 합작이 없습니다.왜 없냐면 설정을 보듯 외부 자원이 필요한 ID가 거의 없는 경우다.
    기존 서비스의 설정sailtrim init 명령을 인코딩할 수 있는 것은 형제 제품과 공통된 특징이다.
    2020년 11월 막 개발을 시작해 아직 기능이 완비되지는 않았지만 앞으로도 계속 개발할 예정이다.

    ecspresso와 공통된 특징과 사상


    ecspresso,lambroll,sailtrim는 공통된 특징이 다음과 같다.
  • 기존 AWS의 설정은 init 명령을 통해 인코딩할 수 있음
  • AWS SDK의 얇은 wrapper로 구현
  • 설정 파일에 환경 변수와Terraform tfstate 내용을 펼칠 수 있는 템플릿 기법
  • 이 있음
  • Go에서 구현된 단일 바이너리 명령
  • AWS 콘솔 등에 의해 처음 제작된 서비스에서 코드 관리를 시작할 수 있도록 합니다.빈번하게 업데이트되는 응용 프로그램에 대한 디버깅 도구와 이외의 중간부품과 관리 서비스의 관리를 구분합니다.AWS SDK는 AWS의 서비스 전용 도구로서 새로운 기능을 쉽게 따라갈 수 있다.이런 사상이 실현되다.
    24일 업데이트된ecspresso advent 달력도 드디어 마지막 날이 왔다.내일 통지가 있습니다!
    https://sfujiwara.hatenablog.com/entry/ecspresso-handbook

    좋은 웹페이지 즐겨찾기