Java 从AWS Lambda调用Google云KMS

Java 从AWS Lambda调用Google云KMS,java,aws-lambda,google-cloud-kms,Java,Aws Lambda,Google Cloud Kms,我不熟悉谷歌的云服务和Java,但我正试图在AWS Lambda上设置一个Java函数,调用谷歌云KMS。我在本地有可用的Java代码,但从这里可以看出,验证Google客户端的唯一方法是设置一个环境变量,该变量的路径指向包含凭据的JSON文件。在本地触发Java函数时,我可以很容易地做到这一点——我只是在运行代码时将环境变量设置为指向计算机上的文件。有谁能给我一些建议,告诉我如何在Lambda中实现这一点,我似乎只能上传一个.jar文件?您可能希望将JSON文件存储在AWS Secret Ma

我不熟悉谷歌的云服务和Java,但我正试图在AWS Lambda上设置一个Java函数,调用谷歌云KMS。我在本地有可用的Java代码,但从这里可以看出,验证Google客户端的唯一方法是设置一个环境变量,该变量的路径指向包含凭据的JSON文件。在本地触发Java函数时,我可以很容易地做到这一点——我只是在运行代码时将环境变量设置为指向计算机上的文件。有谁能给我一些建议,告诉我如何在Lambda中实现这一点,我似乎只能上传一个.jar文件?

您可能希望将JSON文件存储在AWS Secret Manager中,然后通过向AWS Secret Manager进行身份验证,在函数启动时检索JSON文件。然后您应该配置Google客户端库以使用该凭证内容


或者(更复杂但也更安全)是创建一个AWS角色,该角色具有直接调用GCP KMS的权限-无需凭据文件。

您的第一个解决方案基本上就是我和我的朋友昨晚讨论这个问题时提到的。我不确定Google客户端库的内部是如何工作的,它似乎只需要一个文件路径而不是原始凭证,因此我们认为最简单的解决方案是保存一个临时文件,并在调用Google KMS之前将ENV变量或AWS Secrets Manager secret的内容写入该文件。这一基本思想在本地有效,因此我应该能够将其应用于Lambda。