如何在AWS中创建雅典娜数据源,这是使用MySQL连接到AthenaJdbcConnector数据库的JDBC。
我相信我可以使用aws-sam的CfnApplication来创建AthenaJdbcConnector Lambda,但是我如何将它与雅典娜连接起来呢?
我注意到很多CDK中的Glue支持,这将转移到雅典娜(数据目录),并且在其他模块中有几种CfnDataSource类型,比如QuickSight,但是我在CDK中看不到雅典娜下的任何东西。
见下面的图片和参考资料。

参考文献:
发布于 2021-11-09 13:58:21
我一直在玩同样的问题。下面是我为联邦查询(类型记录)创建Lambda所做的工作:
const vpc = ec2.Vpc.fromLookup(this, 'my-project-vpc', {
vpcId: props.vpcId
});
const cluster = new rds.ServerlessCluster(this, 'AuroraCluster', {
engine: rds.DatabaseClusterEngine.AURORA_POSTGRESQL,
parameterGroup: rds.ParameterGroup.fromParameterGroupName(this, 'ParameterGroup', 'default.aurora-postgresql10'),
defaultDatabaseName: 'MyDB',
vpc,
vpcSubnets: {
onePerAz: true
},
scaling: {autoPause: cdk.Duration.seconds(0)} // Optional. If not set, then instance will pause after 5 minutes
});
let password = cluster.secret!.secretValueFromJson('password').toString()
let spillBucket = new Bucket(this, "AthenaFederatedSpill")
let lambdaApp = new CfnApplication(this, "MyDB", {
location: {
applicationId: "arn:aws:serverlessrepo:us-east-1:292517598671:applications/AthenaJdbcConnector",
semanticVersion: "2021.42.1"
},
parameters: {
DefaultConnectionString: `postgres://jdbc:postgresql://${cluster.clusterEndpoint.hostname}/MyDB?user=postgres&password=${password}`,
LambdaFunctionName: "crossref_federation",
SecretNamePrefix: `${cluster.secret?.secretName}`,
SecurityGroupIds: `${cluster.connections.securityGroups.map(value => value.securityGroupId).join(",")}`,
SpillBucket: spillBucket.bucketName,
SubnetIds: vpc.privateSubnets[0].subnetId
}
})如果您使用雅典娜中的AWS控制台向导连接到DataSource,这将创建具有默认连接字符串的lambda。不幸的是,无法通过CDK添加雅典娜目录特定的连接字符串。它应该被设置为Lambda上的一个环境变量,而我没有办法做到这一点。应用程序模板根本不允许这样做,因此这是一个手工处理后的过程。如果他们有解决办法的话,我当然想听听任何人的意见!
还请注意,我直接在jdbc中添加了用户/密码。我想使用SecretsManager,但是因为Lambda部署在VPC中,所以它拒绝连接到秘密管理器。我认为可以通过在SSM中添加一个私有VPN连接来解决这个问题。再一次-我想听到有人尝试过。
https://stackoverflow.com/questions/69774525
复制相似问题