跳转到主要内容

AWS Aurora Serverless Data API的Python DB-API 2.0客户端

项目描述

安装

pip install 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预期的格式(具有usernamepassword键的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的权限(虽然此策略方便测试,但我们建议为生产应用程序创建自己的最小权限策略)。

用法

使用此模块就像使用任何DB-API兼容的驱动模块一样。方法 aurora_data_api.connect() 是标准的主入口点,并接受两个实现特定的关键字参数

  • aurora_cluster_arn(在数据API文档中称为 resourceArn

    • 如果没有作为关键字参数提供,也可以使用环境变量 AURORA_CLUSTER_ARN 来指定

  • secret_arn(数据库凭证密钥)

    • 如果没有作为关键字参数提供,也可以使用环境变量 AURORA_SECRET_ARN 来指定

import aurora_data_api

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"
with aurora_data_api.connect(aurora_cluster_arn=cluster_arn, secret_arn=secret_arn, database="my_db") as conn:
    with conn.cursor() as cursor:
        cursor.execute("select * from pg_catalog.pg_tables")
        print(cursor.fetchall())

游标支持迭代(并且如果需要,自动在服务器端游标中包装查询并进行分页)

with conn.cursor() as cursor:
    for row in cursor.execute("select * from pg_catalog.pg_tables"):
        print(row)

动机

RDS 数据 API 是 AWS Lambda 无服务器环境与 PostgreSQL 和 MySQL 提供的复杂功能之间的桥梁。数据 API 通过 HTTP 传递 SQL,在 AWS Lambda 的背景下具有优势

  • 它消除了需要打开数据库端口到 AWS Lambda 公共 IP 地址池的需求

  • 它使用无状态的 HTTP 连接,而不是大多数数据库驱动程序使用的有状态的内部 TCP 连接池(有状态的池在经过 AWS Lambda 冷冻-解冻周期 后变得无效,导致连接错误,并给数据库服务器带来废弃无效连接的负担)

  • 它使用基于 AWS 角色的身份验证,消除了 Lambda 直接处理数据库凭证的需求

许可证

根据Apache 许可证第 2 版许可。

https://travis-ci.org/chanzuckerberg/aurora-data-api.png https://codecov.io/github/chanzuckerberg/aurora-data-api/coverage.svg?branch=master https://img.shields.io/pypi/v/aurora-data-api.svg https://img.shields.io/pypi/l/aurora-data-api.svg

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

aurora-data-api-0.5.0.tar.gz (28.8 kB 查看哈希

上传时间:

构建分发

aurora_data_api-0.5.0-py3-none-any.whl (24.4 kB 查看哈希

上传时间: Python 3

由以下支持