Open lasymits opened 2 years ago
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: "*"
1/1
serverless.yml
簡単に説明
serverless.ymlは各サービス全体の設定を行うためのファイル AWSでは下記の設定が可能 RDSでもLambdaの設定に利用している
使用サンプル
参考資料