コンテンツにスキップ

serverless.yml@Serverless Framework

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. configValidationMode

configValidationModeとは

設定ファイルのバリデーションの実行時に、エラーを出力するレベルを設定する。

*実装例*

configValidationMode: warn


02. custom

customとは

スコープが serverless.yml ファイル内のみの変数を設定する。

*実装例*

custom:
  foo: FOO


03. frameworkVersion

frameworkVersionとは

Serverless Framework のバージョンを設定する。

*実装例*

frameworkVersion: "2"


04. functions

functionsとは


description

Lambda 関数の説明文を設定する。

*実装例*

functions:
  main:
    description: The function that do foo


environment

Lambda 関数の変数を設定する。

*実装例*

functions:
  main:
    environment:
      FOO: foo
      BAR: bar
      BAz: baz


events

▼ eventBridge

Lambda 関数に紐付けて作成する Amazon EventBridge を設定する。

*実装例*

イベントパターンとして、json ファイルを読み込む

functions:
  main:
    events:
      - eventBridge:
          pattern: ${file(./event_bridge/patterns/pattern.json)}

▼ sqs

Lambda 関数に紐付ける SQS を設定する。

新しく SQS を作成できず、既存の SQS と紐付ける動作しかないことに注意する。

*実装例*

functions:
  main:
    events:
      - sqs:arn:aws:sqs:region:<AWSアカウントID>:prd-foo-queue


image

▼ name

Lambda 関数で使用するイメージのエイリアスを設定する。

*実装例*

functions:
  main:
    image:
      name: base


maximumRetryAttempts

Lambda 関数のリトライ回数を設定する。

*実装例*

functions:
  main:
    maximumRetryAttempts: 1


memorySize

Lambda 関数のメモリサイズを設定する。

*実装例*

functions:
  main:
    memorySize: 512


name

Lambda 関数の名前を設定する。

*実装例*

functions:
  main:
    name: <Lambda関数名>


role

Lambda 関数に紐付ける IAM ロールを設定する。

*実装例*

別に resources.Resources を使用して作成した IAM ロールを設定する。

functions:
  main:
    role: !GetAtt LambdaRole.Arn


runtime

Lambda 関数で使用する言語とバージョンを設定する。

*実装例*

functions:
  main:
    runtime: <使用する言語バージョン>


05. package

packageとは

作成されるアーティファクトのパスを設定する。


patterns

*実装例*

package:
  patterns:
    - ./bin/**


06. provider

providerとは

Serverless Framework で操作するクラウドインフラベンダーを設定する。

ベンダーでのアカウント認証のため、資格情報を渡す必要がある。


ecr

▼ scanOnPush

*実装例*

provider:
  ecr:
    scanOnPush: "true"

▼ images

Lambda 関数のベースイメージを指定し、エイリアスを付ける。

名前はすべて小文字である必要がある。

*実装例*

provider:
  ecr:
    images:
      base:
        uri: <イメージリポジトリURL>@<バージョンタグ> # <AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/<イメージリポジトリ名>:latest


eventBridge

▼ useCloudFormation

Amazon EventBridge を CloudFormation で作成するか否かを設定する。

provider:
  eventBridge:
    useCloudFormation: "true"


lambdaHashingVersion

Lambda 関数のハッシュバージョンを設定する。

*実装例*

provider:
  lambdaHashingVersion: 20201221


name

クラウドインフラベンダー名を設定する。

*実装例*

provider:
  name: aws


region

クラウドインフラを作成するリージョンを設定する。

provider:
  region: ap-northeast-1


stackName

CloudFormation のスタック名を設定する。

*実装例*

provider:
  stackName: <CloudFormationスタック名>


stage

ステージ名を設定する。

クラウドインフラの実行環境名と考えてよい。

*実装例*

provider:
  stage: <ステージ名>


07. resources

resourcesとは (awsプロバイダーの場合)


IAMロール

IAM ロールを作成する。

*実装例*

IAM ロールに紐付ける IAM ポリシーは、json ファイルで切り分けておいたほうがよい。

resources:
  Resources:
    LambdaRole:
      Type: AWS::IAM::Role
      Properties:
        RoleName: prd-foo-lambda-role
        Description: The role for prd-foo-lambda
        AssumeRolePolicyDocument: ${file(./iam_role/policies/trust_policies/lambda_policy.json)}
        # インラインポリシー
        Policies:
          - PolicyName: prd-foo-lambda-execution-policy
            PolicyDocument: ${file(./iam_role/policies/custom_managed_policies/lambda_execution_policy.json)}
        # 管理ポリシー
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/AWSLambdaExecute


08. service

serviceとは (awsプロバイダーの場合)

*実装例*

service: foo-service


09. useDotenv

useDotenvとは

*実装例*

useDotenv: "true"


10. variablesResolutionMode

variablesResolutionModeとは

*実装例*

variablesResolutionMode: null