elasticloadbalancing: allow logAccessLogs on environment agnostic stack #27432
Labels
@aws-cdk/aws-elasticloadbalancing
Related to Amazon Elastic Load Balancing
effort/small
Small work item – less than a day of effort
feature-request
A feature should be added or improved.
good first issue
Related to contributions. See CONTRIBUTING.md
p2
Describe the feature
Currently
BaseLoadBalancer.logAccessLogs
requires that the Stack has a specific region specified on the Environment.This seems a pretty arbitrary limitation - why should this be necessary? Looking at the code, it seems to be in order to set a principal, but other logging constructs like flowLog allow specifying roles, and indeed if the region doesn't resolve to an account in
BaseLoadBalancer.resourcePolicyPrincipal
it just returnsiam.ServicePrincipal('logdelivery.elasticloadbalancing.amazonaws.com')
, so why shouldn't it do that if the region is unresolved too, as it's only using the region to find an account?Use Case
I want to enable access logging on an ALB created in an environment agnostic stack, which seems a reasonable thing to do.
Proposed Solution
Change https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts#L306-L309
as so:
Other Information
Context - we can't set a region. In our case we have a CDK setup that has been running fine for over a year. A PEN test has flagged that we should have access logs for our ALBs. We have a Product Stack as part of our Stack, and setting a region on the Environment for the Stack completely breaks it; if I set just a region I get this:
(I am setting
crossRegionReferences(true)
)If I set a region and an account I get this:
There seems no way to specify an environment on a product stack.
So currently I'm completely stymied. I guess I'll just have to set up the access logging manually as a handcrafted little snowflake.
Acknowledgements
CDK version used
2.99.1
Environment details (OS name and version, etc.)
macOs & linux
The text was updated successfully, but these errors were encountered: