~~NOCACHE~~ ## 30.Lambda関数をS3にアップロードしたファイルからデプロイする ### 前提 ・ZipファイルにしたLambda関数を、S3にアップロードしたファイルからデプロイします。 ・Lambda関数はPythonで記述しています。 ・ColudFormationのテンプレートはyaml形式で記述しています。 ### 資材 ・Lambda関数のzipファイル ・ColudFormationのテンプレート #### Lambda関数のzipファイル .pyファイルをZipファイルにします。 {{:Aws:CloudFormation:pasted:20230109-121215.png?direct 600x0}} #### 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 {{tag>AWS CloudFormation Lambda Python}}