AWS CDK入门:用Python快速搭建Serverless应用(附完整代码示例)

【Python高阶编程技术】第28篇 无服务器实践:AWS Lambda + CDK + Python Container Image 摘要:本文介绍AWS Lambda结合Python容器镜像和CDK的高效无服务器实践方案。针对Python应用在Lambda上的常见问题(冷启动慢、依赖包大、资源受限等),提出基于容器镜像的多层构建方法,将冷启动降至300ms。文章详细解析了Lambda引导流程、镜像分层优化、冷启动加速技巧(如Graviton2架构)、缓存层设计及事件编排方案,并提供了三个实战示例:API服务、批处理ETL和工作流编排。通过CDK代码演示如何打包容器镜像、集成Pydantic模型、优化资源配比,同时指出常见陷阱(如镜像尺寸 阅读详情

AWS CDK实战:用Python构建Serverless应用的现代工程实践

对于习惯了Python的开发者来说,第一次接触云基础设施部署,往往会被那些冗长、重复且难以调试的JSON或YAML模板劝退。你是否有过这样的经历:为了部署一个简单的API后端,需要在控制台反复点击,或者在一个上千行的CloudFormation模板里小心翼翼地修改某个参数,生怕一个缩进错误就让整个部署失败?这种体验,与我们在应用开发中追求的敏捷、可测试和可维护性背道而驰。

AWS Cloud Development Kit的出现,正是为了解决这种割裂感。它不是一个全新的工具,而是一种思维方式的转变——将基础设施视为真正的应用程序代码。这意味着,你可以用自己最熟悉的Python语法,去定义和编排AWS上的资源。想象一下,用面向对象的方式去创建一个DynamoDB表,用函数调用的方式去配置Lambda函数的权限,甚至可以将一整套复杂的微服务架构封装成一个可复用的“积木块”。这不仅仅是效率的提升,更是工程实践的一次升级。

本文面向那些希望快速上手AWS CDK,并专注于Serverless架构的Python开发者。我们将抛开那些抽象的概念,直接从一个包含API Gateway、Lambda函数和DynamoDB的完整Serverless应用入手。通过一步步的代码构建和原理解析,你将不仅学会“怎么做”,更能理解CDK背后的设计哲学,从而能够自信地将其应用到更复杂的生产场景中。

1. 环境准备与项目初始化

在开始编写任何基础设施代码之前,一个稳定且配置正确的开发环境是基石。与传统的Python项目不同,CDK项目对环境和工具有着特定的要求,但设置过程本身并不复杂。

首先,你需要确保本地已经安装了Node.js(>= 10.13.0)和Python(>= 3.6)。Node.js是CDK命令行工具(CLI)的运行环境,而Python则是我们编写构造代码的语言。你可以通过以下命令快速检查:

node --version
python --version
pip --version

接下来,通过npm全局安装AWS CDK命令行工具。这是你与CDK交互的主要入口,用于合成模板、部署栈、比较变更等。

npm install -g aws-cdk

安装完成后,运行 cdk --version 来验证安装是否成功。同时,你需要配置好AWS CLI的访问凭证,确保CDK有权限在你的AWS账户中创建资源。通常,这通过 aws configure 命令来完成,设置好你的Access Key、Secret Key、默认区域和输出格式。

注意:在生产环境中,强烈建议使用IAM角色或临时凭证,而非将长期访问密钥硬编码在本地。对于CI/CD场景,可以使用OpenID Connect或AWS Secrets Manager来管理凭证。

环境就绪后,我们就可以创建第一个CDK项目了。CDK CLI提供了项目初始化的脚手架功能。打开终端,进入你的工作目录,执行:

mkdir my-first-serverless-cdk && cd my-first-serverless-cdk
cdk init app --language python

这个命令会生成一个标准的Python CDK项目结构。让我们花点时间理解一下这个结构,这对于后续的开发和团队协作至关重要:

my-first-serverless-cdk/
├── app.py                    # 应用的入口点,定义栈(Stack)
├── cdk.json                  # CDK工具配置文件
├── requirements.txt          # Python依赖声明
├── source.bat               # Windows环境激活脚本
├── README.md
│
├── my_first_serverless_cdk/ # 你的主要构造库目录
│   ├── __init__.py
│   └── my_first_serverless_cdk_stack.py  # 主栈的定义
│
└── tests/                   # 单元测试目录
    └── unit/
        └── test_my_first_serverless_cdk_stack.py

关键文件解读:

  • app.py: 这是应用的起点。它实例化一个 core.App 对象,并在这个应用中创建我们的栈。你可以在这里为不同的环境(开发、测试、生产)创建不同的栈实例。
  • my_first_serverless_cdk_stack.py: 这是我们主要的工作文件。Stack 类是CDK中的核心概念,代表一组在AWS上作为一个单元进行部署和管理的资源集合。我们所有的Lambda、API Gateway、DynamoDB等资源都将在这个类中定义。
  • cdk.json: 告诉CDK工具如何执行你的应用。例如,它指定了运行 app.py 的命令。
  • requirements.txt: 列出了项目所需的Python包,主要是 aws-cdk-lib 和相关的构造库。

初始化完成后,建议立即创建一个Python虚拟环境来隔离项目依赖,这是一个良好的Python开发习惯。

python -m venv .venv
# 在Windows上激活:.venv\Scripts\activate
# 在macOS/Linux上激活:source .venv/bin/activate
pip install -r requirements.txt

至此,你的开发环境已经准备就绪,一个干净的CDK项目骨架也已搭建完成。接下来,我们就可以将注意力转向真正的业务逻辑——用代码定义我们的Serverless应用。

2. 核心概念:从Construct到Stack的认知模型

在动手编写资源代码前,理解CDK的抽象层次模型至关重要。这能帮助你在未来设计出更清晰、更可复用的架构。CDK的核心抽象可以看作一个三层模型,从最基础的组件到完整的部署单元。

第一层:L1 Constructs(Level 1,CFN资源) 这是最底层的抽象,与CloudFormation资源几乎是一一对应的关系。每个L1构造都直接映射到CloudFormation模板中的一个资源类型(如 AWS::Lambda::Function)。当你使用L1构造时,你需要配置所有属性,就像直接编写CloudFormation模板一样。它的优势是功能完整、控制力强,但代码会显得冗长。

from aws_cdk import aws_lambda as _lambda
from aws_cdk import core as cdk

# 使用L1构造定义Lambda函数(不推荐日常使用,仅作示例)
# 你需要手动指定Runtime、Handler、Code等所有属性
# 代码可读性和简洁性较差

第二层:L2 Constructs(Level 2,经过Curated的抽象) 这是CDK的“甜点”,也是我们最常使用的层次。L2构造在L1的基础上提供了更高级别的、符合最佳实践的默认值,并封装了复杂的关联资源创建逻辑。例如,创建一个DynamoDB表时,L2构造会自动为你配置加密、点播容量模式等安全且经济的默认设置。它极大地减少了样板代码,并提升了安全性。

from aws_cdk import aws_dynamodb as dynamodb

# 使用L2构造定义DynamoDB表
table = dynamodb.Table(
    self, "MyTable",
    partition_key=dynamodb.Attribute(
        name="id",
        type=dynamodb.AttributeType.STRING
    ),
    billing_mode=dynamodb.BillingMode.PAY_PER_REQUEST, # 推荐的按需计费模式
    encryption=dynamodb.TableEncryption.AWS_MANAGED,   # 默认启用加密
)
# 短短几行,就创建了一个安全、生产就绪的表,无需关心底层CloudFormation的复杂属性。

第三层:L3 Constructs(Patterns,解决方案模式) 这是最高级别的抽象,通常代表一个完整的、经过验证的架构模式。例如,一个 LambdaRestApi 构造会一次性创建API Gateway和一个将其与Lambda函数集成的代理。Patterns旨在解决特定场景,让你用极少的代码快速搭建出复杂架构。

理解了构造的层次,我们再来看它们是如何被组织的。Construct 是所有资源的基础类,代表云组件。Stack 是Construct的子类,是一个部署单元,其内部的所有资源会一起被创建、更新或删除。一个CDK应用(App)则可以包含多个Stack,这让你能够按环境、按功能模块来逻辑隔离资源。

概念类比作用示例
Construct乐高积木块云组件的抽象基类,可以是单个资源或一组资源aws_lambda.Function, aws_dynamodb.Table
Stack乐高模型(如一辆车)一个可部署的单元,包含一组相关的ConstructsMyServerlessBackendStack
App乐高套装说明书定义了所有Stack的组织方式,是CDK程序的入口core.App

这种层次化的设计带来了巨大的灵活性。你可以将几个相关的L2 Construct(比如一个VPC加上其中的安全组和子网)封装成一个自定义的、可复用的L3 Construct,然后在多个Stack中像使用标准库一样引用它。这实现了真正的基础设施即代码(IaC)的“代码复用”,是传统模板方式难以企及的。

3. 实战:构建一个完整的Serverless REST API

现在,让我们运用前面学到的知识,来构建一个具体的Serverless应用:一个简单的待办事项(Todo)API。这个API将提供创建、读取、更新和删除待办事项的功能。我们将使用API Gateway作为HTTP接口,Lambda函数处理业务逻辑,DynamoDB作为数据存储。

首先,打开 my_first_serverless_cdk_stack.py 文件。我们将从定义数据存储层开始。

3.1 定义数据存储层(DynamoDB)

在 __init__ 方法中,我们首先创建一个DynamoDB表。我们将使用按请求付费的模式,这对于访问模式不确定的Serverless应用来说是最经济的选择。

from aws_cdk import (
    aws_dynamodb as dynamodb,
    RemovalPolicy,
    Stack,
)
from constructs import Construct

class MyFirstServerlessCdkStack(Stack):
    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        # 创建DynamoDB表
        todo_table = dynamodb.Table(
            self, "TodoTable",
            partition_key=dynamodb.Attribute(
                name="id",
                type=dynamodb.AttributeType.STRING
            ),
            # 按请求付费,无需预置容量
            billing_mode=dynamodb.BillingMode.PAY_PER_REQUEST,
            # 删除栈时自动删除表(仅用于开发环境!生产环境慎用)
            removal_policy=RemovalPolicy.DESTROY,
        )

提示:RemovalPolicy.DESTROY 会在执行 cdk destroy 时删除该资源,非常适合开发和测试环境,可以避免产生残留资源。但在生产环境中,你很可能希望将其设置为 RemovalPolicy.RETAIN 以防止误删数据。

3.2 创建业务逻辑层(Lambda函数)

接下来,我们创建处理API请求的Lambda函数。我们将函数的代码放在项目根目录下的 lambda 文件夹中。首先创建这个文件夹和函数文件。

mkdir -p lambda
touch lambda/todo_handler.py

编辑 lambda/todo_handler.py,写入一个简单的处理函数。为了简化,我们在这里处理所有HTTP方法。

import json
import os
import boto3
from boto3.dynamodb.conditions import Key

dynamodb = boto3.resource('dynamodb')
table_name = os.environ['TODO_TABLE_NAME']
table = dynamodb.Table(table_name)

def lambda_handler(event, context):
    http_method = event['httpMethod']
    path = event['path']

    if http_method == 'GET' and path == '/todos':
        # 获取所有待办事项
        response = table.scan()
        items = response.get('Items', [])
        return {
            'statusCode': 200,
            'body': json.dumps(items)
        }
    elif http_method == 'POST' and path == '/todos':
        # 创建新的待办事项
        item = json.loads(event['body'])
        item['id'] = context.aws_request_id  # 使用请求ID作为简单ID
        table.put_item(Item=item)
        return {
            'statusCode': 201,
            'body': json.dumps(item)
        }
    else:
        return {
            'statusCode': 400,
            'body': json.dumps({'message': 'Unsupported operation'})
        }

现在,回到Stack定义文件,添加Lambda函数的构造。我们使用 aws_lambda.Function 这个L2构造,并指定代码路径和运行时。

from aws_cdk import aws_lambda as _lambda
from aws_cdk import aws_lambda_python_alpha as lambda_python
import os

# 在 __init__ 方法内,创建DynamoDB表之后
# 创建Lambda函数
todo_handler = _lambda.Function(
    self, "TodoHandler",
    runtime=_lambda.Runtime.PYTHON_3_9,
    # 指定代码目录。使用Code.from_asset指向包含代码的文件夹。
    code=_lambda.Code.from_asset("lambda"),
    handler="todo_handler.lambda_handler",
    environment={
        "TODO_TABLE_NAME": todo_table.table_name
    }
)

这里,我们通过 environment 参数将DynamoDB表的名称传递给Lambda函数,这样函数代码就能知道要操作哪张表。但仅仅传递名称还不够,Lambda函数还需要被授予访问这张表的权限。

3.3 配置权限与集成(IAM与API Gateway)

CDK的一个强大特性是它能够以声明式的方式管理权限。我们不需要去手动编写复杂的IAM策略文档,而是直接调用资源对象上的 grant 方法。

# 授予Lambda函数对DynamoDB表的读写权限
todo_table.grant_read_write_data(todo_handler)

这一行代码背后,CDK会自动生成并附加一个精确的、遵循最小权限原则的IAM策略到Lambda函数的执行角色上。这比手动管理策略安全且高效得多。

最后,我们创建API Gateway,并将其与Lambda函数集成。这里我们使用 LambdaRestApi 这个L3构造(Pattern),它能快速创建一个代理所有请求到单个Lambda函数的REST API。

from aws_cdk import aws_apigateway as apigateway

# 创建API Gateway并与Lambda集成
api = apigateway.LambdaRestApi(
    self, "TodoApi",
    handler=todo_handler,
    proxy=False, # 设置为False以便自定义资源和方法
)

# 定义 /todos 资源
todos_resource = api.root.add_resource("todos")

# 为 /todos 添加GET和POST方法
todos_resource.add_method("GET")
todos_resource.add_method("POST")

将以上所有代码片段组合起来,你的 MyFirstServerlessCdkStack 类就完整了。现在,整个Serverless后端的基础设施已经用不到50行的Python代码定义完毕。我们可以预览将要生成的CloudFormation模板。

4. 部署、测试与进阶运维

代码编写完成后,真正的价值在于将其部署到云端并验证其功能。CDK CLI提供了一系列命令来支持这个流程。

4.1 合成与部署

首先,运行 cdk synth。这个命令会执行你的CDK应用,生成对应的CloudFormation模板,但不会进行任何实际的部署。这是检查你的代码是否正确的第一步,也是查看CDK为你生成了哪些AWS资源的好方法。

cdk synth

输出结果是一个庞大的YAML文件,这就是最终会被提交到CloudFormation的模板。你可以看到里面包含了我们定义的DynamoDB表、Lambda函数、IAM角色、API Gateway等所有资源的详细配置。

接下来,在首次部署前,你需要引导(bootstrap)你的AWS环境和区域。CDK需要一个S3存储桶来存储部署过程中生成的资产(如Lambda函数代码包)。每个账户和区域只需引导一次。

cdk bootstrap

引导完成后,就可以进行首次部署了。使用 cdk deploy 命令,CDK会显示一个变更集,列出将要创建、修改或删除的资源,确认无误后即可执行。

cdk deploy

部署成功后,命令行会输出API Gateway的调用URL,格式类似于 https://xxxxxxxxxx.execute-api.region.amazonaws.com/prod/。

4.2 测试与验证

拿到URL后,我们可以使用 curl 或 Postman 等工具来测试API。

  • 创建待办事项:
    curl -X POST https://your-api-id.execute-api.region.amazonaws.com/prod/todos \
    -H "Content-Type: application/json" \
    -d '{"task": "Learn AWS CDK", "completed": false}'
    
  • 获取所有待办事项:
    curl https://your-api-id.execute-api.region.amazonaws.com/prod/todos
    

如果一切正常,你应该能收到成功的响应。这标志着你已经成功地用代码定义并部署了一个完整的、可工作的Serverless应用。

4.3 进阶运维与最佳实践

当应用进入迭代开发阶段,你会频繁地修改代码和基础设施。CDK提供了强大的工具来管理这些变更。

  • 预览变更 (cdk diff):在部署前,始终运行 cdk diff。它会比较当前已部署的栈和本地代码生成的栈之间的差异,清晰地告诉你哪些资源会被添加、修改或删除。这是防止意外变更的安全网。
  • 基础设施测试:CDK构造也是代码,理应被测试。你可以编写单元测试来验证你创建的Construct是否具有预期的属性。CDK提供了 @aws-cdk/assertions 模块来辅助测试。
    # 示例测试:验证DynamoDB表是否被创建且加密开启
    def test_dynamodb_table_created(self):
        stack = MyFirstServerlessCdkStack(app, "TestStack")
        template = Template.from_stack(stack)
        template.has_resource_properties("AWS::DynamoDB::Table", {
            "SSESpecification": {"SSEEnabled": True},
            "BillingMode": "PAY_PER_REQUEST"
        })
    
  • 多环境管理:一个常见的模式是为开发、预发布和生产环境使用不同的配置。你可以通过向Stack传递参数来实现。
    class TodoServiceStage(cdk.Stage):
        def __init__(self, scope, id, *, env_name=None, **kwargs):
            super().__init__(scope, id, **kwargs)
            TodoServiceStack(self, f"TodoService-{env_name}", env_name=env_name)
    
    # 在app.py中定义不同环境
    app = cdk.App()
    TodoServiceStage(app, "Dev", env_name="dev")
    TodoServiceStage(app, "Prod", env_name="prod")
    app.synth()
    
  • 使用CDK Pipelines进行CI/CD:对于团队协作和自动化部署,可以配置CDK Pipeline。它本身也是一个用CDK定义的基础设施,能够监听代码仓库的变更,自动执行合成、测试和部署到多个环境,实现真正的基础设施持续交付。

在项目规模增长后,一个清晰的项目结构至关重要。我个人的习惯是将不同的服务或功能模块拆分到不同的Stack或Construct中,并通过Stack之间的输出来传递ARN、ID等引用信息。例如,将网络(VPC)、数据库、无服务器API分别放在不同的Stack里,这样在更新时的影响范围更小,也更容易进行权限隔离和成本核算。

从在控制台手动点击,到编写上千行的YAML模板,再到用几十行富有表达力的Python代码定义整个应用架构,这种体验的飞跃是实实在在的。CDK不仅仅是一个工具,它更是一种将开发实践带入运维领域的桥梁。当你下次需要为一个新功能添加一个SQS队列或一个EventBridge规则时,你会发现自己更愿意去更新几行清晰的Python代码,而不是在晦涩的JSON中挣扎。这种开发体验上的根本性改善,才是AWS CDK带给开发者最宝贵的礼物。

使用Simulink进行带通滤波器的设计与仿真研究 摘要:本文介绍利用Simulink设计和仿真带通滤波器的方法。通过定义系统需求(保留100-500Hz信号),创建包含多频信号源、加法器和巴特沃斯滤波器的模型,重点展示滤波器频率选择特性。详细步骤包括模块配置、参数设置(中心频率300Hz、带宽400Hz)、信号连接及可视化分析。实验验证了带通滤波器有效提取目标频段信号的能力,为复杂信号处理系统开发提供基础框架。所需工具为MATLAB R2023a和DSPSystemToolbox。 阅读详情

相关推荐

上交开源装甲板识别代码分析

GitHub - xinyang-go/SJTU-RM-CV-2019: 上海交通大学 RoboMaster 2019赛季 视觉代码这里着重分析主函数main.cpp与装甲板识别部分的工程文件armer文件夹。由于未完全分析,所以对于其中log.h、options.h中的函数并不清楚,在分析时会跳过这些内容。该文章重点分析的是思路,部分函数中的数学逻辑、数据处理思路这里不详细解释(没能力)所有思维导图通过 知犀知犀思维导图 - 知犀官网 (zhixi.com)原创。

qq_42104961的博客 1320

python aws-cdk

摘要:AWS CDK(Cloud Development Kit)允许开发者使用Python等编程语言定义云基础设施,替代传统手动配置或模板方式。本文介绍了CDK的核心概念,它能提供代码复用、类型安全等优势,并详细说明了安装部署流程。作者分享了实际使用经验,比较了CDK与Terraform、CloudFormation等工具的差异,指出CDK更适合AWS原生环境管理。文章建议根据项目需求选择工具,对于频繁更新的复杂基础设施,CDK能显著提升效率。

leohu0723的博客 352

契约锁代码审计分析

但是正常来讲,定义了这么多的路由,肯定会有一个通用的判断逻辑,来判断请求的url是否和这些路由匹配。POC中有一点值得注意,Spring新一些的版本中支持以表单的形式来为参数赋值,且无需用注解。但是需要注意4.2.8的代码逻辑和新版本中的不同,此漏洞可能存在于版本大于4.2.8的版本中。方法用于解析LICENSE,先进行AES解密,再从字符串转换成json格式的License。loadPath实际判断传入的path是否和下面的path相等,如果不相等返回null。,如果包含这三个中的一个就会抛出异常。

好记性不如烂笔头 5748

无服务器开发效率提升300%:aws-lambda-handler-cookbook开发者工具链详解

aws-lambda-handler-cookbook是一个基于开源技术的无服务器服务蓝图,提供了AWS Lambda函数和AWS CDK Python代码,集成了所有最佳实践和完整的CI/CD管道,帮助开发者快速构建生产级Serverless应用。 ## 🌟 为什么选择aws-lambda-handler-cookbook? 开发无服务器应用时,你是否经常遇到这些问题:如何设计Lambda

gitblog_00441的博客 794

华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9

分享

m0_52356707的博客 1万+

保姆级教程:用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信(附完整代码)

本文详细介绍了如何利用GD32F470的EXMC Bank0 Region0与FPGA实现16位并行通信,涵盖硬件连接、寄存器配置、时序优化及FPGA接口设计等关键步骤。通过实例代码和调试技巧,帮助开发者快速掌握高效数据交互技术,提升嵌入式系统设计能力。

weixin_26918763的博客 226

AWS Serverless Application Model (AWS SAM) 教程

AWS Serverless Application Model (AWS SAM) 教程 【免费下载链接】serverless-application-model aws/serverless-application-model - 这是一个关于 AWS Serverless 应用模型的开源项目,包含了一些关于 AWS...

gitblog_01010的博客 743

SpringBoot+Vue实现图片上传

SpringBoot+Vue实现图片上传

叶♥璃 2735

full-stack-serverless-cdk:轻松掌握全栈无服务器应用和API开发

full-stack-serverless-cdk:轻松掌握全栈无服务器应用和API开发 项目介绍 full-stack-serverless-cdk是一个开源项目,旨在帮助开发者轻松掌握全栈无服务器应用和API开发。该项目由Panacloud Bootcamp提供支持,并作为2020年和2021年Bootcamp的阅读材料之一。项目基于AWS Cloud Development Kit(CDK)...

gitblog_00345的博客 306

pytorch多层感知机实现假钞识别(完整项目构建)

目录1 项目构建2 超参数设置 config.py3 数据集预处理 preprocess.py4 数据集类构建 dataset_banknote.py5 模型构建 model.py6 训练trainer.py6.1 查看损失曲线7 在测试集上运行 inference.py 1 项目构建 构建项目文件夹Banknote,以及子文件夹与py文件。 名称 作用 data目录 存放原始数据与预处理后切分为训练集、验证机、测试集的数据 log目录 存放训练过程中保存的指标,如损失、精确度等

Demon_LMMan的博客 2027

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1391

为什么选择aws-lambda-handler-cookbook?探索无服务器服务蓝图的核心优势

aws-lambda-handler-cookbook是一个功能强大的开源无服务器服务蓝图,它提供了基于AWS Lambda函数和AWS CDK Python代码的可部署解决方案,包含了所有最佳实践和完整的CI/CD管道。对于新手和普通用户来说,这是一个快速构建可靠无服务器应用的理想选择。 ## 完整的无服务器架构解决方案 aws-lambda-handler-cookbook提供了一个完整的

gitblog_00638的博客 597

磁环电感参数计算

电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。

小幽余生不加糖 4033

AWS CDK Python 项目结构指南

AWS CDK Python 项目结构指南 1. 项目介绍 本项目提供了一个推荐的 AWS Cloud Development Kit (CDK) 项目结构,适用于 Python 应用程序。项目实现了一个用户管理后端组件,使用 Amazon API Gateway、AWS Lambda 和 Amazon DynamoDB 来提供基本的 CRUD 操作,用于管理用户。此外,项目还包括一个带有持续部署...

gitblog_00093的博客 1046

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

DB Browser for SQLite:3 步上手 SQLite 数据库管理的完整指南

DB Browser for SQLite(DB4S)是一款开源的 SQLite 数据库图形化管理工具。它把创建、查看、修改 SQLite 数据库文件的过程做成了可视化操作:建表、改字段、增删记录、执行 SQL、导入导出数据,都可以在界面上完成,而不必记命令行的每一条语法。对刚接触 SQLite 数据库管理的人,它是把数据库文件从"一团文本"变成"可点击、可编辑"的最短路径。 ## 🧩 它解决

gitblog_00646的博客 316

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从0到1:使用Gordon构建完整的AWS无服务器应用

Gordon是一个用于简化AWS CDK应用程序开发的Python库,它提供简洁直观的API,支持多种CDK组件和语言,帮助开发者快速构建AWS无服务器应用。无论你是AWS新手还是有经验的开发者,Gordon都能让你的无服务器项目开发变得更加高效。 ## 为什么选择Gordon构建无服务器应用? Gordon作为AWS CDK的增强工具,具有以下核心优势: - **简化开发流程**:通过直观

gitblog_00998的博客 490

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

终极AWS Lambda开发指南:aws-lambda-handler-cookbook如何彻底改变无服务器架构

aws-lambda-handler-cookbook是一个基于开源技术的可部署无服务器服务蓝图,提供了AWS Lambda函数和AWS CDK Python代码,包含所有最佳实践和完整的CI/CD管道。本文将详细介绍这个强大工具如何帮助开发者轻松构建高效、可靠的无服务器应用。 ## 为什么选择aws-lambda-handler-cookbook? 在无服务器架构日益流行的今天,AWS La

gitblog_00763的博客 1035

10分钟上手AWS CDK:从零开始的云基础设施代码化完整指南

AWS CDK(Cloud Development Kit)是AWS推出的基础设施即代码(IaC)工具,允许开发者使用熟悉的编程语言(如TypeScript、Python、Java等)定义和部署云基础设施。本指南将通过aws-cdk-examples项目展示如何快速掌握这一强大工具,让云资源管理变得简单高效。 ## 为什么选择AWS CDK? 传统的CloudFormation模板采用YAML

gitblog_01152的博客 387

AWS CDK Python实战:使用aws-lambda-handler-cookbook构建企业级服务

aws-lambda-handler-cookbook是一个基于开源技术的无服务器服务蓝图,提供了完整的AWS Lambda函数和AWS CDK Python代码实现,包含所有最佳实践和完整的CI/CD流水线。本文将详细介绍如何利用这个项目快速构建企业级的serverless服务。 ## 🚀 为什么选择aws-lambda-handler-cookbook? 在现代云原生应用开发中,无服务器

gitblog_00851的博客 566

《AWS Serverless 架构模式安装与配置指南》

《AWS Serverless 架构模式安装与配置指南》 1. 项目基础介绍 本项目是一个开源的AWS Serverless架构模式库,提供了多种基于AWS Cloud Development Kit (CDK)构建的服务架构模式。这些模式旨在帮助开发者在AWS上构建无服务器应用程序。项目主要使用TypeScript和Python两种编程语言来实现。 2. 项目使用的关键技术和框架 本项目使用的关...

gitblog_00802的博客 840

10分钟上手aws-lambda-handler-cookbook:从安装到部署的完整教程

aws-lambda-handler-cookbook是一个基于开源的无服务器服务蓝图,提供了AWS Lambda函数和AWS CDK Python代码,包含所有最佳实践和完整的CI/CD管道,帮助开发者快速构建和部署serverless应用。 ## 📋 准备工作:5分钟环境配置 在开始部署前,请确保你的环境满足以下要求: - **Docker**:用于Lambda层打包过程,可从[Doc

gitblog_00234的博客 547

「阅读」书源导入教程:从零导入并更新 3 种书源

「Yuedu 书源」项目为「阅读」APP 整理了一套现成的小说书源,本文带你从零走通三种导入方式,并顺手调好体验设置、解决高频问题,让你点一下 APP 就能读网文。 ## 这套书源是干什么的,适合谁 「阅读」APP 本质上是个"空壳"浏览器,装完什么书都没有,导入"书源"后才能搜索、阅读。书源是一组解析规则:APP 按它去小说站的搜索页、详情页、目录页、正文页取数据,再渲染成能读的书。这个项目

gitblog_00261的博客 1152

Serverless SaaS 参考解决方案:构建无服务器多租户应用的利器

Serverless SaaS 参考解决方案:构建无服务器多租户应用的利器 项目介绍 Serverless SaaS 参考解决方案是一个基于 SaaS Builder Toolkit (SBT) 构建的无服务器多租户应用框架。该项目旨在帮助开发者快速搭建和部署无服务器的多租户软件即服务(SaaS)应用。通过使用该解决方案,开发者可以专注于业务逻辑的实现,而无需过多关注底层基础设施的管理。 项目技术...

gitblog_00433的博客 630

如何使用 CDK Python 设计和创建 AWS Serverless API 构建器

我们利用 Python 来开发一个构建器。

weixin_39915649的博客 410

【亲测免费】 AWS CDK 入门工作坊教程

AWS CDK 入门工作坊教程 1. 项目介绍 AWS Cloud Development Kit (CDK) 是一个开源软件开发框架,允许开发者使用熟悉的编程语言(如 TypeScript、Python、Java、C# 等)来定义云基础设施。CDK 通过将代码转换为 CloudFormation 模板来部署 AWS 资源,从而简化了云资源的定义和管理。 本教程基于 GitHub 上的开源项目 a...

gitblog_00055的博客 580

EAGLE-LLaMA3-Instruct-8B源码级原理剖析:从Token外推到并行验证的投机解码全流程

EAGLE-LLaMA3-Instruct-8B 是专为 LLaMA3-8B-Instruct 定制的 EAGLE 投机解码草稿模型,用不到目标模型 10% 的参数量,把大模型推理速度提升数倍,且输出结果与原模型完全一致。本文带你从配置文件和权重结构入手,完整走一遍「Token外推 → 草稿树构造 → 并行验证」的投机解码全流程。🎯 ## 仓库结构速览:一个模型只有4个文件 这个仓库虽然只有

gitblog_00412的博客 450
上一篇: Flutter与Gradle7.4.2的适配实战:如何正确配置app_plugin_loader插件(含Kotlin示例)
下一篇: HP ML350 Gen9家用静音改造:iLO4 2.73固件刷写与风扇调速全攻略(附30分贝实测)
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值