适用于SQLAlchemy的AWS Aurora Serverless Data API方言
项目描述
此软件包提供了一种通过SQLAlchemy 方言访问AWS Aurora Data API的PostgreSQL和MySQL数据库的方法。
安装
pip install sqlalchemy-aurora-data-api
先决条件
设置AWS Aurora Serverless集群并为其启用数据API访问。如果您之前已设置了Aurora Serverless集群,可以使用以下AWS CLI命令启用数据API
aws rds modify-db-cluster --db-cluster-identifier DB_CLUSTER_NAME --enable-http-endpoint --apply-immediately
使用数据API预期的格式(具有username和password键的JSON对象)在AWS Secrets Manager中保存数据库凭据
aws secretsmanager create-secret --name rds-db-credentials/MY_DB aws secretsmanager put-secret-value --secret-id rds-db-credentials/MY_DB --secret-string "$(jq -n '.username=env.PGUSER | .password=env.PGPASSWORD')"
使用标准AWS约定配置您的AWS命令行凭据。您可以通过通过AWS CLI运行测试查询来验证一切是否正常工作
aws rds-data execute-statement --resource-arn RESOURCE_ARN --secret-arn SECRET_ARN --sql "select * from pg_catalog.pg_tables"
在此,RESOURCE_ARN 指的是 Aurora RDS 数据库的 ARN,可在 AWS RDS 控制台(点击您的数据库,然后“配置”)或通过运行 aws rds describe-db-clusters 命令在 CLI 中找到。SECRET_ARN 指的是上面创建的 AWS Secrets Manager 密钥。
当运行已部署的代码(在 EC2 实例、ECS/EKS 容器或 Lambda 中)时,您可以使用受管理的 IAM 策略 AmazonRDSDataFullAccess 授予您的 IAM 角色访问 RDS 数据 API 的权限(虽然此策略便于测试,但我们建议您为生产应用程序创建自己的最小权限策略)。
用法
该软件包注册了两个 SQLAlchemy 方言,mysql+auroradataapi:// 和 postgresql+auroradataapi://。连接到数据库需要两个 sqlalchemy.create_engine() 关键字参数
aurora_cluster_arn(也称为 resourceArn,在 数据 API 文档 中)
如果不作为关键字参数提供,也可以使用 AURORA_CLUSTER_ARN 环境变量来指定
secret_arn(数据库凭据密钥)
如果不作为关键字参数提供,也可以使用 AURORA_SECRET_ARN 环境变量来指定
除了协议(方言)和数据库名称(路径组件,例如以下示例中的 my_db_name)之外的所有连接字符串内容都将被忽略。
from sqlalchemy import create_engine
cluster_arn = "arn:aws:rds:us-east-1:123456789012:cluster:my-aurora-serverless-cluster"
secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:rds-db-credentials/MY_DB"
engine = create_engine('postgresql+auroradataapi://:@/my_db_name',
echo=True,
connect_args=dict(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn))
with engine.connect() as conn:
for result in conn.execute("select * from pg_catalog.pg_tables"):
print(result)
动机
RDS 数据 API 是 AWS Lambda 无服务器环境与 PostgreSQL 和 MySQL 提供的复杂功能之间的桥梁。数据 API 通过 HTTP 传输 SQL,在 AWS Lambda 的上下文中具有优势
它消除了打开数据库端口到 AWS Lambda 公共 IP 地址池的需求
它使用无状态的 HTTP 连接,而不是大多数数据库驱动程序使用的有状态的内部 TCP 连接池(有状态的池在通过 AWS Lambda 冻结-解冻周期 后变得无效,导致连接错误并给数据库服务器带来负担)
它使用基于 AWS 角色的身份验证,消除了 Lambda 直接处理数据库凭据的需求
调试
此软件包使用标准的 Python 日志约定。要启用调试输出,请将软件包日志级别设置为 DEBUG
logging.basicConfig() logging.getLogger("aurora_data_api").setLevel(logging.DEBUG)
链接
aurora-data-api,sqlalchemy-aurora-data-api 依赖的 Python DB-API 2.0 客户端
错误
请在 GitHub 上报告错误、问题、功能请求等。
许可证
根据 Apache 许可证,版本 2.0 许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
哈希值 for sqlalchemy_aurora_data_api-0.5.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dbdc2bf9da50d0e2d7d75f242536342bf349927c888c3d9c773b7df75af4f3f1 |
|
MD5 | dd27253cb9001e4c29a50cd1d28776c1 |
|
BLAKE2b-256 | c219bbc016ecbce8ed9c5d15baa289636f5217f52c81ff72212e089d458f8edf |