AWS Lambda Create a Lambda Function with CloudFromation: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(35 intermediate revisions by the same user not shown)
Line 16: Line 16:


  Resources:
  Resources:
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: playground-lambda-execution-role
      Path: /service-role/
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Principal:
              Service:
                - "lambda.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      Policies:
        - PolicyName: 'inline-policy'
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: 'Allow'
                  Action:
                    - 'logs:CreateLogGroup'
                    - 'logs:CreateLogStream'
                    - 'logs:PutLogEvents'
                  Resource:
                    - 'arn:aws:logs:*:*:*'
                - Effect: 'Allow'
                Action:
                  - 'ec2:CreateNetworkInterface'
                  - 'ec2:DescribeNetworkInterfaces'
                  - 'ec2:DeleteNetworkInterface'
                Resource:
                  - '*'
   LambdaExample:
   LambdaExample:
     Type: "AWS::Lambda::Function"
     Type: AWS::Lambda::Function
     Properties:  
     Properties:  
       [[AWS_Lambda_Concepts#Function_Name|FunctionName]]: my-lambda
       [[AWS_Lambda_Concepts#Function_Name|FunctionName]]: lambda-experiment
       Description: 'Some description'
       Description: 'Some description'
       [[AWS_Lambda_Concepts#Code|Code]]:
       [[AWS_Lambda_Concepts#Code|Code]]:
         S3Bucket: String
         S3Bucket: a-bucket
         S3Key: String
         S3Key: a-deployment-package.jar
         S3ObjectVersion: String
         # S3ObjectVersion: String
         ZipFile: String
         # ZipFile: String
       Environment:
       [[AWS_Lambda_Concepts#Handler_Code|Handler]]: playground.amazon.lambda.LambdaExperiment::handleRequest
         Environment
      [[AWS_Lambda_Concepts#Runtime|Runtime]]: java8
      Runtime: String
      [[AWS_Lambda_Concepts#Environment_Variables|Environment]]:
       VpcConfig:
         <span id='Variables'></span>Variables:
         VPCConfig
          MY_ENV_VAR: 'my value'
       MemorySize: Integer
       [[AWS_Lambda_Concepts#Relationship_to_a_VPC|VpcConfig]]:
       Role: String
         SubnetIds:
       Timeout: Integer
          - !Ref BlueSubnet
       Handler: String
          - !Ref RedSubnet
      ReservedConcurrentExecutions: Integer
        SecurityGroupIds:
       DeadLetterConfig:
          - ...
         DeadLetterConfig
       [[AWS_Lambda_Concepts#Memory_Configuration|MemorySize]]: 128
       KmsKeyArn: String
       [[AWS_Lambda_Concepts#Role|Role]]: !GetAtt LambdaExecutionRole.Arn
       Layers:
       [[AWS_Lambda_Concepts#Timeout|Timeout]]: ''Integer''
         - String
       [[AWS_Lambda_Concepts#Concurrent_Execution|ReservedConcurrentExecutions]]: ''Integer''
       TracingConfig:
       [[AWS_Lambda_Concepts#Dead_Letter|DeadLetterConfig]]:
         TracingConfig
         ''DeadLetterConfig''
       [[AWS_Lambda_Concepts#KMS_Management_Service_Key|KmsKeyArn]]: ''String''
       [[AWS_Lambda_Concepts#Layer|Layers]]:
         - ''String''
       [[AWS_Lambda_Concepts#Tracing|TracingConfig]]:
         ''TracingConfig''
       Tags:
       Tags:
         Resource Tag
         Resource Tag
Working example:
<syntaxhighlight lang='yaml'>
</syntaxhighlight>
=CloudFormation Stack Example=
{{External|https://github.com/ovidiuf/aws-release-pipeline/blob/master/lambda/lambda.yaml}}
=Create a bash Lambda=
{{External|[https://docs.aws.amazon.com/lambda/latest/dg/runtimes-walkthrough.html Publishing a Custom Runtime]}}


=Create a Java Lambda=
=Create a Java Lambda=
=Create a bash Lambda=
{{Internal|AWS Java Lambda Development|AWS Java Lambda Development}}

Latest revision as of 03:41, 8 April 2019

External

Internal

Resource Types

AWS::Lambda::Function

AWS::Lambda::Function
CreateFunction
Resources:
  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: playground-lambda-execution-role
      Path: /service-role/
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: 'Allow'
            Principal:
              Service:
                - "lambda.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      Policies:
        - PolicyName: 'inline-policy'
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: 'Allow'
                 Action:
                   - 'logs:CreateLogGroup'
                   - 'logs:CreateLogStream'
                   - 'logs:PutLogEvents'
                 Resource:
                   - 'arn:aws:logs:*:*:*'
               - Effect: 'Allow'
                Action:
                  - 'ec2:CreateNetworkInterface'
                  - 'ec2:DescribeNetworkInterfaces'
                  - 'ec2:DeleteNetworkInterface'
                Resource:
                  - '*'
  LambdaExample:
    Type: AWS::Lambda::Function
    Properties: 
      FunctionName: lambda-experiment
      Description: 'Some description'
      Code:
        S3Bucket: a-bucket
        S3Key: a-deployment-package.jar
        # S3ObjectVersion: String
        # ZipFile: String
      Handler: playground.amazon.lambda.LambdaExperiment::handleRequest
      Runtime: java8
      Environment:
        Variables:
          MY_ENV_VAR: 'my value'
      VpcConfig:
        SubnetIds:
          - !Ref BlueSubnet
          - !Ref RedSubnet
        SecurityGroupIds:
          - ...
      MemorySize: 128
      Role: !GetAtt LambdaExecutionRole.Arn
      Timeout: Integer
      ReservedConcurrentExecutions: Integer
      DeadLetterConfig:
        DeadLetterConfig
      KmsKeyArn: String
      Layers:
        - String
      TracingConfig:
        TracingConfig
      Tags:
        Resource Tag


Working example:

CloudFormation Stack Example

https://github.com/ovidiuf/aws-release-pipeline/blob/master/lambda/lambda.yaml

Create a bash Lambda

Publishing a Custom Runtime

Create a Java Lambda

AWS Java Lambda Development