0Pricing
AWS for Backend Developers (EC2, S3, RDS, Lambda) · 课时

Lambda 层与环境变量

使用 Lambda 层管理依赖项,并使用环境变量进行配置,从而简化代码部署和管理。

Lambda 层与环境变量 是 CoddyKit 上的免费 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS for Backend Developers (EC2, S3, RDS, Lambda) 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课程共包含 4 节课。

本课时的部分内容尚未翻译,以英文显示。

What are Lambda Layers?

AWS Lambda Layers help you manage common dependencies and custom runtimes more efficiently. Think of them as shared libraries for your functions.

Instead of bundling all your code and dependencies with every function deployment, you can package reusable components into a Layer.

Why Use Lambda Layers?

Layers offer several benefits for your serverless applications:

  • Smaller Deployment Packages: Keep your function code lean by separating dependencies.
  • Code Reusability: Share common code (e.g., utility functions, database connectors) across multiple Lambda functions.
  • Faster Deployments: Smaller packages upload quicker.
  • Easier Updates: Update a dependency once in a layer, and all functions using it benefit.

How Layers are Structured

A Lambda Layer is essentially a .zip file archive containing library code, custom runtimes, or other dependencies.

When you attach a layer to a function, Lambda extracts its content to the /opt directory in the function's execution environment. Your function code can then import modules from /opt.

Imagining a Simple Layer

Let's say you have a common logging utility or a specific SDK version you want to use. Instead of including it in every Lambda function's deployment package, you'd put it in a layer.

The layer's ZIP file structure might look like this for Python:

python/mylogger.py

Your Lambda function would then simply import it as import mylogger.

Attaching a Layer to Lambda

You can attach up to 5 layers to a single Lambda function. This is typically done through the AWS Management Console, AWS CLI, or Infrastructure as Code tools like SAM or CloudFormation.

When attaching, you specify the Layer ARN (Amazon Resource Name) which uniquely identifies the layer and its specific version.

Layer Demo: Shared Utility

Imagine we have a layer containing a utils.py with a greet function. Here's how a Lambda function would use it. (We simulate the layer's presence for this runnable demo):

import json

# In a real Lambda, 'utils' would be imported
# from a layer mounted at /opt/python/utils.py
# For this demo, we simulate the 'utils' module.
class Utils:
    @staticmethod
    def greet(name):
        return f"Hello, {name} from Layer!"
utils = Utils() # Make it available as 'utils'

def lambda_handler(event, context):
    name = event.get('name', 'World')
    message = utils.greet(name)
    
    return {
        'statusCode': 200,
        'body': json.dumps(message)
    }

if __name__ == "__main__":
    # Simulate a test event
    test_event = {'name': 'Coddy'}
    result = lambda_handler(test_event, None)
    print(result['body'])
    
    test_event_default = {}
    result_default = lambda_handler(test_event_default, None)
    print(result_default['body'])

What are Env Variables?

Environment variables allow you to pass configuration settings to your Lambda function without changing its underlying code.

They are key-value pairs that are available to your function's code at runtime. This is ideal for settings that vary between environments (e.g., development, test, production) or for non-sensitive configuration data.

Setting Env Variables in Lambda

You can define environment variables when you create or update your Lambda function. This is typically done via:

  • AWS Management Console: Under the function's "Configuration" tab, then "Environment variables".
  • AWS CLI: Using the --environment "Variables={KEY=VALUE}" parameter.
  • Infrastructure as Code: For example, in a SAM template, under the function's Environment: Variables: section.

Important: For highly sensitive data like database passwords or API keys, always use AWS Secrets Manager instead of environment variables.

Env Variables Demo: Config

Let's say you have an environment variable named GREETING_PREFIX set to "Welcome". Your Lambda function can easily access its value using the os module in Python:

import os
import json

def lambda_handler(event, context):
    # Access environment variables
    # os.environ.get('KEY', 'default_value')
    prefix = os.environ.get('GREETING_PREFIX', 'Hello')
    name = event.get('name', 'User')
    
    message = f"{prefix}, {name}!"
    
    return {
        'statusCode': 200,
        'body': json.dumps(message)
    }

if __name__ == "__main__":
    # Simulate setting an environment variable locally
    os.environ['GREETING_PREFIX'] = 'Hola'
    
    test_event = {'name': 'Amigo'}
    result = lambda_handler(test_event, None)
    print(result['body'])
    
    # Clean up and test default behavior
    del os.environ['GREETING_PREFIX'] 
    test_event_default = {'name': 'World'}
    result_default = lambda_handler(test_event_default, None)
    print(result_default['body'])

Check Your Knowledge

Which of the following are valid reasons to use AWS Lambda Layers?

Recap: Layers & Env Vars

Today, you learned about two powerful tools for managing your Lambda functions more effectively:

  • Lambda Layers: Used for packaging shared code, libraries, and dependencies, which reduces deployment package size and promotes code reusability across functions.
  • Environment Variables: Used for passing configuration settings to your function at runtime, making your code more flexible and easier to manage across different deployment environments.

Mastering these features will help you build more organized, efficient, and maintainable serverless applications!

常见问题解答

「Lambda 层与环境变量」课时是免费的吗?

是的 — 「Lambda 层与环境变量」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课程的其余内容,请升级到 CoddyKit PRO。 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课程共包含 4 节课。

「Lambda 层与环境变量」这节课中我会学到什么?

使用 Lambda 层管理依赖项,并使用环境变量进行配置,从而简化代码部署和管理。 你通过在浏览器中直接运行的动手代码来练习 AWS for Backend Developers (EC2, S3, RDS, Lambda),全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AWS for Backend Developers (EC2, S3, RDS, Lambda) 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Lambda 层与环境变量」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课中编写并运行代码吗?

能。每节 AWS for Backend Developers (EC2, S3, RDS, Lambda) 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 异步调用 Lambda
  2. Lambda 层与环境变量
  3. 用于 Lambda 端点的 API Gateway
  4. 使用 Step Functions 编排 Lambda
← 返回 AWS for Backend Developers (EC2, S3, RDS, Lambda)