You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Lambda中使用cx_Oracle通过SSL认证连接Oracle(证书存于S3)

在AWS Lambda中使用cx_Oracle通过SSL连接Oracle(证书存储于S3)

核心操作步骤

1. 从S3下载证书到Lambda临时目录

Lambda仅允许写入/tmp目录,因此首先需要将S3中的证书文件(如根证书rootCA.pem、客户端证书client-cert.pem、客户端密钥client-key.pem)下载到该路径。需确保Lambda执行角色拥有目标S3桶的对象读取权限。

示例代码:

import boto3
import os

s3 = boto3.client('s3')
bucket_name = '你的证书存储桶名称'
cert_mapping = {
    's3中的根证书路径': '/tmp/rootCA.pem',
    's3中的客户端证书路径': '/tmp/client-cert.pem',
    's3中的客户端密钥路径': '/tmp/client-key.pem'
}

for s3_key, local_path in cert_mapping.items():
    s3.download_file(bucket_name, s3_key, local_path)

2. 配置cx_Oracle的SSL连接

cx_Oracle支持两种SSL配置方式,可根据习惯选择:

方式一:使用关键字参数连接(推荐)

import cx_Oracle

# 数据库基础信息
db_user = '你的数据库用户名'
db_password = '你的数据库密码'
db_host = 'Oracle数据库主机地址'
db_port = 1521  # 或自定义TCPS端口
db_service = '数据库服务名'

# SSL参数配置
ssl_options = {
    'ssl_ca': '/tmp/rootCA.pem',
    'ssl_cert': '/tmp/client-cert.pem',
    'ssl_key': '/tmp/client-key.pem',
    'ssl_server_cert_dn': ''  # 若需验证服务器DN则填写对应值,否则留空
}

# 建立连接
conn = cx_Oracle.connect(
    user=db_user,
    password=db_password,
    dsn=cx_Oracle.makedsn(db_host, db_port, service_name=db_service),
    **ssl_options
)

方式二:在DSN连接字符串中嵌入SSL参数

import cx_Oracle

db_user = '你的数据库用户名'
db_password = '你的数据库密码'
db_host = 'Oracle数据库主机地址'
db_port = 1521
db_service = '数据库服务名'

# 构造带SSL参数的DSN
dsn = f"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST={db_host})(PORT={db_port}))(CONNECT_DATA=(SERVICE_NAME={db_service}))(SECURITY=(SSL_ROOT_CERTIFICATE='/tmp/rootCA.pem')(SSL_CERTIFICATE='/tmp/client-cert.pem')(SSL_PRIVATE_KEY='/tmp/client-key.pem')))"

# 建立连接
conn = cx_Oracle.connect(db_user, db_password, dsn)

关键注意事项

  • 权限配置:Lambda执行角色需添加S3只读权限(如AmazonS3ReadOnlyAccess),同时Lambda所在VPC需允许访问Oracle数据库的TCPS端口。
  • 证书权限:若下载后证书文件出现权限问题,可通过os.chmod('/tmp/xxx.pem', 0o600)调整文件权限。
  • 版本兼容:确保使用的cx_Oracle版本支持SSL配置,且与Lambda的Python运行时版本兼容。

内容的提问来源于stack exchange,提问作者Sneha Nadar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:50:35