我们在通过CDK部署的Infra中使用经典负载均衡器。为了部署负载均衡器,我们使用了级别2的构造。代码如下:
const lb = new elb.LoadBalancer(this, 'LB', {
vpc: vpcRef,
internetFacing: true,
healthCheck: {
port: 80
},
});
lb.addListener({
externalPort: 80,
});
}
我们找不到任何可以用于启用访问日志记录的属性。有人建议我使用AccessLoggingPolicyProperty。我对此进行了检查,发现此属性只能用于Level 1构造。能否请一些人指导我如何在使用级别2结构的经典负载均衡器上通过CDK启用访问日志。
根据文档,您需要配置具有正确权限的S3存储桶。有了这些,您可以按照aws-cdk文档了解如何访问L1 Construct。
它将大致看起来像下面的代码
const lbLogs = new Bucket(this, 'LB Logs');
const elbAccountId = 'TODO: find right account for you region in docs';
lbLogs.grantPut(new AccountPrincipal(elbAccountId));
lbLogs.grantPut(
new ServicePrincipal('delivery.logs.amazonaws.com', {
conditions: {
StringEquals: {
's3:x-amz-acl': 'bucket-owner-full-control',
},
},
})
);
lbLogs.grantRead(new ServicePrincipal('delivery.logs.amazonaws.com'));
const cfnLoadBalancer = lb.node.defaultChild as CfnLoadBalancer;
cfnLoadBalancer.accessLoggingPolicy = {
enabled: true,
s3BucketName: lbLogs.bucketName,
};