serverless로 CLI에서 lambda 배포

개요


AWSlambdaAWS Management Console에 직접 쓸 수 있지만,git에서 소스 코드를 관리하고 CLI에서 배포하고 싶지 않습니까?

이 문서에서는 Serverless을 사용하여Node.js에서 구현한 샘플을 lambda에 배포하는 절차의 예를 보여 줍니다.

필자가 CLI에서의 AWS 조작에 별로 없었던 것도 있어, 본 기사에서는 AWS Management Console 에서의 조작 순서도 약간 파고 들어 기재하고 있습니다만,Serverless의 기본 기능은 Serverless의 메인터너이기도 하다 @horike37 씨의 아래의 기사에 의해 자세하게 정리되어 있으므로, 그쪽을 참조해 주시는 것이 좋다고 생각했습니다.
Serverless Framework 사용법 요약

awscli 설치


$ brew install awscli

배포 사용자의 액세스 키 가져오기



배포에 사용하는 계정으로 awscli로 로그인하려면 AWS Management Console에서 사용자 자격 증명을 가져옵니다.
  • IAM -> Users -> デプロイに使うユーザー -> Security credentials -> Create access key
  • Access key IDSecret access key를 보관하십시오. (Download .csv file에서 CSV를 다운로드하는 것이 좋습니다.)


  • 배포 사용자에게 권한 부여



    serverless에서 lambda를 배포하려면 배포 사용자에게 배포 권한이 있어야 합니다.
    이 절에서는 정책 설정 절차의 예를 제공합니다.
  • IAM -> Policies -> Create policy 클릭 -> JSON 탭 클릭
  • 아래 붙여넣기
  • {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Allow",
                "Action": [
                    "iam:*",
                    "apigateway:*",
                    "s3:*",
                    "logs:*",
                    "lambda:*",
                    "cloudformation:*"
                ],
                "Resource": "*"
            }
        ]
    }
    

    ActionResource 는, 보안의 관점에서는 필요한 정책이나 자원을 보다 한정적으로 지정하는 것이 바람직합니다만, 수가 많아 세부의 세탁이 힘들었기 때문에, 와일드 카드로 얽히게 지정했습니다.
    3. 정책 이름은 선택 사항이지만 여기에서는 lambdaDeployPolicy 예제로 정책을 만듭니다.
    4. IAM -> Users -> 배포 사용자 선택 -> Add permissions -> Attach existing policies directly5. 3.에서 만든 lambdaDeployPolicy를 선택하고 Next: Review -> Add permissions에 정책 추가

    aws에 배포 사용자로 로그인


    $ aws configure
    AWS Access Key ID [None]: <Access key IDを貼り付け>
    AWS Secret Access Key [None]: <Secret access key> を貼り付け
    Default region name [None]: ap-northeast1
    Default output format [None]: <そのままエンター>
    

    serverless 설치


    $ npm i -g serverless
    

    serverless 프로젝트 생성


    $ sls create --template aws-nodejs --path lambda-deploy-serverless
    $ cd lambda-deploy-serverless
    

    serverless 구성 파일 업데이트



    기본값은 리전이 us-east1이거나 API 게이트웨이 설정을 포함하지 않으므로 다음과 같이 지정합니다.

    serverless.yml (업데이트)
    service: lambda-deploy-serverless
    provider:
      name: aws
      runtime: nodejs8.10
      stage: dev
      region: ap-northeast-1 # ap-northeast-1リージョンにデプロイする
    functions:
      hello: # 関数名の指定
        handler: handler.hello
        events:
          - http: # API Gatewayの指定
              path: hello
              method: get
    

    다른 설정은 여기 참조:
    htps : // / r ゔ ぇ r ぇ s. 이 m/f 라메를 rk/두 cs/p 로즈로 rs/아ws/구이로/세 rゔぇrぇs. yml/

    배포


    $ sls deploy
    Serverless: Packaging service...
    Serverless: Excluding development dependencies...
    Serverless: Uploading CloudFormation file to S3...
    Serverless: Uploading artifacts...
    Serverless: Uploading service lambda-deploy-serverless.zip file to S3 (45.3 KB)...
    Serverless: Validating template...
    Serverless: Updating Stack...
    Serverless: Checking Stack update progress...
    ........................
    Serverless: Stack update finished...
    Service Information
    service: lambda-deploy-serverless
    stage: dev
    region: ap-northeast-1
    stack: lambda-deploy-serverless-dev
    resources: 10
    api keys:
      None
    endpoints:
      GET - https://**********.execute-api.ap-northeast-1.amazonaws.com/dev/hello
    functions:
      hello: lambda-deploy-serverless-dev-hello
    layers:
      None
    

    이렇게 람다가 배포되면 성공


    오류가 발생하면 로그의 오류 부분을 참조하여 정책이 올바르게 설정되었는지 확인하십시오.

    상세 로그를 표준 출력으로 출력하려면 다음과 같이 하십시오.
    SLS_DEBUG=* serverless deploy
    

    좋은 웹페이지 즐겨찾기