・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