lasymits / Doc

0 stars 0 forks source link

Serverless Framework serverless.yml #33

Open lasymits opened 2 years ago

lasymits commented 2 years ago

serverless.yml

簡単に説明

serverless.ymlは各サービス全体の設定を行うためのファイル AWSでは下記の設定が可能 RDSでもLambdaの設定に利用している

サービス内のLambdaファンクション群の設定
Lambdaに設定されるIAMロールの設定
デプロイ時にどのファイル/ディレクトリを含めるか/含めないかの設定
使用するプラグインの定義
Lambdaファンクションごとのトリガーとなるイベントの定義
Lambdaファンクションが他のAWSリソースを連携する場合は、そのIAMを含めた定義

使用サンプル

# Serverless Frameworkのプロジェクト名
service: matsui-test
# Serverless Frameworkのversion
frameworkVersion: "2"
provider:
  # インフラ環境を定義(今回はAWS)
  name: aws
  # 言語のversion(今回はpython)
  runtime: python3.8
  # オプション
  lambdaHashingVersion: 20201221
  # dev or prod(今回は開発)
  stage: dev
  # どのリージョンを使うかを定義(今回は東京)
  region: ap-northeast-1
# カスタム変数が定義可能
custom:
  # 外部ファイルの読み込みも可能
  otherfile:
    # 別途yamlファイルと同じ階層にconf/config_sample.ymlを作成してその場所を指定
    config: ${file(./conf/config_sample.yml)}
# Lambda関数を作成
functions:
  # 関数の名前を定義(デフォルトだと実際には、サービス名+環境名+関数の名前で表示される)
  MatsuiTest:
    # 環境変数を定義(埋め込むのは良くないので設定ファイルから引用できる)
    # このファイル内で定義した情報を.でつなげることで入力できる
    # configファイルの取り出したい変数を指定
    environment: ${self:custom.otherfile.config.environment}
    # lambda_handler名を定義を定義(pythonファイル名xxx.pyの.py以下を指定することでどのファイルのlambda_handlerかを指定できる)
    handler: matsuitest.lambda_handler

    # LambdaにアタッチするIAMロールを選択(resourceでRoleの権限は別途定義して作成する)
    # Serverless Frameworkは、CloudFormationで作成するので!GetAttでIAMロールのARNを取り出せる
    role: !GetAtt MatsuiTestRole.Arn
# 各種サービスを作成する
# resources以下はCloudFormationと同じ記法が可能
resources:
  Resources:
    # IAMロールの名前を定義
    MatsuiTestRole:
      Type: AWS::IAM::Role
      # 以下でIAMロールを定義
      Properties:
        # IAMロールの内容を定義
        AssumeRolePolicyDocument:
          Version: "2012-10-17"
          Statement:
            - Effect: "Allow"
              Principal:
                Service:
                  - "lambda.amazonaws.com"
              Action:
                - "sts:AssumeRole"
        Path: /
        Description: MatsuiTest
        # IAMポリシーを作成
        Policies:
          # IAMポリシーの名前
          - PolicyName: MatsuiTestPolicy
            # IAMポリシーの内容を定義
            PolicyDocument:
              Version: "2012-10-17"
              Statement:
                - Effect: "Allow"
                  Action:
                    - "sts:AssumeRole"
                  Resource: "*"

参考資料

lasymits commented 2 years ago

1/1