AWS CDK:为经典负载均衡器启用访问日志记录



我们在通过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,
};

最新更新