aws-cdk-lib 2.137.0__py3-none-any.whl → 2.139.0__py3-none-any.whl

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.

Potentially problematic release.


This version of aws-cdk-lib might be problematic. Click here for more details.

Files changed (73) hide show
  1. aws_cdk/__init__.py +8 -0
  2. aws_cdk/_jsii/__init__.py +1 -1
  3. aws_cdk/_jsii/{aws-cdk-lib@2.137.0.jsii.tgz → aws-cdk-lib@2.139.0.jsii.tgz} +0 -0
  4. aws_cdk/aws_amplify/__init__.py +29 -113
  5. aws_cdk/aws_apigateway/__init__.py +29 -16
  6. aws_cdk/aws_appconfig/__init__.py +315 -77
  7. aws_cdk/aws_appintegrations/__init__.py +55 -6
  8. aws_cdk/aws_apprunner/__init__.py +5 -2
  9. aws_cdk/aws_appsync/__init__.py +400 -13
  10. aws_cdk/aws_aps/__init__.py +64 -47
  11. aws_cdk/aws_autoscaling/__init__.py +62 -60
  12. aws_cdk/aws_b2bi/__init__.py +2 -6
  13. aws_cdk/aws_backup/__init__.py +53 -57
  14. aws_cdk/aws_batch/__init__.py +109 -0
  15. aws_cdk/aws_bcmdataexports/__init__.py +1114 -0
  16. aws_cdk/aws_bedrock/__init__.py +4144 -0
  17. aws_cdk/aws_chatbot/__init__.py +6 -4
  18. aws_cdk/aws_cleanrooms/__init__.py +526 -3
  19. aws_cdk/aws_cleanroomsml/__init__.py +960 -0
  20. aws_cdk/aws_cloudtrail/__init__.py +10 -10
  21. aws_cdk/aws_cloudwatch/__init__.py +244 -8
  22. aws_cdk/aws_codebuild/__init__.py +27 -22
  23. aws_cdk/aws_codeconnections/__init__.py +435 -0
  24. aws_cdk/aws_cognito/__init__.py +175 -79
  25. aws_cdk/aws_datazone/__init__.py +22 -0
  26. aws_cdk/aws_deadline/__init__.py +5394 -0
  27. aws_cdk/aws_dms/__init__.py +2 -4
  28. aws_cdk/aws_ec2/__init__.py +402 -247
  29. aws_cdk/aws_ecr/__init__.py +630 -0
  30. aws_cdk/aws_ecs/__init__.py +361 -20
  31. aws_cdk/aws_efs/__init__.py +594 -2
  32. aws_cdk/aws_elasticache/__init__.py +86 -32
  33. aws_cdk/aws_elasticloadbalancingv2/__init__.py +75 -10
  34. aws_cdk/aws_emr/__init__.py +2 -2
  35. aws_cdk/aws_entityresolution/__init__.py +1982 -773
  36. aws_cdk/aws_events_targets/__init__.py +17 -4
  37. aws_cdk/aws_globalaccelerator/__init__.py +443 -0
  38. aws_cdk/aws_iam/__init__.py +1 -2
  39. aws_cdk/aws_internetmonitor/__init__.py +14 -6
  40. aws_cdk/aws_ivs/__init__.py +1273 -71
  41. aws_cdk/aws_kms/__init__.py +44 -0
  42. aws_cdk/aws_lambda/__init__.py +9 -0
  43. aws_cdk/aws_mediatailor/__init__.py +41 -0
  44. aws_cdk/aws_oam/__init__.py +204 -0
  45. aws_cdk/aws_personalize/__init__.py +8 -6
  46. aws_cdk/aws_pinpoint/__init__.py +5 -3
  47. aws_cdk/aws_pipes/__init__.py +5 -1
  48. aws_cdk/aws_quicksight/__init__.py +12 -6
  49. aws_cdk/aws_rds/__init__.py +370 -96
  50. aws_cdk/aws_redshiftserverless/__init__.py +157 -0
  51. aws_cdk/aws_route53/__init__.py +587 -14
  52. aws_cdk/aws_sagemaker/__init__.py +233 -2
  53. aws_cdk/aws_securityhub/__init__.py +4940 -102
  54. aws_cdk/aws_securitylake/__init__.py +1326 -89
  55. aws_cdk/aws_ses_actions/__init__.py +155 -0
  56. aws_cdk/aws_sns/__init__.py +61 -4
  57. aws_cdk/aws_ssm/__init__.py +5 -2
  58. aws_cdk/aws_ssmcontacts/__init__.py +11 -4
  59. aws_cdk/aws_stepfunctions/__init__.py +8 -16
  60. aws_cdk/aws_stepfunctions_tasks/__init__.py +676 -1
  61. aws_cdk/aws_timestream/__init__.py +1045 -0
  62. aws_cdk/aws_transfer/__init__.py +19 -10
  63. aws_cdk/aws_verifiedpermissions/__init__.py +114 -37
  64. aws_cdk/aws_wisdom/__init__.py +2 -2
  65. aws_cdk/aws_workspacesthinclient/__init__.py +8 -8
  66. aws_cdk/custom_resources/__init__.py +688 -26
  67. aws_cdk/cx_api/__init__.py +17 -0
  68. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/METADATA +3 -3
  69. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/RECORD +73 -69
  70. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/LICENSE +0 -0
  71. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/NOTICE +0 -0
  72. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/WHEEL +0 -0
  73. {aws_cdk_lib-2.137.0.dist-info → aws_cdk_lib-2.139.0.dist-info}/top_level.txt +0 -0
@@ -352,6 +352,46 @@ route53.PublicHostedZone(self, "HostedZone",
352
352
  )
353
353
  ```
354
354
 
355
+ ## Enabling DNSSEC
356
+
357
+ DNSSEC can be enabled for Hosted Zones. For detailed information, see
358
+ [Configuring DNSSEC signing in Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec.html).
359
+
360
+ Enabling DNSSEC requires an asymmetric KMS Customer-Managed Key using the `ECC_NIST_P256` key spec.
361
+ Additionally, that KMS key must be in `us-east-1`.
362
+
363
+ ```python
364
+ kms_key = kms.Key(self, "KmsCMK",
365
+ key_spec=kms.KeySpec.ECC_NIST_P256,
366
+ key_usage=kms.KeyUsage.SIGN_VERIFY
367
+ )
368
+ hosted_zone = route53.HostedZone(self, "HostedZone",
369
+ zone_name="example.com"
370
+ )
371
+ # Enable DNSSEC signing for the zone
372
+ hosted_zone.enable_dnssec(kms_key=kms_key)
373
+ ```
374
+
375
+ The necessary permissions for Route 53 to use the key will automatically be added when using
376
+ this configuration. If it is necessary to create a key signing key manually, that can be done
377
+ using the `KeySigningKey` construct:
378
+
379
+ ```python
380
+ # hosted_zone: route53.HostedZone
381
+ # kms_key: kms.Key
382
+
383
+ route53.KeySigningKey(self, "KeySigningKey",
384
+ hosted_zone=hosted_zone,
385
+ kms_key=kms_key,
386
+ key_signing_key_name="ksk",
387
+ status=route53.KeySigningKeyStatus.ACTIVE
388
+ )
389
+ ```
390
+
391
+ When directly constructing the `KeySigningKey` resource, enabling DNSSEC signing for the hosted
392
+ zone will be need to be done explicitly (either using the `CfnDNSSEC` construct or via another
393
+ means).
394
+
355
395
  ## Imports
356
396
 
357
397
  If you don't know the ID of the Hosted Zone to import, you can use the
@@ -510,6 +550,7 @@ from ..aws_iam import (
510
550
  IRole as _IRole_235f5d8e,
511
551
  Role as _Role_e8c6e11f,
512
552
  )
553
+ from ..aws_kms import IKey as _IKey_5f11635f
513
554
 
514
555
 
515
556
  @jsii.data_type(
@@ -2059,7 +2100,7 @@ class CfnHostedZone(
2059
2100
  :param hosted_zone_config: A complex type that contains an optional comment. If you don't want to specify a comment, omit the ``HostedZoneConfig`` and ``Comment`` elements.
2060
2101
  :param hosted_zone_tags: Adds, edits, or deletes tags for a health check or a hosted zone. For information about using tags for cost allocation, see `Using Cost Allocation Tags <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html>`_ in the *AWS Billing and Cost Management User Guide* .
2061
2102
  :param name: The name of the domain. Specify a fully qualified domain name, for example, *www.example.com* . The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats *www.example.com* (without a trailing dot) and *www.example.com.* (with a trailing dot) as identical. If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Route 53, change the name servers for your domain to the set of ``NameServers`` that are returned by the ``Fn::GetAtt`` intrinsic function.
2062
- :param query_logging_config: Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following: - Route 53 edge location that responded to the DNS query - Domain or subdomain that was requested - DNS record type, such as A or AAAA - DNS response code, such as ``NoError`` or ``ServFail`` - **Log Group and Resource Policy** - Before you create a query logging configuration, perform the following operations. .. epigraph:: If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. - Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: - You must create the log group in the us-east-1 region. - You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. - When you create log groups for query logging, we recommend that you use a consistent prefix, for example: ``/aws/route53/ *hosted zone name*`` In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example: ``arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*`` To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: - For ``aws:SourceArn`` , supply the hosted zone ARN used in creating the query logging configuration. For example, ``aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID`` . - For ``aws:SourceAccount`` , supply the account ID for the account that creates the query logging configuration. For example, ``aws:SourceAccount:111111111111`` . For more information, see `The confused deputy problem <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>`_ in the *AWS IAM User Guide* . .. epigraph:: You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI . - **Log Streams and Edge Locations** - When Route 53 finishes creating the configuration for DNS query logging, it does the following: - Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. - Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: ``*hosted zone ID* / *edge location code*`` The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Route 53 Global Network" on the `Route 53 Product Details <https://docs.aws.amazon.com/route53/details/>`_ page. - **Queries That Are Logged** - Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see `Routing Internet Traffic to Your Website or Web Application <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html>`_ in the *Amazon Route 53 Developer Guide* . - **Log File Format** - For a list of the values in each query log and the format of each value, see `Logging DNS Queries <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html>`_ in the *Amazon Route 53 Developer Guide* . - **Pricing** - For information about charges for query logs, see `Amazon CloudWatch Pricing <https://docs.aws.amazon.com/cloudwatch/pricing/>`_ . - **How to Stop Logging** - If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see `DeleteQueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html>`_ .
2103
+ :param query_logging_config: Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following: - Route 53 edge location that responded to the DNS query - Domain or subdomain that was requested - DNS record type, such as A or AAAA - DNS response code, such as ``NoError`` or ``ServFail`` - **Log Group and Resource Policy** - Before you create a query logging configuration, perform the following operations. .. epigraph:: If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. - Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: - You must create the log group in the us-east-1 region. - You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. - When you create log groups for query logging, we recommend that you use a consistent prefix, for example: ``/aws/route53/ *hosted zone name*`` In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example: ``arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*`` To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: - For ``aws:SourceArn`` , supply the hosted zone ARN used in creating the query logging configuration. For example, ``aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID`` . - For ``aws:SourceAccount`` , supply the account ID for the account that creates the query logging configuration. For example, ``aws:SourceAccount:111111111111`` . For more information, see `The confused deputy problem <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>`_ in the *AWS IAM User Guide* . .. epigraph:: You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI . - **Log Streams and Edge Locations** - When Route 53 finishes creating the configuration for DNS query logging, it does the following: - Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. - Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: ``*hosted zone ID* / *edge location code*`` The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Route 53 Global Network" on the `Route 53 Product Details <https://docs.aws.amazon.com/route53/details/>`_ page. - **Queries That Are Logged** - Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see `Routing Internet Traffic to Your Website or Web Application <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html>`_ in the *Amazon Route 53 Developer Guide* . - **Log File Format** - For a list of the values in each query log and the format of each value, see `Logging DNS Queries <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html>`_ in the *Amazon Route 53 Developer Guide* . - **Pricing** - For information about charges for query logs, see `Amazon CloudWatch Pricing <https://docs.aws.amazon.com/cloudwatch/pricing/>`_ . - **How to Stop Logging** - If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see `DeleteQueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html>`_ .
2063
2104
  :param vpcs: *Private hosted zones:* A complex type that contains information about the VPCs that are associated with the specified hosted zone. .. epigraph:: For public hosted zones, omit ``VPCs`` , ``VPCId`` , and ``VPCRegion`` .
2064
2105
  '''
2065
2106
  if __debug__:
@@ -2507,7 +2548,7 @@ class CfnHostedZoneProps:
2507
2548
  :param hosted_zone_config: A complex type that contains an optional comment. If you don't want to specify a comment, omit the ``HostedZoneConfig`` and ``Comment`` elements.
2508
2549
  :param hosted_zone_tags: Adds, edits, or deletes tags for a health check or a hosted zone. For information about using tags for cost allocation, see `Using Cost Allocation Tags <https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html>`_ in the *AWS Billing and Cost Management User Guide* .
2509
2550
  :param name: The name of the domain. Specify a fully qualified domain name, for example, *www.example.com* . The trailing dot is optional; Amazon Route 53 assumes that the domain name is fully qualified. This means that Route 53 treats *www.example.com* (without a trailing dot) and *www.example.com.* (with a trailing dot) as identical. If you're creating a public hosted zone, this is the name you have registered with your DNS registrar. If your domain name is registered with a registrar other than Route 53, change the name servers for your domain to the set of ``NameServers`` that are returned by the ``Fn::GetAtt`` intrinsic function.
2510
- :param query_logging_config: Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following: - Route 53 edge location that responded to the DNS query - Domain or subdomain that was requested - DNS record type, such as A or AAAA - DNS response code, such as ``NoError`` or ``ServFail`` - **Log Group and Resource Policy** - Before you create a query logging configuration, perform the following operations. .. epigraph:: If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. - Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: - You must create the log group in the us-east-1 region. - You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. - When you create log groups for query logging, we recommend that you use a consistent prefix, for example: ``/aws/route53/ *hosted zone name*`` In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example: ``arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*`` To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: - For ``aws:SourceArn`` , supply the hosted zone ARN used in creating the query logging configuration. For example, ``aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID`` . - For ``aws:SourceAccount`` , supply the account ID for the account that creates the query logging configuration. For example, ``aws:SourceAccount:111111111111`` . For more information, see `The confused deputy problem <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>`_ in the *AWS IAM User Guide* . .. epigraph:: You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI . - **Log Streams and Edge Locations** - When Route 53 finishes creating the configuration for DNS query logging, it does the following: - Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. - Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: ``*hosted zone ID* / *edge location code*`` The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Route 53 Global Network" on the `Route 53 Product Details <https://docs.aws.amazon.com/route53/details/>`_ page. - **Queries That Are Logged** - Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see `Routing Internet Traffic to Your Website or Web Application <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html>`_ in the *Amazon Route 53 Developer Guide* . - **Log File Format** - For a list of the values in each query log and the format of each value, see `Logging DNS Queries <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html>`_ in the *Amazon Route 53 Developer Guide* . - **Pricing** - For information about charges for query logs, see `Amazon CloudWatch Pricing <https://docs.aws.amazon.com/cloudwatch/pricing/>`_ . - **How to Stop Logging** - If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see `DeleteQueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html>`_ .
2551
+ :param query_logging_config: Creates a configuration for DNS query logging. After you create a query logging configuration, Amazon Route 53 begins to publish log data to an Amazon CloudWatch Logs log group. DNS query logs contain information about the queries that Route 53 receives for a specified public hosted zone, such as the following: - Route 53 edge location that responded to the DNS query - Domain or subdomain that was requested - DNS record type, such as A or AAAA - DNS response code, such as ``NoError`` or ``ServFail`` - **Log Group and Resource Policy** - Before you create a query logging configuration, perform the following operations. .. epigraph:: If you create a query logging configuration using the Route 53 console, Route 53 performs these operations automatically. - Create a CloudWatch Logs log group, and make note of the ARN, which you specify when you create a query logging configuration. Note the following: - You must create the log group in the us-east-1 region. - You must use the same AWS account to create the log group and the hosted zone that you want to configure query logging for. - When you create log groups for query logging, we recommend that you use a consistent prefix, for example: ``/aws/route53/ *hosted zone name*`` In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging. - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example: ``arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*`` To avoid the confused deputy problem, a security issue where an entity without a permission for an action can coerce a more-privileged entity to perform it, you can optionally limit the permissions that a service has to a resource in a resource-based policy by supplying the following values: - For ``aws:SourceArn`` , supply the hosted zone ARN used in creating the query logging configuration. For example, ``aws:SourceArn: arn:aws:route53:::hostedzone/hosted zone ID`` . - For ``aws:SourceAccount`` , supply the account ID for the account that creates the query logging configuration. For example, ``aws:SourceAccount:111111111111`` . For more information, see `The confused deputy problem <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>`_ in the *AWS IAM User Guide* . .. epigraph:: You can't use the CloudWatch console to create or edit a resource policy. You must use the CloudWatch API, one of the AWS SDKs, or the AWS CLI . - **Log Streams and Edge Locations** - When Route 53 finishes creating the configuration for DNS query logging, it does the following: - Creates a log stream for an edge location the first time that the edge location responds to DNS queries for the specified hosted zone. That log stream is used to log all queries that Route 53 responds to for that edge location. - Begins to send query logs to the applicable log stream. The name of each log stream is in the following format: ``*hosted zone ID* / *edge location code*`` The edge location code is a three-letter code and an arbitrarily assigned number, for example, DFW3. The three-letter code typically corresponds with the International Air Transport Association airport code for an airport near the edge location. (These abbreviations might change in the future.) For a list of edge locations, see "The Route 53 Global Network" on the `Route 53 Product Details <https://docs.aws.amazon.com/route53/details/>`_ page. - **Queries That Are Logged** - Query logs contain only the queries that DNS resolvers forward to Route 53. If a DNS resolver has already cached the response to a query (such as the IP address for a load balancer for example.com), the resolver will continue to return the cached response. It doesn't forward another query to Route 53 until the TTL for the corresponding resource record set expires. Depending on how many DNS queries are submitted for a resource record set, and depending on the TTL for that resource record set, query logs might contain information about only one query out of every several thousand queries that are submitted to DNS. For more information about how DNS works, see `Routing Internet Traffic to Your Website or Web Application <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/welcome-dns-service.html>`_ in the *Amazon Route 53 Developer Guide* . - **Log File Format** - For a list of the values in each query log and the format of each value, see `Logging DNS Queries <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html>`_ in the *Amazon Route 53 Developer Guide* . - **Pricing** - For information about charges for query logs, see `Amazon CloudWatch Pricing <https://docs.aws.amazon.com/cloudwatch/pricing/>`_ . - **How to Stop Logging** - If you want Route 53 to stop sending query logs to CloudWatch Logs, delete the query logging configuration. For more information, see `DeleteQueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_DeleteQueryLoggingConfig.html>`_ .
2511
2552
  :param vpcs: *Private hosted zones:* A complex type that contains information about the VPCs that are associated with the specified hosted zone. .. epigraph:: For public hosted zones, omit ``VPCs`` , ``VPCId`` , and ``VPCRegion`` .
2512
2553
 
2513
2554
  :see: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
@@ -2624,7 +2665,7 @@ class CfnHostedZoneProps:
2624
2665
 
2625
2666
  In the next step, you'll create a resource policy, which controls access to one or more log groups and the associated AWS resources, such as Route 53 hosted zones. There's a limit on the number of resource policies that you can create, so we recommend that you use a consistent prefix so you can use the same resource policy for all the log groups that you create for query logging.
2626
2667
 
2627
- - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example:
2668
+ - Create a CloudWatch Logs resource policy, and give it the permissions that Route 53 needs to create log streams and to send query logs to log streams. You must create the CloudWatch Logs resource policy in the us-east-1 region. For the value of ``Resource`` , specify the ARN for the log group that you created in the previous step. To use the same resource policy for all the CloudWatch Logs log groups that you created for query logging configurations, replace the hosted zone name with ``*`` , for example:
2628
2669
 
2629
2670
  ``arn:aws:logs:us-east-1:123412341234:log-group:/aws/route53/*``
2630
2671
 
@@ -3046,7 +3087,7 @@ class CfnRecordSet(
3046
3087
  :param scope: Scope in which this resource is defined.
3047
3088
  :param id: Construct identifier for this resource (unique in its scope).
3048
3089
  :param name: For ``ChangeResourceRecordSets`` requests, the name of the record that you want to create, update, or delete. For ``ListResourceRecordSets`` responses, the name of a record in the specified hosted zone. *ChangeResourceRecordSets Only* Enter a fully qualified domain name, for example, ``www.example.com`` . You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats ``www.example.com`` (without a trailing dot) and ``www.example.com.`` (with a trailing dot) as identical. For information about how to specify characters other than ``a-z`` , ``0-9`` , and ``-`` (hyphen) and how to specify internationalized domain names, see `DNS Domain Name Format <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html>`_ in the *Amazon Route 53 Developer Guide* . You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example, ``*.example.com`` . Note the following: - The * must replace the entire label. For example, you can't specify ``*prod.example.com`` or ``prod*.example.com`` . - The * can't replace any of the middle labels, for example, marketing.*.example.com. - If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character (ASCII 42), not as a wildcard. .. epigraph:: You can't use the * wildcard for resource records sets that have a type of NS.
3049
- :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
3090
+ :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` | ``CAA`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
3050
3091
  :param alias_target: *Alias resource record sets only:* Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. If you're creating resource records sets for a private hosted zone, note the following: - You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront distribution. - For information about creating failover resource record sets in a private hosted zone, see `Configuring Failover in a Private Hosted Zone <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html>`_ in the *Amazon Route 53 Developer Guide* .
3051
3092
  :param cidr_routing_config: The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. A ``LocationName`` with an asterisk “*” can be used to create a default CIDR record. ``CollectionId`` is still required for default record.
3052
3093
  :param comment: *Optional:* Any comments you want to include about a change batch request.
@@ -4776,7 +4817,7 @@ class CfnRecordSetGroup(
4776
4817
  '''Information about one record that you want to create.
4777
4818
 
4778
4819
  :param name: For ``ChangeResourceRecordSets`` requests, the name of the record that you want to create, update, or delete. For ``ListResourceRecordSets`` responses, the name of a record in the specified hosted zone. *ChangeResourceRecordSets Only* Enter a fully qualified domain name, for example, ``www.example.com`` . You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats ``www.example.com`` (without a trailing dot) and ``www.example.com.`` (with a trailing dot) as identical. For information about how to specify characters other than ``a-z`` , ``0-9`` , and ``-`` (hyphen) and how to specify internationalized domain names, see `DNS Domain Name Format <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html>`_ in the *Amazon Route 53 Developer Guide* . You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example, ``*.example.com`` . Note the following: - The * must replace the entire label. For example, you can't specify ``*prod.example.com`` or ``prod*.example.com`` . - The * can't replace any of the middle labels, for example, marketing.*.example.com. - If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character (ASCII 42), not as a wildcard. .. epigraph:: You can't use the * wildcard for resource records sets that have a type of NS.
4779
- :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
4820
+ :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` | ``CAA`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
4780
4821
  :param alias_target: *Alias resource record sets only:* Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. If you're creating resource records sets for a private hosted zone, note the following: - You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront distribution. - For information about creating failover resource record sets in a private hosted zone, see `Configuring Failover in a Private Hosted Zone <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html>`_ in the *Amazon Route 53 Developer Guide* .
4781
4822
  :param cidr_routing_config:
4782
4823
  :param failover: *Failover resource record sets only:* To configure failover, you add the ``Failover`` element to two resource record sets. For one resource record set, you specify ``PRIMARY`` as the value for ``Failover`` ; for the other resource record set, you specify ``SECONDARY`` . In addition, you include the ``HealthCheckId`` element and specify the health check that you want Amazon Route 53 to perform for each resource record set. Except where noted, the following failover behaviors assume that you have included the ``HealthCheckId`` element in both resource record sets: - When the primary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the secondary resource record set. - When the primary resource record set is unhealthy and the secondary resource record set is healthy, Route 53 responds to DNS queries with the applicable value from the secondary resource record set. - When the secondary resource record set is unhealthy, Route 53 responds to DNS queries with the applicable value from the primary resource record set regardless of the health of the primary resource record set. - If you omit the ``HealthCheckId`` element for the secondary resource record set, and if the primary resource record set is unhealthy, Route 53 always responds to DNS queries with the applicable value from the secondary resource record set. This is true regardless of the health of the associated endpoint. You can't create non-failover resource record sets that have the same values for the ``Name`` and ``Type`` elements as failover resource record sets. For failover alias resource record sets, you must also include the ``EvaluateTargetHealth`` element and set the value to true. For more information about configuring failover for Route 53, see the following topics in the *Amazon Route 53 Developer Guide* : - `Route 53 Health Checks and DNS Failover <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html>`_ - `Configuring Failover in a Private Hosted Zone <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html>`_
@@ -4932,7 +4973,7 @@ class CfnRecordSetGroup(
4932
4973
 
4933
4974
  Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group.
4934
4975
 
4935
- Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT``
4976
+ Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` | ``CAA``
4936
4977
  .. epigraph::
4937
4978
 
4938
4979
  SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ .
@@ -5456,7 +5497,7 @@ class CfnRecordSetProps:
5456
5497
  '''Properties for defining a ``CfnRecordSet``.
5457
5498
 
5458
5499
  :param name: For ``ChangeResourceRecordSets`` requests, the name of the record that you want to create, update, or delete. For ``ListResourceRecordSets`` responses, the name of a record in the specified hosted zone. *ChangeResourceRecordSets Only* Enter a fully qualified domain name, for example, ``www.example.com`` . You can optionally include a trailing dot. If you omit the trailing dot, Amazon Route 53 assumes that the domain name that you specify is fully qualified. This means that Route 53 treats ``www.example.com`` (without a trailing dot) and ``www.example.com.`` (with a trailing dot) as identical. For information about how to specify characters other than ``a-z`` , ``0-9`` , and ``-`` (hyphen) and how to specify internationalized domain names, see `DNS Domain Name Format <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DomainNameFormat.html>`_ in the *Amazon Route 53 Developer Guide* . You can use the asterisk (*) wildcard to replace the leftmost label in a domain name, for example, ``*.example.com`` . Note the following: - The * must replace the entire label. For example, you can't specify ``*prod.example.com`` or ``prod*.example.com`` . - The * can't replace any of the middle labels, for example, marketing.*.example.com. - If you include * in any position other than the leftmost label in a domain name, DNS treats it as an * character (ASCII 42), not as a wildcard. .. epigraph:: You can't use the * wildcard for resource records sets that have a type of NS.
5459
- :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
5500
+ :param type: The DNS record type. For information about different record types and how data is encoded for them, see `Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53 Developer Guide* . Valid values for basic resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``DS`` | ``MX`` | ``NAPTR`` | ``NS`` | ``PTR`` | ``SOA`` | ``SPF`` | ``SRV`` | ``TXT`` Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group. Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` | ``CAA`` .. epigraph:: SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ . Values for alias resource record sets: - *Amazon API Gateway custom regional APIs and edge-optimized APIs:* ``A`` - *CloudFront distributions:* ``A`` If IPv6 is enabled for the distribution, create two resource record sets to route traffic to your distribution, one with a value of ``A`` and one with a value of ``AAAA`` . - *Amazon API Gateway environment that has a regionalized subdomain* : ``A`` - *ELB load balancers:* ``A`` | ``AAAA`` - *Amazon S3 buckets:* ``A`` - *Amazon Virtual Private Cloud interface VPC endpoints* ``A`` - *Another resource record set in this hosted zone:* Specify the type of the resource record set that you're creating the alias for. All values are supported except ``NS`` and ``SOA`` . .. epigraph:: If you're creating an alias record that has the same name as the hosted zone (known as the zone apex), you can't route traffic to a record for which the value of ``Type`` is ``CNAME`` . This is because the alias record must have the same type as the record you're routing traffic to, and creating a CNAME record for the zone apex isn't supported even for an alias record.
5460
5501
  :param alias_target: *Alias resource record sets only:* Information about the AWS resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to route traffic to. If you're creating resource records sets for a private hosted zone, note the following: - You can't create an alias resource record set in a private hosted zone to route traffic to a CloudFront distribution. - For information about creating failover resource record sets in a private hosted zone, see `Configuring Failover in a Private Hosted Zone <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html>`_ in the *Amazon Route 53 Developer Guide* .
5461
5502
  :param cidr_routing_config: The object that is specified in resource record set object when you are linking a resource record set to a CIDR location. A ``LocationName`` with an asterisk “*” can be used to create a default CIDR record. ``CollectionId`` is still required for default record.
5462
5503
  :param comment: *Optional:* Any comments you want to include about a change batch request.
@@ -5617,7 +5658,7 @@ class CfnRecordSetProps:
5617
5658
 
5618
5659
  Values for weighted, latency, geolocation, and failover resource record sets: ``A`` | ``AAAA`` | ``CAA`` | ``CNAME`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` . When creating a group of weighted, latency, geolocation, or failover resource record sets, specify the same value for all of the resource record sets in the group.
5619
5660
 
5620
- Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT``
5661
+ Valid values for multivalue answer resource record sets: ``A`` | ``AAAA`` | ``MX`` | ``NAPTR`` | ``PTR`` | ``SPF`` | ``SRV`` | ``TXT`` | ``CAA``
5621
5662
  .. epigraph::
5622
5663
 
5623
5664
  SPF records were formerly used to verify the identity of the sender of email messages. However, we no longer recommend that you create resource record sets for which the value of ``Type`` is ``SPF`` . RFC 7208, *Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1* , has been updated to say, "...[I]ts existence and mechanism defined in [RFC4408] have led to some interoperability issues. Accordingly, its use is no longer appropriate for SPF version 1; implementations are not to use it." In RFC 7208, see section 14.1, `The SPF DNS Record Type <https://docs.aws.amazon.com/http://tools.ietf.org/html/rfc7208#section-14.1>`_ .
@@ -6912,6 +6953,76 @@ class _IHostedZoneProxy(
6912
6953
  typing.cast(typing.Any, IHostedZone).__jsii_proxy_class__ = lambda : _IHostedZoneProxy
6913
6954
 
6914
6955
 
6956
+ @jsii.interface(jsii_type="aws-cdk-lib.aws_route53.IKeySigningKey")
6957
+ class IKeySigningKey(_IResource_c80c4260, typing_extensions.Protocol):
6958
+ '''A Key Signing Key for a Route 53 Hosted Zone.'''
6959
+
6960
+ @builtins.property
6961
+ @jsii.member(jsii_name="hostedZone")
6962
+ def hosted_zone(self) -> IHostedZone:
6963
+ '''The hosted zone that the key signing key signs.
6964
+
6965
+ :attribute: true
6966
+ '''
6967
+ ...
6968
+
6969
+ @builtins.property
6970
+ @jsii.member(jsii_name="keySigningKeyId")
6971
+ def key_signing_key_id(self) -> builtins.str:
6972
+ '''The ID of the key signing key, derived from the hosted zone ID and its name.
6973
+
6974
+ :attribute: true
6975
+ '''
6976
+ ...
6977
+
6978
+ @builtins.property
6979
+ @jsii.member(jsii_name="keySigningKeyName")
6980
+ def key_signing_key_name(self) -> builtins.str:
6981
+ '''The name of the key signing key.
6982
+
6983
+ :attribute: true
6984
+ '''
6985
+ ...
6986
+
6987
+
6988
+ class _IKeySigningKeyProxy(
6989
+ jsii.proxy_for(_IResource_c80c4260), # type: ignore[misc]
6990
+ ):
6991
+ '''A Key Signing Key for a Route 53 Hosted Zone.'''
6992
+
6993
+ __jsii_type__: typing.ClassVar[str] = "aws-cdk-lib.aws_route53.IKeySigningKey"
6994
+
6995
+ @builtins.property
6996
+ @jsii.member(jsii_name="hostedZone")
6997
+ def hosted_zone(self) -> IHostedZone:
6998
+ '''The hosted zone that the key signing key signs.
6999
+
7000
+ :attribute: true
7001
+ '''
7002
+ return typing.cast(IHostedZone, jsii.get(self, "hostedZone"))
7003
+
7004
+ @builtins.property
7005
+ @jsii.member(jsii_name="keySigningKeyId")
7006
+ def key_signing_key_id(self) -> builtins.str:
7007
+ '''The ID of the key signing key, derived from the hosted zone ID and its name.
7008
+
7009
+ :attribute: true
7010
+ '''
7011
+ return typing.cast(builtins.str, jsii.get(self, "keySigningKeyId"))
7012
+
7013
+ @builtins.property
7014
+ @jsii.member(jsii_name="keySigningKeyName")
7015
+ def key_signing_key_name(self) -> builtins.str:
7016
+ '''The name of the key signing key.
7017
+
7018
+ :attribute: true
7019
+ '''
7020
+ return typing.cast(builtins.str, jsii.get(self, "keySigningKeyName"))
7021
+
7022
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
7023
+ typing.cast(typing.Any, IKeySigningKey).__jsii_proxy_class__ = lambda : _IKeySigningKeyProxy
7024
+
7025
+
6915
7026
  @jsii.interface(jsii_type="aws-cdk-lib.aws_route53.IPrivateHostedZone")
6916
7027
  class IPrivateHostedZone(IHostedZone, typing_extensions.Protocol):
6917
7028
  '''Represents a Route 53 private hosted zone.'''
@@ -6978,6 +7089,315 @@ class _IRecordSetProxy(
6978
7089
  typing.cast(typing.Any, IRecordSet).__jsii_proxy_class__ = lambda : _IRecordSetProxy
6979
7090
 
6980
7091
 
7092
+ @jsii.implements(IKeySigningKey)
7093
+ class KeySigningKey(
7094
+ _Resource_45bc6135,
7095
+ metaclass=jsii.JSIIMeta,
7096
+ jsii_type="aws-cdk-lib.aws_route53.KeySigningKey",
7097
+ ):
7098
+ '''A Key Signing Key for a Route 53 Hosted Zone.
7099
+
7100
+ :resource: AWS::Route53::KeySigningKey
7101
+ :exampleMetadata: infused
7102
+
7103
+ Example::
7104
+
7105
+ # hosted_zone: route53.HostedZone
7106
+ # kms_key: kms.Key
7107
+
7108
+ route53.KeySigningKey(self, "KeySigningKey",
7109
+ hosted_zone=hosted_zone,
7110
+ kms_key=kms_key,
7111
+ key_signing_key_name="ksk",
7112
+ status=route53.KeySigningKeyStatus.ACTIVE
7113
+ )
7114
+ '''
7115
+
7116
+ def __init__(
7117
+ self,
7118
+ scope: _constructs_77d1e7e8.Construct,
7119
+ id: builtins.str,
7120
+ *,
7121
+ hosted_zone: IHostedZone,
7122
+ kms_key: _IKey_5f11635f,
7123
+ key_signing_key_name: typing.Optional[builtins.str] = None,
7124
+ status: typing.Optional["KeySigningKeyStatus"] = None,
7125
+ ) -> None:
7126
+ '''
7127
+ :param scope: -
7128
+ :param id: -
7129
+ :param hosted_zone: The hosted zone that this key will be used to sign.
7130
+ :param kms_key: The customer-managed KMS key that that will be used to sign the records. The KMS Key must be unique for each KSK within a hosted zone. Additionally, the KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
7131
+ :param key_signing_key_name: The name for the key signing key. This name must be unique within a hosted zone. Default: an autogenerated name
7132
+ :param status: The status of the key signing key. Default: ACTIVE
7133
+ '''
7134
+ if __debug__:
7135
+ type_hints = typing.get_type_hints(_typecheckingstub__63b944f82a919a5a1fc9b8c1ec885ffe1d509c5cec2bb324d9b5ed7df171b437)
7136
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
7137
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7138
+ props = KeySigningKeyProps(
7139
+ hosted_zone=hosted_zone,
7140
+ kms_key=kms_key,
7141
+ key_signing_key_name=key_signing_key_name,
7142
+ status=status,
7143
+ )
7144
+
7145
+ jsii.create(self.__class__, self, [scope, id, props])
7146
+
7147
+ @jsii.member(jsii_name="fromKeySigningKeyAttributes")
7148
+ @builtins.classmethod
7149
+ def from_key_signing_key_attributes(
7150
+ cls,
7151
+ scope: _constructs_77d1e7e8.Construct,
7152
+ id: builtins.str,
7153
+ *,
7154
+ hosted_zone: IHostedZone,
7155
+ key_signing_key_name: builtins.str,
7156
+ ) -> IKeySigningKey:
7157
+ '''Imports a key signing key from its attributes.
7158
+
7159
+ :param scope: -
7160
+ :param id: -
7161
+ :param hosted_zone: The hosted zone that the key signing key signs.
7162
+ :param key_signing_key_name: The name of the key signing key.
7163
+ '''
7164
+ if __debug__:
7165
+ type_hints = typing.get_type_hints(_typecheckingstub__9aae6d3147d941495289a363f03a080316f20c479e0fa8646cf10ec995d1635a)
7166
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
7167
+ check_type(argname="argument id", value=id, expected_type=type_hints["id"])
7168
+ attrs = KeySigningKeyAttributes(
7169
+ hosted_zone=hosted_zone, key_signing_key_name=key_signing_key_name
7170
+ )
7171
+
7172
+ return typing.cast(IKeySigningKey, jsii.sinvoke(cls, "fromKeySigningKeyAttributes", [scope, id, attrs]))
7173
+
7174
+ @builtins.property
7175
+ @jsii.member(jsii_name="hostedZone")
7176
+ def hosted_zone(self) -> IHostedZone:
7177
+ '''The hosted zone that the key signing key signs.'''
7178
+ return typing.cast(IHostedZone, jsii.get(self, "hostedZone"))
7179
+
7180
+ @builtins.property
7181
+ @jsii.member(jsii_name="keySigningKeyId")
7182
+ def key_signing_key_id(self) -> builtins.str:
7183
+ '''The ID of the key signing key, derived from the hosted zone ID and its name.'''
7184
+ return typing.cast(builtins.str, jsii.get(self, "keySigningKeyId"))
7185
+
7186
+ @builtins.property
7187
+ @jsii.member(jsii_name="keySigningKeyName")
7188
+ def key_signing_key_name(self) -> builtins.str:
7189
+ '''The name of the key signing key.'''
7190
+ return typing.cast(builtins.str, jsii.get(self, "keySigningKeyName"))
7191
+
7192
+
7193
+ @jsii.data_type(
7194
+ jsii_type="aws-cdk-lib.aws_route53.KeySigningKeyAttributes",
7195
+ jsii_struct_bases=[],
7196
+ name_mapping={
7197
+ "hosted_zone": "hostedZone",
7198
+ "key_signing_key_name": "keySigningKeyName",
7199
+ },
7200
+ )
7201
+ class KeySigningKeyAttributes:
7202
+ def __init__(
7203
+ self,
7204
+ *,
7205
+ hosted_zone: IHostedZone,
7206
+ key_signing_key_name: builtins.str,
7207
+ ) -> None:
7208
+ '''The attributes of a key signing key.
7209
+
7210
+ :param hosted_zone: The hosted zone that the key signing key signs.
7211
+ :param key_signing_key_name: The name of the key signing key.
7212
+
7213
+ :exampleMetadata: fixture=_generated
7214
+
7215
+ Example::
7216
+
7217
+ # The code below shows an example of how to instantiate this type.
7218
+ # The values are placeholders you should change.
7219
+ from aws_cdk import aws_route53 as route53
7220
+
7221
+ # hosted_zone: route53.HostedZone
7222
+
7223
+ key_signing_key_attributes = route53.KeySigningKeyAttributes(
7224
+ hosted_zone=hosted_zone,
7225
+ key_signing_key_name="keySigningKeyName"
7226
+ )
7227
+ '''
7228
+ if __debug__:
7229
+ type_hints = typing.get_type_hints(_typecheckingstub__1a1262fd4a880b25e9ef115da3b6b790a7b24acf9d121372595ab3087a5442d2)
7230
+ check_type(argname="argument hosted_zone", value=hosted_zone, expected_type=type_hints["hosted_zone"])
7231
+ check_type(argname="argument key_signing_key_name", value=key_signing_key_name, expected_type=type_hints["key_signing_key_name"])
7232
+ self._values: typing.Dict[builtins.str, typing.Any] = {
7233
+ "hosted_zone": hosted_zone,
7234
+ "key_signing_key_name": key_signing_key_name,
7235
+ }
7236
+
7237
+ @builtins.property
7238
+ def hosted_zone(self) -> IHostedZone:
7239
+ '''The hosted zone that the key signing key signs.
7240
+
7241
+ :attribute: true
7242
+ '''
7243
+ result = self._values.get("hosted_zone")
7244
+ assert result is not None, "Required property 'hosted_zone' is missing"
7245
+ return typing.cast(IHostedZone, result)
7246
+
7247
+ @builtins.property
7248
+ def key_signing_key_name(self) -> builtins.str:
7249
+ '''The name of the key signing key.
7250
+
7251
+ :attribute: true
7252
+ '''
7253
+ result = self._values.get("key_signing_key_name")
7254
+ assert result is not None, "Required property 'key_signing_key_name' is missing"
7255
+ return typing.cast(builtins.str, result)
7256
+
7257
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7258
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7259
+
7260
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7261
+ return not (rhs == self)
7262
+
7263
+ def __repr__(self) -> str:
7264
+ return "KeySigningKeyAttributes(%s)" % ", ".join(
7265
+ k + "=" + repr(v) for k, v in self._values.items()
7266
+ )
7267
+
7268
+
7269
+ @jsii.data_type(
7270
+ jsii_type="aws-cdk-lib.aws_route53.KeySigningKeyProps",
7271
+ jsii_struct_bases=[],
7272
+ name_mapping={
7273
+ "hosted_zone": "hostedZone",
7274
+ "kms_key": "kmsKey",
7275
+ "key_signing_key_name": "keySigningKeyName",
7276
+ "status": "status",
7277
+ },
7278
+ )
7279
+ class KeySigningKeyProps:
7280
+ def __init__(
7281
+ self,
7282
+ *,
7283
+ hosted_zone: IHostedZone,
7284
+ kms_key: _IKey_5f11635f,
7285
+ key_signing_key_name: typing.Optional[builtins.str] = None,
7286
+ status: typing.Optional["KeySigningKeyStatus"] = None,
7287
+ ) -> None:
7288
+ '''Properties for constructing a Key Signing Key.
7289
+
7290
+ :param hosted_zone: The hosted zone that this key will be used to sign.
7291
+ :param kms_key: The customer-managed KMS key that that will be used to sign the records. The KMS Key must be unique for each KSK within a hosted zone. Additionally, the KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
7292
+ :param key_signing_key_name: The name for the key signing key. This name must be unique within a hosted zone. Default: an autogenerated name
7293
+ :param status: The status of the key signing key. Default: ACTIVE
7294
+
7295
+ :exampleMetadata: infused
7296
+
7297
+ Example::
7298
+
7299
+ # hosted_zone: route53.HostedZone
7300
+ # kms_key: kms.Key
7301
+
7302
+ route53.KeySigningKey(self, "KeySigningKey",
7303
+ hosted_zone=hosted_zone,
7304
+ kms_key=kms_key,
7305
+ key_signing_key_name="ksk",
7306
+ status=route53.KeySigningKeyStatus.ACTIVE
7307
+ )
7308
+ '''
7309
+ if __debug__:
7310
+ type_hints = typing.get_type_hints(_typecheckingstub__3e92b54737c8cb2969b649108716a37fd8e380a8e41cfefef3229c1d92acdf40)
7311
+ check_type(argname="argument hosted_zone", value=hosted_zone, expected_type=type_hints["hosted_zone"])
7312
+ check_type(argname="argument kms_key", value=kms_key, expected_type=type_hints["kms_key"])
7313
+ check_type(argname="argument key_signing_key_name", value=key_signing_key_name, expected_type=type_hints["key_signing_key_name"])
7314
+ check_type(argname="argument status", value=status, expected_type=type_hints["status"])
7315
+ self._values: typing.Dict[builtins.str, typing.Any] = {
7316
+ "hosted_zone": hosted_zone,
7317
+ "kms_key": kms_key,
7318
+ }
7319
+ if key_signing_key_name is not None:
7320
+ self._values["key_signing_key_name"] = key_signing_key_name
7321
+ if status is not None:
7322
+ self._values["status"] = status
7323
+
7324
+ @builtins.property
7325
+ def hosted_zone(self) -> IHostedZone:
7326
+ '''The hosted zone that this key will be used to sign.'''
7327
+ result = self._values.get("hosted_zone")
7328
+ assert result is not None, "Required property 'hosted_zone' is missing"
7329
+ return typing.cast(IHostedZone, result)
7330
+
7331
+ @builtins.property
7332
+ def kms_key(self) -> _IKey_5f11635f:
7333
+ '''The customer-managed KMS key that that will be used to sign the records.
7334
+
7335
+ The KMS Key must be unique for each KSK within a hosted zone. Additionally, the
7336
+ KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
7337
+
7338
+ :see: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec-cmk-requirements.html
7339
+ '''
7340
+ result = self._values.get("kms_key")
7341
+ assert result is not None, "Required property 'kms_key' is missing"
7342
+ return typing.cast(_IKey_5f11635f, result)
7343
+
7344
+ @builtins.property
7345
+ def key_signing_key_name(self) -> typing.Optional[builtins.str]:
7346
+ '''The name for the key signing key.
7347
+
7348
+ This name must be unique within a hosted zone.
7349
+
7350
+ :default: an autogenerated name
7351
+ '''
7352
+ result = self._values.get("key_signing_key_name")
7353
+ return typing.cast(typing.Optional[builtins.str], result)
7354
+
7355
+ @builtins.property
7356
+ def status(self) -> typing.Optional["KeySigningKeyStatus"]:
7357
+ '''The status of the key signing key.
7358
+
7359
+ :default: ACTIVE
7360
+ '''
7361
+ result = self._values.get("status")
7362
+ return typing.cast(typing.Optional["KeySigningKeyStatus"], result)
7363
+
7364
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
7365
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
7366
+
7367
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
7368
+ return not (rhs == self)
7369
+
7370
+ def __repr__(self) -> str:
7371
+ return "KeySigningKeyProps(%s)" % ", ".join(
7372
+ k + "=" + repr(v) for k, v in self._values.items()
7373
+ )
7374
+
7375
+
7376
+ @jsii.enum(jsii_type="aws-cdk-lib.aws_route53.KeySigningKeyStatus")
7377
+ class KeySigningKeyStatus(enum.Enum):
7378
+ '''The status for a Key Signing Key.
7379
+
7380
+ :exampleMetadata: infused
7381
+
7382
+ Example::
7383
+
7384
+ # hosted_zone: route53.HostedZone
7385
+ # kms_key: kms.Key
7386
+
7387
+ route53.KeySigningKey(self, "KeySigningKey",
7388
+ hosted_zone=hosted_zone,
7389
+ kms_key=kms_key,
7390
+ key_signing_key_name="ksk",
7391
+ status=route53.KeySigningKeyStatus.ACTIVE
7392
+ )
7393
+ '''
7394
+
7395
+ ACTIVE = "ACTIVE"
7396
+ '''The KSK is being used for signing.'''
7397
+ INACTIVE = "INACTIVE"
7398
+ '''The KSK is not being used for signing.'''
7399
+
7400
+
6981
7401
  @jsii.data_type(
6982
7402
  jsii_type="aws-cdk-lib.aws_route53.MxRecordValue",
6983
7403
  jsii_struct_bases=[],
@@ -9521,6 +9941,83 @@ class ZoneDelegationRecordProps(RecordSetOptions):
9521
9941
  )
9522
9942
 
9523
9943
 
9944
+ @jsii.data_type(
9945
+ jsii_type="aws-cdk-lib.aws_route53.ZoneSigningOptions",
9946
+ jsii_struct_bases=[],
9947
+ name_mapping={"kms_key": "kmsKey", "key_signing_key_name": "keySigningKeyName"},
9948
+ )
9949
+ class ZoneSigningOptions:
9950
+ def __init__(
9951
+ self,
9952
+ *,
9953
+ kms_key: _IKey_5f11635f,
9954
+ key_signing_key_name: typing.Optional[builtins.str] = None,
9955
+ ) -> None:
9956
+ '''Options for enabling key signing from a hosted zone.
9957
+
9958
+ :param kms_key: The customer-managed KMS key that that will be used to sign the records. The KMS Key must be unique for each KSK within a hosted zone. Additionally, the KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
9959
+ :param key_signing_key_name: The name for the key signing key. This name must be unique within a hosted zone. Default: an autogenerated name
9960
+
9961
+ :exampleMetadata: infused
9962
+
9963
+ Example::
9964
+
9965
+ kms_key = kms.Key(self, "KmsCMK",
9966
+ key_spec=kms.KeySpec.ECC_NIST_P256,
9967
+ key_usage=kms.KeyUsage.SIGN_VERIFY
9968
+ )
9969
+ hosted_zone = route53.HostedZone(self, "HostedZone",
9970
+ zone_name="example.com"
9971
+ )
9972
+ # Enable DNSSEC signing for the zone
9973
+ hosted_zone.enable_dnssec(kms_key=kms_key)
9974
+ '''
9975
+ if __debug__:
9976
+ type_hints = typing.get_type_hints(_typecheckingstub__c024f1ad9949a250bc85eb88751e2c625dd1a6679c33a35a4add759a0404b95c)
9977
+ check_type(argname="argument kms_key", value=kms_key, expected_type=type_hints["kms_key"])
9978
+ check_type(argname="argument key_signing_key_name", value=key_signing_key_name, expected_type=type_hints["key_signing_key_name"])
9979
+ self._values: typing.Dict[builtins.str, typing.Any] = {
9980
+ "kms_key": kms_key,
9981
+ }
9982
+ if key_signing_key_name is not None:
9983
+ self._values["key_signing_key_name"] = key_signing_key_name
9984
+
9985
+ @builtins.property
9986
+ def kms_key(self) -> _IKey_5f11635f:
9987
+ '''The customer-managed KMS key that that will be used to sign the records.
9988
+
9989
+ The KMS Key must be unique for each KSK within a hosted zone. Additionally, the
9990
+ KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
9991
+
9992
+ :see: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec-cmk-requirements.html
9993
+ '''
9994
+ result = self._values.get("kms_key")
9995
+ assert result is not None, "Required property 'kms_key' is missing"
9996
+ return typing.cast(_IKey_5f11635f, result)
9997
+
9998
+ @builtins.property
9999
+ def key_signing_key_name(self) -> typing.Optional[builtins.str]:
10000
+ '''The name for the key signing key.
10001
+
10002
+ This name must be unique within a hosted zone.
10003
+
10004
+ :default: an autogenerated name
10005
+ '''
10006
+ result = self._values.get("key_signing_key_name")
10007
+ return typing.cast(typing.Optional[builtins.str], result)
10008
+
10009
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
10010
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
10011
+
10012
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
10013
+ return not (rhs == self)
10014
+
10015
+ def __repr__(self) -> str:
10016
+ return "ZoneSigningOptions(%s)" % ", ".join(
10017
+ k + "=" + repr(v) for k, v in self._values.items()
10018
+ )
10019
+
10020
+
9524
10021
  class ARecord(
9525
10022
  RecordSet,
9526
10023
  metaclass=jsii.JSIIMeta,
@@ -11422,14 +11919,15 @@ class HostedZone(
11422
11919
 
11423
11920
  Example::
11424
11921
 
11425
- my_hosted_zone = route53.HostedZone(self, "HostedZone",
11426
- zone_name="example.com"
11922
+ kms_key = kms.Key(self, "KmsCMK",
11923
+ key_spec=kms.KeySpec.ECC_NIST_P256,
11924
+ key_usage=kms.KeyUsage.SIGN_VERIFY
11427
11925
  )
11428
- acm.Certificate(self, "Certificate",
11429
- domain_name="hello.example.com",
11430
- certificate_name="Hello World Service", # Optionally provide an certificate name
11431
- validation=acm.CertificateValidation.from_dns(my_hosted_zone)
11926
+ hosted_zone = route53.HostedZone(self, "HostedZone",
11927
+ zone_name="example.com"
11432
11928
  )
11929
+ # Enable DNSSEC signing for the zone
11930
+ hosted_zone.enable_dnssec(kms_key=kms_key)
11433
11931
  '''
11434
11932
 
11435
11933
  def __init__(
@@ -11565,6 +12063,27 @@ class HostedZone(
11565
12063
  check_type(argname="argument vpc", value=vpc, expected_type=type_hints["vpc"])
11566
12064
  return typing.cast(None, jsii.invoke(self, "addVpc", [vpc]))
11567
12065
 
12066
+ @jsii.member(jsii_name="enableDnssec")
12067
+ def enable_dnssec(
12068
+ self,
12069
+ *,
12070
+ kms_key: _IKey_5f11635f,
12071
+ key_signing_key_name: typing.Optional[builtins.str] = None,
12072
+ ) -> IKeySigningKey:
12073
+ '''Enable DNSSEC for this hosted zone.
12074
+
12075
+ This will create a key signing key with the given options and enable DNSSEC signing
12076
+ for the hosted zone.
12077
+
12078
+ :param kms_key: The customer-managed KMS key that that will be used to sign the records. The KMS Key must be unique for each KSK within a hosted zone. Additionally, the KMS key must be an asymetric customer-managed key using the ECC_NIST_P256 algorithm.
12079
+ :param key_signing_key_name: The name for the key signing key. This name must be unique within a hosted zone. Default: an autogenerated name
12080
+ '''
12081
+ options = ZoneSigningOptions(
12082
+ kms_key=kms_key, key_signing_key_name=key_signing_key_name
12083
+ )
12084
+
12085
+ return typing.cast(IKeySigningKey, jsii.invoke(self, "enableDnssec", [options]))
12086
+
11568
12087
  @jsii.member(jsii_name="grantDelegation")
11569
12088
  def grant_delegation(self, grantee: _IGrantable_71c4f5de) -> _Grant_a7ae64f8:
11570
12089
  '''Grant permissions to add delegation records to this zone.
@@ -12657,9 +13176,14 @@ __all__ = [
12657
13176
  "HostedZoneProviderProps",
12658
13177
  "IAliasRecordTarget",
12659
13178
  "IHostedZone",
13179
+ "IKeySigningKey",
12660
13180
  "IPrivateHostedZone",
12661
13181
  "IPublicHostedZone",
12662
13182
  "IRecordSet",
13183
+ "KeySigningKey",
13184
+ "KeySigningKeyAttributes",
13185
+ "KeySigningKeyProps",
13186
+ "KeySigningKeyStatus",
12663
13187
  "MxRecord",
12664
13188
  "MxRecordProps",
12665
13189
  "MxRecordValue",
@@ -12685,6 +13209,7 @@ __all__ = [
12685
13209
  "ZoneDelegationOptions",
12686
13210
  "ZoneDelegationRecord",
12687
13211
  "ZoneDelegationRecordProps",
13212
+ "ZoneSigningOptions",
12688
13213
  ]
12689
13214
 
12690
13215
  publication.publish()
@@ -13453,6 +13978,46 @@ def _typecheckingstub__97ae48bcbfd92ef96c96db6d1d972ddd9b889f01bba1ab2a3819d9faa
13453
13978
  """Type checking stubs"""
13454
13979
  pass
13455
13980
 
13981
+ def _typecheckingstub__63b944f82a919a5a1fc9b8c1ec885ffe1d509c5cec2bb324d9b5ed7df171b437(
13982
+ scope: _constructs_77d1e7e8.Construct,
13983
+ id: builtins.str,
13984
+ *,
13985
+ hosted_zone: IHostedZone,
13986
+ kms_key: _IKey_5f11635f,
13987
+ key_signing_key_name: typing.Optional[builtins.str] = None,
13988
+ status: typing.Optional[KeySigningKeyStatus] = None,
13989
+ ) -> None:
13990
+ """Type checking stubs"""
13991
+ pass
13992
+
13993
+ def _typecheckingstub__9aae6d3147d941495289a363f03a080316f20c479e0fa8646cf10ec995d1635a(
13994
+ scope: _constructs_77d1e7e8.Construct,
13995
+ id: builtins.str,
13996
+ *,
13997
+ hosted_zone: IHostedZone,
13998
+ key_signing_key_name: builtins.str,
13999
+ ) -> None:
14000
+ """Type checking stubs"""
14001
+ pass
14002
+
14003
+ def _typecheckingstub__1a1262fd4a880b25e9ef115da3b6b790a7b24acf9d121372595ab3087a5442d2(
14004
+ *,
14005
+ hosted_zone: IHostedZone,
14006
+ key_signing_key_name: builtins.str,
14007
+ ) -> None:
14008
+ """Type checking stubs"""
14009
+ pass
14010
+
14011
+ def _typecheckingstub__3e92b54737c8cb2969b649108716a37fd8e380a8e41cfefef3229c1d92acdf40(
14012
+ *,
14013
+ hosted_zone: IHostedZone,
14014
+ kms_key: _IKey_5f11635f,
14015
+ key_signing_key_name: typing.Optional[builtins.str] = None,
14016
+ status: typing.Optional[KeySigningKeyStatus] = None,
14017
+ ) -> None:
14018
+ """Type checking stubs"""
14019
+ pass
14020
+
13456
14021
  def _typecheckingstub__2600b3ca2027fe7d531738c20a112cef3282c7ef114758a51ee3863608c7aa72(
13457
14022
  *,
13458
14023
  host_name: builtins.str,
@@ -13724,6 +14289,14 @@ def _typecheckingstub__240a965753acb9488d02c120074027364f5e85a8ec585205a863174fe
13724
14289
  """Type checking stubs"""
13725
14290
  pass
13726
14291
 
14292
+ def _typecheckingstub__c024f1ad9949a250bc85eb88751e2c625dd1a6679c33a35a4add759a0404b95c(
14293
+ *,
14294
+ kms_key: _IKey_5f11635f,
14295
+ key_signing_key_name: typing.Optional[builtins.str] = None,
14296
+ ) -> None:
14297
+ """Type checking stubs"""
14298
+ pass
14299
+
13727
14300
  def _typecheckingstub__ca2e60ba6b2baeeff2cc875c86af94b4b26d6f11c1cfcca09280ac533b792230(
13728
14301
  scope: _constructs_77d1e7e8.Construct,
13729
14302
  id: builtins.str,