・ZipファイルにしたLambda関数を、S3にアップロードしたファイルからデプロイします。
・Lambda関数はPythonで記述しています。
・ColudFormationのテンプレートはyaml形式で記述しています。
・Lambda関数のzipファイル
・ColudFormationのテンプレート
今回は以下の通りでLambdaで使用するIAMロールと、Lambda関数を作成するテンプレートにしています。
下記の4つのパラメータを「Parameters」で指定しています。
・PrmS3BucketName :Lambda関数のzipファイルをアップロードするバケット名
・PrmLambdaFunctionZipName :Lambda関数のzipファイル名
・PrmLambdaFunctionName :Lambda関数名
・PrmLambdaFunctionRoleName :Lambda関数で使用するIAMロール名
AWSTemplateFormatVersion: "2010-09-09"
Description: Lambda deploy test.
Parameters:
PrmS3BucketName:
Description: S3Bucket name with LambdaFunctionZip?
Type: String
PrmLambdaFunctionZipName:
Description: LambdaFunction ZipName?
Type: String
PrmLambdaFunctionName:
Description: LambdaFunctionName?
Type: String
PrmLambdaFunctionRoleName:
Description: LambdaFunctionRoleName?
Type: String
Resources:
### IamRole ###
ResLambdaFunctionRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: !Ref PrmLambdaFunctionRoleName
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
Effect: "Allow"
Action: "sts:AssumeRole"
Principal:
Service: "lambda.amazonaws.com"
### LambdaFunction ###
ResLambdaFunction:
Type: AWS::Lambda::Function
DependsOn: ResLambdaFunctionRole
Properties:
Code:
S3Bucket: !Ref PrmS3BucketName
S3Key: !Ref PrmLambdaFunctionZipName
FunctionName: !Ref PrmLambdaFunctionName
Handler: SampleEventFunction.lambda_handler
Runtime: python3.8
Timeout: 60
MemorySize: 128
Role: !GetAtt ResLambdaFunctionRole.Arn