我有一个使用 Micronaut 3.9.x(从 Micronaut 1 迁移)的 lambda 应用程序,它使用 HttpClient 并具有指向我的资源文件夹内的证书的 SSL 配置。我在环境变量中有变量 micronaut.http.client.ssl.key.store.path 。我可以将其设置为 S3 存储桶中的路径(例如 s3://mys3bucket/certs/client.p12)吗?
我需要在 Lambda 角色中添加哪些权限? TIA
您可以创建一个类来替换 NettyClientSslBuilder。然后您可以覆盖 load() 方法,并从您想要的任何地方获取密钥存储。
@Slf4j
@Singleton
@Replaces(NettyClientSslBuilder.class)
public class CustomClientSslBuilder extends NettyClientSslBuilder {
@Override
protected KeyStore load(Optional<String> optionalType, String resource, Optional<String> optionalPassword) throws Exception {
...
retrun keystore;
}
}
如果您想在 Micronaut 4.x 上执行此操作,请确保添加
netty-incubator-codec-http3
作为依赖项,否则注释处理器会在该类上失败。这是因为它扩展的类实现了对 HTTP 3 的实验性支持,并且需要构建该库。