【问题标题】:Not able to connect to AWS DocumentDB from AWS Lambda (using Java)无法从 AWS Lambda 连接到 AWS DocumentDB(使用 Java)
【发布时间】:2020-08-02 15:03:13
【问题描述】:

我想从 AWS Lambda 连接到 AWS DocumentDB 集群(使用 Java)。为集群启用了 TLS,因此我需要将证书导入到信任库。找不到任何有关如何继续的文档。

【问题讨论】:

标签: java amazon-web-services aws-lambda aws-documentdb


【解决方案1】:

在连接到 documentDB 之前,您需要将 https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem 文件存储到 certstore,否则将无法正常工作。

它们有多种在运行时使用代码导入证书的方法。

参考: How to import a .cer certificate into a java keystore?

导入证书后,可以连接到documentDB,参考代码可以在这里找到:-

https://docs.aws.amazon.com/documentdb/latest/developerguide/connect_programmatically.html

【讨论】:

  • 所以您建议在 AWS lambda 环境中运行时导入证书?
【解决方案2】:

我建议您避免将证书打包为 Lambda 代码的一部分。相反,您可以从 Amazon S3 动态获取它。当证书轮换时,这将避免将来出现问题。以python为例:

#Function to download the current docdb certificate
    def getDocDbCertificate():
        try:
            print('Certificate')
            clientS3.Bucket('rds-downloads').download_file('rds-combined-ca-bundle.pem', '/tmp/rds-combined-ca-bundle.pem')
        except botocore.exceptions.ClientError as e:
            if e.response['Error']['Code'] == "404":
                print("The object does not exist.")
            else:
                raise

为此,您的 Lambda 角色需要从 S3 获取对象并通过 Internet 或 VPC 端点访问 S3 的权限。

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 2020-11-04
    • 2019-09-01
    • 2021-07-01
    • 2018-05-13
    相关资源
    最近更新 更多