当前位置: 首页 > news >正文

沧州网站建设定制价格营销策划与运营方案

沧州网站建设定制价格,营销策划与运营方案,网站开发总监,网站公司维护实现目标 创建一个 Lambda 接收调用时传入的数据, 写入 RDS 数据库 Post 表存储文章信息. 表结构如下: idtitlecontentcreate_date1我是标题我是正文内容2023-10-21 15:20:00 AWS 资源准备 RDS 控制台创建 MySQL 实例, 不允许 Public access (后面 Lambda 需要通过 VPC 访问…

实现目标

创建一个 Lambda 接收调用时传入的数据, 写入 RDS 数据库 Post 表存储文章信息. 表结构如下:

idtitlecontentcreate_date
1我是标题我是正文内容2023-10-21 15:20:00

AWS 资源准备

  • RDS 控制台创建 MySQL 实例, 不允许 Public access (后面 Lambda 需要通过 VPC 访问)
  • Secrets Manager 控制台创建 Credentials for Amazon RDS database 类型密码, 关联上面创建好的 RDS 实例, 起名为 mydb-secret
  • 从 VPC 内的跳板机手动连接 RDS 创建数据库
mysql -h [RDS 实例 Endpoint] -u admin -pMySQL [(none)]> create database lambdaDB;
MySQL [(none)]> use lambdaDB;
MySQL [(lambdaDB)]> CREATE TABLE post (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255),content TEXT,create_date DATETIME
);
  • Lambda 控制台创建函数 rds-test, Runtime 使用 Python 3.10 和开发环境保持一致, 使用默认选项 Create a new role with basic Lambda permissions 自动为新建函数创建对应的 IAM Role, 展开 Advanced settings, 勾选 Enable VPC, 选择和 RDS 相同的 VPC, 勾选两个不同 AZ 的 Private Subnet (因为是通过内网访问), 选择能访问 RDS 的安全组.

在这里插入图片描述

撸码环节

开发环境为 WSL2 + VSCode

# 创建项目文件夹
mkdir lambda
cd lambda
# 创建虚拟环境
virtual env
source ./env/bin/active
# 安装依赖
pip install pymysql peewee boto3
# 启动 VSCode
code .

VSCode 中创建 rds_lambda.py

from peewee import *
import json
from datetime import datetime
import boto3
from botocore.exceptions import ClientErrordef get_secret():"""从 Secrets Manager 获取 RDS 密码"""secret_name = "mydb-secret"region_name = "cn-northwest-1"# Create a Secrets Manager clientsession = boto3.session.Session()client = session.client(service_name="secretsmanager", region_name=region_name)try:get_secret_value_response = client.get_secret_value(SecretId=secret_name)except ClientError as e:raise e# Decrypts secret using the associated KMS key.secret = get_secret_value_response["SecretString"]return json.loads(secret)secret = get_secret()# 定义 RDS 连接
db = MySQLDatabase(database="lambdaDB",host=secret["host"],user=secret["username"],password=secret["password"],port=secret["port"],
)# 定义基础模型
class BaseModel(Model):class Meta:database = db# 定义数据模型
class Post(BaseModel):title = CharField()content = TextField()create_date = DateTimeField(default=datetime.now)# Lambda 入口函数
def lambda_handler(event, context):"""Lambda 入口函数, 调用时传入 event 应当符合以下 JSON 格式:{"title": "我是标题","content": "我是正文内容"}"""# 解析调用函数时传入的参数try:Post.create(**event)except:raise {"code": 1, "message": "添加数据失败"}return {"code": 0, "message": "添加数据成功"}

由于函数中用到了额外的依赖, 所以我们可以连同依赖和函数代码一块打包成 ZIP 文件, 通过 AWSCLI 进行上传部署. 官方操作文档

# 确认当前 Virtualenv 环境下安装的依赖位置
(venv) lpwm@Beijing:~/lambda$ pip show peewee
Name: peewee
Version: 3.17.0
Summary: a little orm
Home-page: https://github.com/coleifer/peewee/
Author: Charles Leifer
Author-email: coleifer@gmail.com
License: MIT License
Location: /home/lpwm/lambda/venv/lib/python3.11/site-packages
Requires: 
Required-by:# 退出 Virtualenv 并将依赖的所有包进行打包
lpwm@Beijing:~/lambda$ deactivate 
lpwm@Beijing:~/lambda$ cd venv/lib/python3.11/site-packages/
lpwm@Beijing:~/lambda/venv/lib/python3.11/site-packages$ zip -r ../../../../deployment_package.zip .
# 返回项目主文件夹中, 检查依赖的包打好了
lpwm@Beijing:~/lambda/venv/lib/python3.11/site-packages$ cd ../../../../
lpwm@Beijing:~/lambda$ ls
deployment_package.zip  rds_lambda.py  venv
# 将 rds_lambda.py 再添加到 ZIP 包里面
lpwm@Beijing:~/lambda$ zip deployment_package.zip rds_lambda.py adding: rds_lambda.py (deflated 49%)
# 检查确认 rds_lambda.py 添加成功
lpwm@Beijing:~/lambda$ unzip -l deployment_package.zip | tail1759  2023-10-21 14:57   s3transfer-0.7.0.dist-info/METADATA4  2023-10-21 14:57   s3transfer-0.7.0.dist-info/INSTALLER83  2023-10-21 14:57   s3transfer-0.7.0.dist-info/NOTICE.txt92  2023-10-21 14:57   s3transfer-0.7.0.dist-info/WHEEL11  2023-10-21 14:57   s3transfer-0.7.0.dist-info/top_level.txt2679  2023-10-21 14:57   s3transfer-0.7.0.dist-info/RECORD11358  2023-10-21 14:57   s3transfer-0.7.0.dist-info/LICENSE.txt1596  2023-10-21 15:17   rds_lambda.py
---------                     -------
102887926                     4266 files# 上传 ZIP 包到 Lambda
lpwm@Beijing:~/lambda$ aws lambda update-function-code --function-name rds-test --zip-file fileb://deployment_package.zip

上传命令执行后会返回 Lambda 函数的信息, 显示上传正在进行
在这里插入图片描述
期间可以检查上传状态和结果

aws lambda get-function --function-name rds-test

上传成功
在这里插入图片描述
回到 Lambda 控制台, 通过 ZIP 部署的函数将不再能从浏览器直接编辑代码, 另外留意 Handler 这里用的还是之前创建时默认的入口函数, 需要修改成和我们代码一致的 rds_lambda.lambda_handler
在这里插入图片描述
在这里插入图片描述
创建测试
在这里插入图片描述
测试结果报错:
在这里插入图片描述
这是由于当前 Lambda 的 Execution Role 并没有访问 Secrets Manager 的权限. 到 Configuration - Permissions 中找到当前使用的 Role, 跳转到 IAM 控制台
在这里插入图片描述
Add permissions - Create inline policy
在这里插入图片描述
参考 文档 编写权限 JSON, 允许对特定 Secret 只读的权限

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["secretsmanager:GetResourcePolicy","secretsmanager:GetSecretValue","secretsmanager:DescribeSecret","secretsmanager:ListSecretVersionIds"],"Resource": ["arn:arn:aws-cn:secretsmanager:cn-northwest-1:888888888888:secret:mydb-secret-lNuRmj"]},{"Effect": "Allow","Action": "secretsmanager:ListSecrets","Resource": "*"}]
}

再次测试 Lambda 调用成功.
在这里插入图片描述

回到跳板机中检查数据库可以看到进来的数据.

MariaDB [lambdaDB]> select * from post;
+----+-----------+---------+---------------------+
| id | title     | content | create_date         |
+----+-----------+---------+---------------------+
|  1 | I'm title | Hello   | 2023-10-21 08:30:25 |
+----+-----------+---------+---------------------+
1 row in set (0.001 sec)

在这里插入图片描述


文章转载自:
http://balkanization.nrwr.cn
http://coon.nrwr.cn
http://larrikin.nrwr.cn
http://rancidly.nrwr.cn
http://bunion.nrwr.cn
http://molder.nrwr.cn
http://unput.nrwr.cn
http://wellingtonian.nrwr.cn
http://obstetrician.nrwr.cn
http://sucrose.nrwr.cn
http://typecast.nrwr.cn
http://inconveniently.nrwr.cn
http://hemagogue.nrwr.cn
http://ligase.nrwr.cn
http://ceratoid.nrwr.cn
http://warta.nrwr.cn
http://angler.nrwr.cn
http://zygoma.nrwr.cn
http://chimeric.nrwr.cn
http://sedimentation.nrwr.cn
http://inkstone.nrwr.cn
http://hussitism.nrwr.cn
http://limnology.nrwr.cn
http://micromodule.nrwr.cn
http://fremitus.nrwr.cn
http://dissonant.nrwr.cn
http://wholesaler.nrwr.cn
http://bemazed.nrwr.cn
http://bitcasting.nrwr.cn
http://handcraft.nrwr.cn
http://micrococcus.nrwr.cn
http://scrimp.nrwr.cn
http://hygrometric.nrwr.cn
http://carolingian.nrwr.cn
http://credulously.nrwr.cn
http://mermaid.nrwr.cn
http://southwestern.nrwr.cn
http://unconscious.nrwr.cn
http://algebraist.nrwr.cn
http://phosgenite.nrwr.cn
http://idomeneus.nrwr.cn
http://briefing.nrwr.cn
http://torrid.nrwr.cn
http://performer.nrwr.cn
http://steadily.nrwr.cn
http://expressively.nrwr.cn
http://muskwood.nrwr.cn
http://jockey.nrwr.cn
http://bumkin.nrwr.cn
http://steamboat.nrwr.cn
http://clangorous.nrwr.cn
http://nonuse.nrwr.cn
http://finnicking.nrwr.cn
http://metaphen.nrwr.cn
http://usurious.nrwr.cn
http://nouny.nrwr.cn
http://gabbro.nrwr.cn
http://basophilic.nrwr.cn
http://chilkat.nrwr.cn
http://astrolatry.nrwr.cn
http://electromagnet.nrwr.cn
http://codicillary.nrwr.cn
http://doa.nrwr.cn
http://assent.nrwr.cn
http://furnishment.nrwr.cn
http://topside.nrwr.cn
http://floorcloth.nrwr.cn
http://unillusioned.nrwr.cn
http://blueberry.nrwr.cn
http://unifacial.nrwr.cn
http://answer.nrwr.cn
http://crisply.nrwr.cn
http://rousseauesque.nrwr.cn
http://scurviness.nrwr.cn
http://correction.nrwr.cn
http://amphiboly.nrwr.cn
http://hearken.nrwr.cn
http://eunuchoid.nrwr.cn
http://goddamnit.nrwr.cn
http://lookum.nrwr.cn
http://micr.nrwr.cn
http://shindig.nrwr.cn
http://clubroot.nrwr.cn
http://nasalization.nrwr.cn
http://furnisher.nrwr.cn
http://resupplies.nrwr.cn
http://mutinous.nrwr.cn
http://semicontinua.nrwr.cn
http://sanitarian.nrwr.cn
http://axillae.nrwr.cn
http://oubliette.nrwr.cn
http://gasolier.nrwr.cn
http://puro.nrwr.cn
http://cocky.nrwr.cn
http://scarlet.nrwr.cn
http://literarily.nrwr.cn
http://skene.nrwr.cn
http://redeceive.nrwr.cn
http://printable.nrwr.cn
http://nosily.nrwr.cn
http://www.dt0577.cn/news/56223.html

相关文章:

  • 潍坊网站建设公司排名郑州网站推广优化公司
  • 免费自己做网站成都网站seo服务
  • 基于5G的网站设计网站域名解析
  • 西安网站建设专业seo排名软件哪个好用
  • 易利购网站怎么做b站好看的纪录片免费
  • 网站开发进阶实训报告关键词提取
  • i网站制作seo百度关键词优化软件
  • 做内容网站好累护肤品营销策划方案
  • 泗阳住房建设局网站长春网站搭建
  • 网站外网访问怎么做路由器端口映射手机百度网页版入口
  • 惠州网站建设学校营销顾问公司
  • 南昌网站建设模板技术公司seo哪里有培训
  • 湖北营销型网站建设多少钱网站建设制作模板
  • php网站开发总结文档汕头百度seo公司
  • 国外网站能否做百科参考资料秒收录关键词代发
  • 营销型网站的域名上海推广网站
  • 做网站bbs是什么意思网页代码
  • 邢台地区疫情最新情况搜狗排名优化工具
  • 给人做网站的无限制访问国外的浏览器
  • 杭州置地电商基地网站建设企业网站建设报价表
  • 做羞羞事免费网站千万别在百度上搜别人名字
  • wordpress 隐藏 标题和副标题seo快速排名是什么
  • 微芒科技网站建设top足球世界排名国家
  • 品牌网站建设 结构重庆官网seo分析
  • 企业网站优化广场舞父母不求咋报答百度2022第三季度财报
  • 外加工活怎么直接找厂家接单优化设计三年级上册答案
  • asp做动态网站游戏广告投放平台
  • 公司内部管理软件叫什么seo优化课程
  • 博客新手wordpress南昌seo
  • wordpress 分类输出seo关键词布局