aws-cdk-constructs 2.26.1__tar.gz → 2.26.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/PKG-INFO +1 -1
  2. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/__init__.py +1 -1
  3. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/bucket/bucket.py +107 -2
  4. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs.egg-info/PKG-INFO +1 -1
  5. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/LICENSE.txt +0 -0
  6. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/MANIFEST.in +0 -0
  7. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/README.md +0 -0
  8. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/api/__init__.py +0 -0
  9. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/api/api.py +0 -0
  10. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/bucket/__init__.py +0 -0
  11. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/__init__.py +0 -0
  12. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/_types/__init__.py +0 -0
  13. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/_types/document.py +0 -0
  14. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/_types/graph.py +0 -0
  15. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/_types/relational.py +0 -0
  16. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/database.py +0 -0
  17. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/database/types.py +0 -0
  18. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/ecs/__init__.py +0 -0
  19. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/ecs/cluster.py +0 -0
  20. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/ecs/fargate_validator.py +0 -0
  21. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/ecs/microservice.py +0 -0
  22. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/efs/__init__.py +0 -0
  23. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/efs/volume.py +0 -0
  24. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/load_balancer/__init__.py +0 -0
  25. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/load_balancer/alb.py +0 -0
  26. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/load_balancer/nlb.py +0 -0
  27. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/microservice/__init__.py +0 -0
  28. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/microservice/base_user_data.sh +0 -0
  29. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/microservice/manage_connection_to_nlb_instance_security_group_ingress/lambda_function.js +0 -0
  30. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/microservice/microservice.py +0 -0
  31. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/security_group/__init__.py +0 -0
  32. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/security_group/security_group.py +0 -0
  33. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/service_user_for_iac/__init__.py +0 -0
  34. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/service_user_for_iac/service_user_for_iac.py +0 -0
  35. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/service_user_for_static_assets/__init__.py +0 -0
  36. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/service_user_for_static_assets/service_user_for_static_assets.py +0 -0
  37. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/utils.py +0 -0
  38. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/windows_server/__init__.py +0 -0
  39. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/windows_server/user_data.ps1 +0 -0
  40. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs/windows_server/windows_server.py +0 -0
  41. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs.egg-info/SOURCES.txt +0 -0
  42. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs.egg-info/dependency_links.txt +0 -0
  43. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs.egg-info/requires.txt +0 -0
  44. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/aws_cdk_constructs.egg-info/top_level.txt +0 -0
  45. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/setup.cfg +0 -0
  46. {aws_cdk_constructs-2.26.1 → aws_cdk_constructs-2.26.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws_cdk_constructs
3
- Version: 2.26.1
3
+ Version: 2.26.2
4
4
  Summary: AWS CDK constructs
5
5
  Home-page: https://bitbucket.org/cioapps/aws-cdk-constructs
6
6
  Author: author
@@ -14,4 +14,4 @@ from .load_balancer import Alb, Nlb
14
14
  from .security_group import SecurityGroup
15
15
  from .windows_server import WindowsServer
16
16
 
17
- __version__ = '2.26.1'
17
+ __version__ = '2.26.2'
@@ -103,6 +103,7 @@ class Bucket(Construct):
103
103
 
104
104
  cdn_ssl_certificate_arn (str): If "will_implement_cdn" is "True" and you want to enable HTTPS for your CloudFront distribution, specify the SSL certificate ARN to use. NB: this certificate must be in North Virginia
105
105
 
106
+ bucket_policy_statements: List[_iam.PolicyStatement]: List of policy statements to be added to the Bucket policy. Default: []
106
107
  """
107
108
 
108
109
  @property
@@ -160,8 +161,9 @@ class Bucket(Construct):
160
161
  encryption_allowed_principals_arns: Union[str, List[str]] = None,
161
162
  enforce_ssl: bool = False,
162
163
  will_implement_cdn: str = 'false',
163
- cdn_domain_names: [str] = [],
164
+ cdn_domain_names: List[str] = [],
164
165
  cdn_ssl_certificate_arn: str = None,
166
+ bucket_policy_statements: List[_iam.PolicyStatement] = [],
165
167
  **kwargs,
166
168
  ) -> aws_cdk.aws_s3.Bucket:
167
169
  """Create an S3 bucket
@@ -198,6 +200,8 @@ class Bucket(Construct):
198
200
 
199
201
  cdn_ssl_certificate_arn (str): If "will_implement_cdn" is "True" and you want to enable HTTPS for your CloudFront distribution, specify the SSL certificate ARN to use. NB: this certificate must be in North Virginia
200
202
 
203
+ bucket_policy_statements: List[_iam.PolicyStatement]: List of policy statements to be added to the Bucket policy. Default: []
204
+
201
205
  Returns:
202
206
  aws_s3.Bucket: the S3 bucket
203
207
  """
@@ -299,9 +303,10 @@ class Bucket(Construct):
299
303
  )
300
304
  # Create CloudFront distribution
301
305
  if create_cloudfront_distribution:
306
+ distribution_id = f'distribution_{bucket_name}'
302
307
  self._cloudfront_distribution = _cloudfront.Distribution(
303
308
  self,
304
- f'distribution_{bucket_name}',
309
+ distribution_id,
305
310
  default_behavior=_cloudfront.BehaviorOptions(
306
311
  origin=_cloudfront_origins.S3Origin(s3_bucket),
307
312
  compress=True,
@@ -325,6 +330,104 @@ class Bucket(Construct):
325
330
  domain_names=cdn_domain_names,
326
331
  )
327
332
 
333
+ self._origin_access_control = _cloudfront.CfnOriginAccessControl(
334
+ self,
335
+ f'oac_{bucket_name}',
336
+ origin_access_control_config=_cloudfront.CfnOriginAccessControl.OriginAccessControlConfigProperty(
337
+ name=f'oac_{bucket_name}',
338
+ origin_access_control_origin_type='s3',
339
+ signing_behavior='always',
340
+ signing_protocol='sigv4',
341
+ ),
342
+ )
343
+
344
+ cloudfront_distribution_arn = (
345
+ f'arn:aws:cloudfront::'
346
+ + self.aws_account['id']
347
+ + f':distribution/{self._cloudfront_distribution.distribution_id}'
348
+ )
349
+ bucket_statement = _iam.PolicyStatement(
350
+ principals=[_iam.ServicePrincipal('cloudfront.amazonaws.com')],
351
+ actions=['s3:GetObject'],
352
+ resources=[f'{s3_bucket.bucket_arn}/*'],
353
+ conditions={
354
+ 'StringEquals': {
355
+ 'aws:sourceArn': cloudfront_distribution_arn
356
+ }
357
+ },
358
+ )
359
+
360
+ s3_bucket.add_to_resource_policy(bucket_statement)
361
+
362
+ # Add custom policy statements to bucket policy
363
+ for statement in bucket_policy_statements:
364
+ s3_bucket.add_to_resource_policy(statement)
365
+
366
+ ## clean-up the OAI reference and associate the OAC with the cloudfront distribution
367
+ # query the site bucket policy as a document
368
+ bucket_policy = s3_bucket.policy
369
+ bucket_policy_document = bucket_policy.document
370
+
371
+ # remove the CloudFront Origin Access Identity permission from the bucket policy
372
+ if isinstance(bucket_policy_document, _iam.PolicyDocument):
373
+ bucket_policy_document_json = bucket_policy_document.to_json()
374
+ # create an updated policy without the OAI reference
375
+ bucket_policy_updated_json = {
376
+ 'Version': '2012-10-17',
377
+ 'Statement': [],
378
+ }
379
+ for statement in bucket_policy_document_json['Statement']:
380
+ if 'CanonicalUser' not in statement['Principal']:
381
+ bucket_policy_updated_json['Statement'].append(
382
+ statement
383
+ )
384
+
385
+ # apply the updated bucket policy to the bucket
386
+ bucket_policy_override = s3_bucket.node.find_child(
387
+ 'Policy'
388
+ ).node.default_child
389
+ bucket_policy_override.add_override(
390
+ 'Properties.PolicyDocument', bucket_policy_updated_json
391
+ )
392
+
393
+ # remove the created OAI reference (S3 Origin property) for the distribution
394
+ all_distribution_props = (
395
+ self._cloudfront_distribution.node.find_all()
396
+ )
397
+ for child in all_distribution_props:
398
+ if child.node.id == 'S3Origin':
399
+ child.node.try_remove_child('Resource')
400
+
401
+ # associate the created OAC with the distribution
402
+ distribution_props = (
403
+ self._cloudfront_distribution.node.default_child
404
+ )
405
+ distribution_props.add_override(
406
+ 'Properties.DistributionConfig.Origins.0.S3OriginConfig.OriginAccessIdentity',
407
+ '',
408
+ )
409
+ distribution_props.add_property_override(
410
+ 'DistributionConfig.Origins.0.OriginAccessControlId',
411
+ self._origin_access_control.ref,
412
+ )
413
+
414
+ # Assign Origin Access Control
415
+ # indexes = ["0"]
416
+ # for index in indexes:
417
+ # self._cloudfront_distribution.node.find_child(
418
+ # "Resource"
419
+ # ).add_property_override(
420
+ # f"DistributionConfig.Origins.{index}.OriginAccessControlId",
421
+ # self._origin_access_control.get_att("Id"),
422
+ # )
423
+
424
+ # self._cloudfront_distribution.node.find_child(
425
+ # "Resource"
426
+ # ).add_property_override(
427
+ # f"DistributionConfig.Origins.{index}.S3OriginConfig.OriginAccessIdentity",
428
+ # {},
429
+ # )
430
+
328
431
  return s3_bucket
329
432
 
330
433
  def __init__(
@@ -351,6 +454,7 @@ class Bucket(Construct):
351
454
  will_implement_cdn: str = 'false',
352
455
  cdn_domain_names: [str] = [],
353
456
  cdn_ssl_certificate_arn: str = None,
457
+ bucket_policy_statements: List[_iam.PolicyStatement] = [],
354
458
  **kwargs,
355
459
  ) -> None:
356
460
  super().__init__(scope, id, **kwargs)
@@ -484,6 +588,7 @@ class Bucket(Construct):
484
588
  will_implement_cdn=will_implement_cdn,
485
589
  cdn_domain_names=cdn_domain_names,
486
590
  cdn_ssl_certificate_arn=cdn_ssl_certificate_arn,
591
+ bucket_policy_statements=bucket_policy_statements,
487
592
  )
488
593
 
489
594
  if bucket_is_privately_accessed_from_vpc_over_http:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws-cdk-constructs
3
- Version: 2.26.1
3
+ Version: 2.26.2
4
4
  Summary: AWS CDK constructs
5
5
  Home-page: https://bitbucket.org/cioapps/aws-cdk-constructs
6
6
  Author: author