pulumi-aws 7.15.0__py3-none-any.whl → 7.16.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.
Files changed (105) hide show
  1. pulumi_aws/__init__.py +80 -0
  2. pulumi_aws/alb/listener.py +7 -7
  3. pulumi_aws/alb/target_group.py +7 -7
  4. pulumi_aws/alb/target_group_attachment.py +83 -0
  5. pulumi_aws/apigateway/domain_name.py +86 -7
  6. pulumi_aws/apigateway/get_domain_name.py +15 -1
  7. pulumi_aws/apigateway/integration.py +48 -8
  8. pulumi_aws/athena/_inputs.py +412 -5
  9. pulumi_aws/athena/outputs.py +342 -2
  10. pulumi_aws/backup/global_settings.py +15 -7
  11. pulumi_aws/bedrock/agentcore_memory_strategy.py +8 -0
  12. pulumi_aws/cleanrooms/collaboration.py +26 -6
  13. pulumi_aws/cloudfront/__init__.py +6 -0
  14. pulumi_aws/cloudfront/_inputs.py +3601 -478
  15. pulumi_aws/cloudfront/connection_function.py +658 -0
  16. pulumi_aws/cloudfront/connection_group.py +649 -0
  17. pulumi_aws/cloudfront/distribution.py +142 -0
  18. pulumi_aws/cloudfront/distribution_tenant.py +857 -0
  19. pulumi_aws/cloudfront/get_connection_group.py +249 -0
  20. pulumi_aws/cloudfront/get_distribution_tenant.py +279 -0
  21. pulumi_aws/cloudfront/multitenant_distribution.py +1181 -0
  22. pulumi_aws/cloudfront/outputs.py +3034 -376
  23. pulumi_aws/cloudwatch/log_subscription_filter.py +136 -42
  24. pulumi_aws/directconnect/gateway.py +78 -3
  25. pulumi_aws/directconnect/get_gateway.py +24 -4
  26. pulumi_aws/dlm/_inputs.py +3 -3
  27. pulumi_aws/dlm/outputs.py +2 -2
  28. pulumi_aws/dynamodb/__init__.py +1 -0
  29. pulumi_aws/dynamodb/_inputs.py +370 -0
  30. pulumi_aws/dynamodb/global_secondary_index.py +666 -0
  31. pulumi_aws/dynamodb/outputs.py +315 -0
  32. pulumi_aws/dynamodb/table.py +9 -1
  33. pulumi_aws/ec2/_inputs.py +44 -4
  34. pulumi_aws/ec2/get_vpc_endpoint.py +24 -4
  35. pulumi_aws/ec2/outputs.py +54 -4
  36. pulumi_aws/ecr/__init__.py +1 -0
  37. pulumi_aws/ecr/_inputs.py +58 -22
  38. pulumi_aws/ecr/get_repository_creation_template.py +1 -1
  39. pulumi_aws/ecr/lifecycle_policy.py +152 -64
  40. pulumi_aws/ecr/outputs.py +37 -15
  41. pulumi_aws/ecr/pull_time_update_exclusion.py +363 -0
  42. pulumi_aws/ecr/repository_creation_template.py +7 -7
  43. pulumi_aws/ecs/_inputs.py +20 -0
  44. pulumi_aws/ecs/outputs.py +14 -0
  45. pulumi_aws/ecs/task_definition.py +28 -28
  46. pulumi_aws/elasticache/replication_group.py +7 -7
  47. pulumi_aws/fsx/ontap_file_system.py +14 -0
  48. pulumi_aws/glue/resource_policy.py +4 -4
  49. pulumi_aws/guardduty/_inputs.py +41 -1
  50. pulumi_aws/guardduty/outputs.py +27 -1
  51. pulumi_aws/iam/get_saml_provider.py +15 -1
  52. pulumi_aws/iam/outbound_web_identity_federation.py +0 -4
  53. pulumi_aws/iam/policy.py +47 -0
  54. pulumi_aws/iam/saml_provider.py +28 -0
  55. pulumi_aws/iam/virtual_mfa_device.py +66 -38
  56. pulumi_aws/imagebuilder/_inputs.py +87 -0
  57. pulumi_aws/imagebuilder/image.py +47 -0
  58. pulumi_aws/imagebuilder/image_pipeline.py +47 -0
  59. pulumi_aws/imagebuilder/outputs.py +87 -0
  60. pulumi_aws/kms/grant.py +18 -18
  61. pulumi_aws/lambda_/_inputs.py +24 -4
  62. pulumi_aws/lambda_/event_source_mapping.py +2 -0
  63. pulumi_aws/lambda_/function.py +28 -0
  64. pulumi_aws/lambda_/function_url.py +4 -0
  65. pulumi_aws/lambda_/get_function.py +15 -1
  66. pulumi_aws/lambda_/outputs.py +17 -3
  67. pulumi_aws/lambda_/permission.py +47 -0
  68. pulumi_aws/lb/listener.py +7 -7
  69. pulumi_aws/lb/target_group.py +7 -7
  70. pulumi_aws/lb/target_group_attachment.py +83 -0
  71. pulumi_aws/networkfirewall/_inputs.py +3 -3
  72. pulumi_aws/networkfirewall/outputs.py +2 -2
  73. pulumi_aws/networkfirewall/vpc_endpoint_association.py +2 -2
  74. pulumi_aws/networkmanager/vpc_attachment.py +7 -7
  75. pulumi_aws/opensearchingest/pipeline.py +47 -0
  76. pulumi_aws/organizations/__init__.py +1 -0
  77. pulumi_aws/organizations/tag.py +292 -0
  78. pulumi_aws/pulumi-plugin.json +1 -1
  79. pulumi_aws/rds/cluster.py +21 -21
  80. pulumi_aws/rds/get_proxy.py +29 -1
  81. pulumi_aws/rds/proxy.py +94 -0
  82. pulumi_aws/rds/proxy_default_target_group.py +0 -76
  83. pulumi_aws/rds/proxy_target.py +0 -80
  84. pulumi_aws/redshift/__init__.py +1 -0
  85. pulumi_aws/redshift/_inputs.py +329 -0
  86. pulumi_aws/redshift/idc_application.py +687 -0
  87. pulumi_aws/redshift/outputs.py +265 -0
  88. pulumi_aws/route53/get_resolver_firewall_rules.py +9 -0
  89. pulumi_aws/route53/get_resolver_rule.py +19 -4
  90. pulumi_aws/route53/outputs.py +108 -1
  91. pulumi_aws/route53/resolver_firewall_rule.py +199 -32
  92. pulumi_aws/secretsmanager/__init__.py +1 -0
  93. pulumi_aws/secretsmanager/tag.py +333 -0
  94. pulumi_aws/sesv2/__init__.py +1 -0
  95. pulumi_aws/sesv2/tenant.py +418 -0
  96. pulumi_aws/sfn/activity.py +0 -4
  97. pulumi_aws/sfn/alias.py +0 -4
  98. pulumi_aws/transfer/_inputs.py +126 -0
  99. pulumi_aws/transfer/outputs.py +97 -0
  100. pulumi_aws/transfer/web_app.py +54 -7
  101. pulumi_aws/vpclattice/service_network_resource_association.py +47 -0
  102. {pulumi_aws-7.15.0.dist-info → pulumi_aws-7.16.0.dist-info}/METADATA +1 -1
  103. {pulumi_aws-7.15.0.dist-info → pulumi_aws-7.16.0.dist-info}/RECORD +105 -93
  104. {pulumi_aws-7.15.0.dist-info → pulumi_aws-7.16.0.dist-info}/WHEEL +0 -0
  105. {pulumi_aws-7.15.0.dist-info → pulumi_aws-7.16.0.dist-info}/top_level.txt +0 -0
pulumi_aws/ec2/outputs.py CHANGED
@@ -17280,6 +17280,10 @@ class VpcEndpointDnsOptions(dict):
17280
17280
  suggest = "dns_record_ip_type"
17281
17281
  elif key == "privateDnsOnlyForInboundResolverEndpoint":
17282
17282
  suggest = "private_dns_only_for_inbound_resolver_endpoint"
17283
+ elif key == "privateDnsPreference":
17284
+ suggest = "private_dns_preference"
17285
+ elif key == "privateDnsSpecifiedDomains":
17286
+ suggest = "private_dns_specified_domains"
17283
17287
 
17284
17288
  if suggest:
17285
17289
  pulumi.log.warn(f"Key '{key}' not found in VpcEndpointDnsOptions. Access the value via the '{suggest}' property getter instead.")
@@ -17294,15 +17298,23 @@ class VpcEndpointDnsOptions(dict):
17294
17298
 
17295
17299
  def __init__(__self__, *,
17296
17300
  dns_record_ip_type: Optional[_builtins.str] = None,
17297
- private_dns_only_for_inbound_resolver_endpoint: Optional[_builtins.bool] = None):
17301
+ private_dns_only_for_inbound_resolver_endpoint: Optional[_builtins.bool] = None,
17302
+ private_dns_preference: Optional[_builtins.str] = None,
17303
+ private_dns_specified_domains: Optional[Sequence[_builtins.str]] = None):
17298
17304
  """
17299
17305
  :param _builtins.str dns_record_ip_type: The DNS records created for the endpoint. Valid values are `ipv4`, `dualstack`, `service-defined`, and `ipv6`.
17300
- :param _builtins.bool private_dns_only_for_inbound_resolver_endpoint: Indicates whether to enable private DNS only for inbound endpoints. This option is available only for services that support both gateway and interface endpoints. It routes traffic that originates from the VPC to the gateway endpoint and traffic that originates from on-premises to the interface endpoint. Default is `false`. Can only be specified if private_dns_enabled is `true`.
17306
+ :param _builtins.bool private_dns_only_for_inbound_resolver_endpoint: Boolean indicating whether to enable private DNS only for inbound endpoints. This option is available only for interface endpoints of services that support both gateway and interface endpoints. A gateway endpoint for the same service must be created before an interface endpoint is created. Traffic originating from the VPC is routed to the gateway endpoint, while traffic originating from on-premises is routed to the interface endpoint. Defaults to `false`. This argument can be specified only if `private_dns_enabled` is `true`.
17307
+ :param _builtins.str private_dns_preference: Preference for which private domains have a private hosted zone created for and associated with the specified VPC. Valid values are `ALL_DOMAINS`, `VERIFIED_DOMAINS_ONLY`, `VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS`, and `SPECIFIED_DOMAINS_ONLY`. Only supported when `private_dns_enabled` is `true` and when the `vpc_endpoint_type` is `ServiceNetwork` or `Resource`.
17308
+ :param Sequence[_builtins.str] private_dns_specified_domains: List of private domains to create private hosted zones for and associate with the specified VPC. Must be specified when `private_dns_enabled` is `true` and `private_dns_preference` is set to either `VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS` or `SPECIFIED_DOMAINS_ONLY`. In all other cases, this argument must not be specified.
17301
17309
  """
17302
17310
  if dns_record_ip_type is not None:
17303
17311
  pulumi.set(__self__, "dns_record_ip_type", dns_record_ip_type)
17304
17312
  if private_dns_only_for_inbound_resolver_endpoint is not None:
17305
17313
  pulumi.set(__self__, "private_dns_only_for_inbound_resolver_endpoint", private_dns_only_for_inbound_resolver_endpoint)
17314
+ if private_dns_preference is not None:
17315
+ pulumi.set(__self__, "private_dns_preference", private_dns_preference)
17316
+ if private_dns_specified_domains is not None:
17317
+ pulumi.set(__self__, "private_dns_specified_domains", private_dns_specified_domains)
17306
17318
 
17307
17319
  @_builtins.property
17308
17320
  @pulumi.getter(name="dnsRecordIpType")
@@ -17316,10 +17328,26 @@ class VpcEndpointDnsOptions(dict):
17316
17328
  @pulumi.getter(name="privateDnsOnlyForInboundResolverEndpoint")
17317
17329
  def private_dns_only_for_inbound_resolver_endpoint(self) -> Optional[_builtins.bool]:
17318
17330
  """
17319
- Indicates whether to enable private DNS only for inbound endpoints. This option is available only for services that support both gateway and interface endpoints. It routes traffic that originates from the VPC to the gateway endpoint and traffic that originates from on-premises to the interface endpoint. Default is `false`. Can only be specified if private_dns_enabled is `true`.
17331
+ Boolean indicating whether to enable private DNS only for inbound endpoints. This option is available only for interface endpoints of services that support both gateway and interface endpoints. A gateway endpoint for the same service must be created before an interface endpoint is created. Traffic originating from the VPC is routed to the gateway endpoint, while traffic originating from on-premises is routed to the interface endpoint. Defaults to `false`. This argument can be specified only if `private_dns_enabled` is `true`.
17320
17332
  """
17321
17333
  return pulumi.get(self, "private_dns_only_for_inbound_resolver_endpoint")
17322
17334
 
17335
+ @_builtins.property
17336
+ @pulumi.getter(name="privateDnsPreference")
17337
+ def private_dns_preference(self) -> Optional[_builtins.str]:
17338
+ """
17339
+ Preference for which private domains have a private hosted zone created for and associated with the specified VPC. Valid values are `ALL_DOMAINS`, `VERIFIED_DOMAINS_ONLY`, `VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS`, and `SPECIFIED_DOMAINS_ONLY`. Only supported when `private_dns_enabled` is `true` and when the `vpc_endpoint_type` is `ServiceNetwork` or `Resource`.
17340
+ """
17341
+ return pulumi.get(self, "private_dns_preference")
17342
+
17343
+ @_builtins.property
17344
+ @pulumi.getter(name="privateDnsSpecifiedDomains")
17345
+ def private_dns_specified_domains(self) -> Optional[Sequence[_builtins.str]]:
17346
+ """
17347
+ List of private domains to create private hosted zones for and associate with the specified VPC. Must be specified when `private_dns_enabled` is `true` and `private_dns_preference` is set to either `VERIFIED_DOMAINS_AND_SPECIFIED_DOMAINS` or `SPECIFIED_DOMAINS_ONLY`. In all other cases, this argument must not be specified.
17348
+ """
17349
+ return pulumi.get(self, "private_dns_specified_domains")
17350
+
17323
17351
 
17324
17352
  @pulumi.output_type
17325
17353
  class VpcEndpointServicePrivateDnsNameConfiguration(dict):
@@ -25487,13 +25515,19 @@ class GetVpcEndpointDnsEntryResult(dict):
25487
25515
  class GetVpcEndpointDnsOptionResult(dict):
25488
25516
  def __init__(__self__, *,
25489
25517
  dns_record_ip_type: _builtins.str,
25490
- private_dns_only_for_inbound_resolver_endpoint: _builtins.bool):
25518
+ private_dns_only_for_inbound_resolver_endpoint: _builtins.bool,
25519
+ private_dns_preference: _builtins.str,
25520
+ private_dns_specified_domains: Sequence[_builtins.str]):
25491
25521
  """
25492
25522
  :param _builtins.str dns_record_ip_type: The DNS records created for the endpoint.
25493
25523
  :param _builtins.bool private_dns_only_for_inbound_resolver_endpoint: Indicates whether to enable private DNS only for inbound endpoints.
25524
+ :param _builtins.str private_dns_preference: Preference for which private domains have a private hosted zone created for and associated with the specified VPC.
25525
+ :param Sequence[_builtins.str] private_dns_specified_domains: List of private domains to create private hosted zones for and associate with the specified VPC.
25494
25526
  """
25495
25527
  pulumi.set(__self__, "dns_record_ip_type", dns_record_ip_type)
25496
25528
  pulumi.set(__self__, "private_dns_only_for_inbound_resolver_endpoint", private_dns_only_for_inbound_resolver_endpoint)
25529
+ pulumi.set(__self__, "private_dns_preference", private_dns_preference)
25530
+ pulumi.set(__self__, "private_dns_specified_domains", private_dns_specified_domains)
25497
25531
 
25498
25532
  @_builtins.property
25499
25533
  @pulumi.getter(name="dnsRecordIpType")
@@ -25511,6 +25545,22 @@ class GetVpcEndpointDnsOptionResult(dict):
25511
25545
  """
25512
25546
  return pulumi.get(self, "private_dns_only_for_inbound_resolver_endpoint")
25513
25547
 
25548
+ @_builtins.property
25549
+ @pulumi.getter(name="privateDnsPreference")
25550
+ def private_dns_preference(self) -> _builtins.str:
25551
+ """
25552
+ Preference for which private domains have a private hosted zone created for and associated with the specified VPC.
25553
+ """
25554
+ return pulumi.get(self, "private_dns_preference")
25555
+
25556
+ @_builtins.property
25557
+ @pulumi.getter(name="privateDnsSpecifiedDomains")
25558
+ def private_dns_specified_domains(self) -> Sequence[_builtins.str]:
25559
+ """
25560
+ List of private domains to create private hosted zones for and associate with the specified VPC.
25561
+ """
25562
+ return pulumi.get(self, "private_dns_specified_domains")
25563
+
25514
25564
 
25515
25565
  @pulumi.output_type
25516
25566
  class GetVpcEndpointFilterResult(dict):
@@ -18,6 +18,7 @@ from .get_repository import *
18
18
  from .get_repository_creation_template import *
19
19
  from .lifecycle_policy import *
20
20
  from .pull_through_cache_rule import *
21
+ from .pull_time_update_exclusion import *
21
22
  from .registry_policy import *
22
23
  from .registry_scanning_configuration import *
23
24
  from .replication_configuration import *
pulumi_aws/ecr/_inputs.py CHANGED
@@ -890,11 +890,11 @@ if not MYPY:
890
890
  class GetLifecyclePolicyDocumentRuleArgsDict(TypedDict):
891
891
  priority: _builtins.int
892
892
  """
893
- Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of "any" must have the highest value for `priority` and be evaluated last.
893
+ Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of `any` must have the highest value for `priority` and be evaluated last.
894
894
  """
895
895
  action: NotRequired['GetLifecyclePolicyDocumentRuleActionArgsDict']
896
896
  """
897
- Specifies the action type.
897
+ Specifies the action to take.
898
898
  """
899
899
  description: NotRequired[_builtins.str]
900
900
  """
@@ -915,8 +915,8 @@ class GetLifecyclePolicyDocumentRuleArgs:
915
915
  description: Optional[_builtins.str] = None,
916
916
  selection: Optional['GetLifecyclePolicyDocumentRuleSelectionArgs'] = None):
917
917
  """
918
- :param _builtins.int priority: Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of "any" must have the highest value for `priority` and be evaluated last.
919
- :param 'GetLifecyclePolicyDocumentRuleActionArgs' action: Specifies the action type.
918
+ :param _builtins.int priority: Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of `any` must have the highest value for `priority` and be evaluated last.
919
+ :param 'GetLifecyclePolicyDocumentRuleActionArgs' action: Specifies the action to take.
920
920
  :param _builtins.str description: Describes the purpose of a rule within a lifecycle policy.
921
921
  :param 'GetLifecyclePolicyDocumentRuleSelectionArgs' selection: Collects parameters describing the selection criteria for the ECR lifecycle policy:
922
922
  """
@@ -932,7 +932,7 @@ class GetLifecyclePolicyDocumentRuleArgs:
932
932
  @pulumi.getter
933
933
  def priority(self) -> _builtins.int:
934
934
  """
935
- Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of "any" must have the highest value for `priority` and be evaluated last.
935
+ Sets the order in which rules are evaluated, lowest to highest. When you add rules to a lifecycle policy, you must give them each a unique value for `priority`. Values do not need to be sequential across rules in a policy. A rule with a `tag_status` value of `any` must have the highest value for `priority` and be evaluated last.
936
936
  """
937
937
  return pulumi.get(self, "priority")
938
938
 
@@ -944,7 +944,7 @@ class GetLifecyclePolicyDocumentRuleArgs:
944
944
  @pulumi.getter
945
945
  def action(self) -> Optional['GetLifecyclePolicyDocumentRuleActionArgs']:
946
946
  """
947
- Specifies the action type.
947
+ Specifies the action to take.
948
948
  """
949
949
  return pulumi.get(self, "action")
950
950
 
@@ -981,25 +981,32 @@ if not MYPY:
981
981
  class GetLifecyclePolicyDocumentRuleActionArgsDict(TypedDict):
982
982
  type: _builtins.str
983
983
  """
984
- The supported value is `expire`.
984
+ Specify an action type. The supported values are `expire` (to delete images) and `transition` (to move images to archive storage).
985
+ * `targetStorageClass` (Required if `type` is `transition`) - The storage class you want the lifecycle policy to transition the image to. `archive` is the only supported value.
985
986
  """
987
+ target_storage_class: NotRequired[_builtins.str]
986
988
  elif False:
987
989
  GetLifecyclePolicyDocumentRuleActionArgsDict: TypeAlias = Mapping[str, Any]
988
990
 
989
991
  @pulumi.input_type
990
992
  class GetLifecyclePolicyDocumentRuleActionArgs:
991
993
  def __init__(__self__, *,
992
- type: _builtins.str):
994
+ type: _builtins.str,
995
+ target_storage_class: Optional[_builtins.str] = None):
993
996
  """
994
- :param _builtins.str type: The supported value is `expire`.
997
+ :param _builtins.str type: Specify an action type. The supported values are `expire` (to delete images) and `transition` (to move images to archive storage).
998
+ * `targetStorageClass` (Required if `type` is `transition`) - The storage class you want the lifecycle policy to transition the image to. `archive` is the only supported value.
995
999
  """
996
1000
  pulumi.set(__self__, "type", type)
1001
+ if target_storage_class is not None:
1002
+ pulumi.set(__self__, "target_storage_class", target_storage_class)
997
1003
 
998
1004
  @_builtins.property
999
1005
  @pulumi.getter
1000
1006
  def type(self) -> _builtins.str:
1001
1007
  """
1002
- The supported value is `expire`.
1008
+ Specify an action type. The supported values are `expire` (to delete images) and `transition` (to move images to archive storage).
1009
+ * `targetStorageClass` (Required if `type` is `transition`) - The storage class you want the lifecycle policy to transition the image to. `archive` is the only supported value.
1003
1010
  """
1004
1011
  return pulumi.get(self, "type")
1005
1012
 
@@ -1007,24 +1014,37 @@ class GetLifecyclePolicyDocumentRuleActionArgs:
1007
1014
  def type(self, value: _builtins.str):
1008
1015
  pulumi.set(self, "type", value)
1009
1016
 
1017
+ @_builtins.property
1018
+ @pulumi.getter(name="targetStorageClass")
1019
+ def target_storage_class(self) -> Optional[_builtins.str]:
1020
+ return pulumi.get(self, "target_storage_class")
1021
+
1022
+ @target_storage_class.setter
1023
+ def target_storage_class(self, value: Optional[_builtins.str]):
1024
+ pulumi.set(self, "target_storage_class", value)
1025
+
1010
1026
 
1011
1027
  if not MYPY:
1012
1028
  class GetLifecyclePolicyDocumentRuleSelectionArgsDict(TypedDict):
1013
1029
  count_number: _builtins.int
1014
1030
  """
1015
- Specify a count number. If the `count_type` used is "imageCountMoreThan", then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is "sinceImagePushed", then the value is the maximum age limit for your images.
1031
+ Specify a count number. If the `count_type` used is `imageCountMoreThan`, then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is `sinceImagePushed`, then the value is the maximum age limit for your images. If the `count_type` used is `sinceImagePulled`, then the value is the maximum number of days since the image was last pulled. If the `count_type` used is `sinceImageTransitioned`, then the value is the maximum number of days since the image was archived.
1016
1032
  """
1017
1033
  count_type: _builtins.str
1018
1034
  """
1019
- Specify a count type to apply to the images. If `count_type` is set to "imageCountMoreThan", you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to "sinceImagePushed", you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1035
+ Specify a count type to apply to the images. If `count_type` is set to `imageCountMoreThan`, you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to `sinceImagePushed`, `sinceImagePulled`, or `sinceImageTransitioned`, you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1020
1036
  """
1021
1037
  tag_status: _builtins.str
1022
1038
  """
1023
- Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are "tagged", "untagged", or "any". If you specify "any", then all images have the rule applied to them. If you specify "tagged", then you must also specify a `tag_prefix_list` value. If you specify "untagged", then you must omit `tag_prefix_list`.
1039
+ Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are `tagged`, `untagged`, or `any`. If you specify `any`, then all images have the rule evaluated against them. If you specify `tagged`, then you must also specify a `tag_prefix_list` value or a `tag_pattern_list` value. If you specify `untagged`, then you must omit both `tag_prefix_list` and `tag_pattern_list`.
1024
1040
  """
1025
1041
  count_unit: NotRequired[_builtins.str]
1026
1042
  """
1027
- Specify a count unit of days to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1043
+ Specify a count unit of `days` to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1044
+ """
1045
+ storage_class: NotRequired[_builtins.str]
1046
+ """
1047
+ The rule will only select images of this storage class. When using a `count_type` of `imageCountMoreThan`, `sinceImagePushed`, or `sinceImagePulled`, the only supported value is `standard`. When using a `count_type` of `sinceImageTransitioned`, this is required, and the only supported value is `archive`. If you omit this, the value of `standard` will be used.
1028
1048
  """
1029
1049
  tag_pattern_lists: NotRequired[Sequence[_builtins.str]]
1030
1050
  """
@@ -1044,13 +1064,15 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1044
1064
  count_type: _builtins.str,
1045
1065
  tag_status: _builtins.str,
1046
1066
  count_unit: Optional[_builtins.str] = None,
1067
+ storage_class: Optional[_builtins.str] = None,
1047
1068
  tag_pattern_lists: Optional[Sequence[_builtins.str]] = None,
1048
1069
  tag_prefix_lists: Optional[Sequence[_builtins.str]] = None):
1049
1070
  """
1050
- :param _builtins.int count_number: Specify a count number. If the `count_type` used is "imageCountMoreThan", then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is "sinceImagePushed", then the value is the maximum age limit for your images.
1051
- :param _builtins.str count_type: Specify a count type to apply to the images. If `count_type` is set to "imageCountMoreThan", you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to "sinceImagePushed", you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1052
- :param _builtins.str tag_status: Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are "tagged", "untagged", or "any". If you specify "any", then all images have the rule applied to them. If you specify "tagged", then you must also specify a `tag_prefix_list` value. If you specify "untagged", then you must omit `tag_prefix_list`.
1053
- :param _builtins.str count_unit: Specify a count unit of days to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1071
+ :param _builtins.int count_number: Specify a count number. If the `count_type` used is `imageCountMoreThan`, then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is `sinceImagePushed`, then the value is the maximum age limit for your images. If the `count_type` used is `sinceImagePulled`, then the value is the maximum number of days since the image was last pulled. If the `count_type` used is `sinceImageTransitioned`, then the value is the maximum number of days since the image was archived.
1072
+ :param _builtins.str count_type: Specify a count type to apply to the images. If `count_type` is set to `imageCountMoreThan`, you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to `sinceImagePushed`, `sinceImagePulled`, or `sinceImageTransitioned`, you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1073
+ :param _builtins.str tag_status: Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are `tagged`, `untagged`, or `any`. If you specify `any`, then all images have the rule evaluated against them. If you specify `tagged`, then you must also specify a `tag_prefix_list` value or a `tag_pattern_list` value. If you specify `untagged`, then you must omit both `tag_prefix_list` and `tag_pattern_list`.
1074
+ :param _builtins.str count_unit: Specify a count unit of `days` to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1075
+ :param _builtins.str storage_class: The rule will only select images of this storage class. When using a `count_type` of `imageCountMoreThan`, `sinceImagePushed`, or `sinceImagePulled`, the only supported value is `standard`. When using a `count_type` of `sinceImageTransitioned`, this is required, and the only supported value is `archive`. If you omit this, the value of `standard` will be used.
1054
1076
  :param Sequence[_builtins.str] tag_pattern_lists: You must specify a comma-separated list of image tag patterns that may contain wildcards (\\*) on which to take action with your lifecycle policy. For example, if your images are tagged as `prod`, `prod1`, `prod2`, and so on, you would use the tag pattern list `["prod\\*"]` to specify all of them. If you specify multiple tags, only the images with all specified tags are selected. There is a maximum limit of four wildcards (\\*) per string. For example, `["*test*1*2*3", "test*1*2*3*"]` is valid but `["test*1*2*3*4*5*6"]` is invalid.
1055
1077
  :param Sequence[_builtins.str] tag_prefix_lists: You must specify a comma-separated list of image tag prefixes on which to take action with your lifecycle policy. For example, if your images are tagged as `prod`, `prod1`, `prod2`, and so on, you would use the tag prefix "prod" to specify all of them. If you specify multiple tags, only images with all specified tags are selected.
1056
1078
  """
@@ -1059,6 +1081,8 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1059
1081
  pulumi.set(__self__, "tag_status", tag_status)
1060
1082
  if count_unit is not None:
1061
1083
  pulumi.set(__self__, "count_unit", count_unit)
1084
+ if storage_class is not None:
1085
+ pulumi.set(__self__, "storage_class", storage_class)
1062
1086
  if tag_pattern_lists is not None:
1063
1087
  pulumi.set(__self__, "tag_pattern_lists", tag_pattern_lists)
1064
1088
  if tag_prefix_lists is not None:
@@ -1068,7 +1092,7 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1068
1092
  @pulumi.getter(name="countNumber")
1069
1093
  def count_number(self) -> _builtins.int:
1070
1094
  """
1071
- Specify a count number. If the `count_type` used is "imageCountMoreThan", then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is "sinceImagePushed", then the value is the maximum age limit for your images.
1095
+ Specify a count number. If the `count_type` used is `imageCountMoreThan`, then the value is the maximum number of images that you want to retain in your repository. If the `count_type` used is `sinceImagePushed`, then the value is the maximum age limit for your images. If the `count_type` used is `sinceImagePulled`, then the value is the maximum number of days since the image was last pulled. If the `count_type` used is `sinceImageTransitioned`, then the value is the maximum number of days since the image was archived.
1072
1096
  """
1073
1097
  return pulumi.get(self, "count_number")
1074
1098
 
@@ -1080,7 +1104,7 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1080
1104
  @pulumi.getter(name="countType")
1081
1105
  def count_type(self) -> _builtins.str:
1082
1106
  """
1083
- Specify a count type to apply to the images. If `count_type` is set to "imageCountMoreThan", you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to "sinceImagePushed", you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1107
+ Specify a count type to apply to the images. If `count_type` is set to `imageCountMoreThan`, you also specify `count_number` to create a rule that sets a limit on the number of images that exist in your repository. If `count_type` is set to `sinceImagePushed`, `sinceImagePulled`, or `sinceImageTransitioned`, you also specify `count_unit` and `count_number` to specify a time limit on the images that exist in your repository.
1084
1108
  """
1085
1109
  return pulumi.get(self, "count_type")
1086
1110
 
@@ -1092,7 +1116,7 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1092
1116
  @pulumi.getter(name="tagStatus")
1093
1117
  def tag_status(self) -> _builtins.str:
1094
1118
  """
1095
- Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are "tagged", "untagged", or "any". If you specify "any", then all images have the rule applied to them. If you specify "tagged", then you must also specify a `tag_prefix_list` value. If you specify "untagged", then you must omit `tag_prefix_list`.
1119
+ Determines whether the lifecycle policy rule that you are adding specifies a tag for an image. Acceptable options are `tagged`, `untagged`, or `any`. If you specify `any`, then all images have the rule evaluated against them. If you specify `tagged`, then you must also specify a `tag_prefix_list` value or a `tag_pattern_list` value. If you specify `untagged`, then you must omit both `tag_prefix_list` and `tag_pattern_list`.
1096
1120
  """
1097
1121
  return pulumi.get(self, "tag_status")
1098
1122
 
@@ -1104,7 +1128,7 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1104
1128
  @pulumi.getter(name="countUnit")
1105
1129
  def count_unit(self) -> Optional[_builtins.str]:
1106
1130
  """
1107
- Specify a count unit of days to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1131
+ Specify a count unit of `days` to indicate that as the unit of time, in addition to `count_number`, which is the number of days.
1108
1132
  """
1109
1133
  return pulumi.get(self, "count_unit")
1110
1134
 
@@ -1112,6 +1136,18 @@ class GetLifecyclePolicyDocumentRuleSelectionArgs:
1112
1136
  def count_unit(self, value: Optional[_builtins.str]):
1113
1137
  pulumi.set(self, "count_unit", value)
1114
1138
 
1139
+ @_builtins.property
1140
+ @pulumi.getter(name="storageClass")
1141
+ def storage_class(self) -> Optional[_builtins.str]:
1142
+ """
1143
+ The rule will only select images of this storage class. When using a `count_type` of `imageCountMoreThan`, `sinceImagePushed`, or `sinceImagePulled`, the only supported value is `standard`. When using a `count_type` of `sinceImageTransitioned`, this is required, and the only supported value is `archive`. If you omit this, the value of `standard` will be used.
1144
+ """
1145
+ return pulumi.get(self, "storage_class")
1146
+
1147
+ @storage_class.setter
1148
+ def storage_class(self, value: Optional[_builtins.str]):
1149
+ pulumi.set(self, "storage_class", value)
1150
+
1115
1151
  @_builtins.property
1116
1152
  @pulumi.getter(name="tagPatternLists")
1117
1153
  def tag_pattern_lists(self) -> Optional[Sequence[_builtins.str]]:
@@ -72,7 +72,7 @@ class GetRepositoryCreationTemplateResult:
72
72
  @pulumi.getter(name="appliedFors")
73
73
  def applied_fors(self) -> Sequence[_builtins.str]:
74
74
  """
75
- Which features this template applies to. Contains one or more of `PULL_THROUGH_CACHE` or `REPLICATION`.
75
+ Which features this template applies to. Contains one or more of `CREATE_ON_PUSH`, `PULL_THROUGH_CACHE`, or `REPLICATION`.
76
76
  """
77
77
  return pulumi.get(self, "applied_fors")
78
78
 
@@ -163,7 +163,7 @@ class LifecyclePolicy(pulumi.CustomResource):
163
163
 
164
164
  ## Example Usage
165
165
 
166
- ### Policy on untagged image
166
+ ### Policy on Untagged Images
167
167
 
168
168
  ```python
169
169
  import pulumi
@@ -173,26 +173,26 @@ class LifecyclePolicy(pulumi.CustomResource):
173
173
  example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
174
174
  repository=example.name,
175
175
  policy=\"\"\"{
176
- \\"rules\\": [
177
- {
178
- \\"rulePriority\\": 1,
179
- \\"description\\": \\"Expire images older than 14 days\\",
180
- \\"selection\\": {
181
- \\"tagStatus\\": \\"untagged\\",
182
- \\"countType\\": \\"sinceImagePushed\\",
183
- \\"countUnit\\": \\"days\\",
184
- \\"countNumber\\": 14
185
- },
186
- \\"action\\": {
187
- \\"type\\": \\"expire\\"
188
- }
189
- }
190
- ]
176
+ \\"rules\\": [
177
+ {
178
+ \\"rulePriority\\": 1,
179
+ \\"description\\": \\"Expire images older than 14 days\\",
180
+ \\"selection\\": {
181
+ \\"tagStatus\\": \\"untagged\\",
182
+ \\"countType\\": \\"sinceImagePushed\\",
183
+ \\"countUnit\\": \\"days\\",
184
+ \\"countNumber\\": 14
185
+ },
186
+ \\"action\\": {
187
+ \\"type\\": \\"expire\\"
188
+ }
189
+ }
190
+ ]
191
191
  }
192
192
  \"\"\")
193
193
  ```
194
194
 
195
- ### Policy on tagged image
195
+ ### Policy on Tagged Images
196
196
 
197
197
  ```python
198
198
  import pulumi
@@ -202,21 +202,65 @@ class LifecyclePolicy(pulumi.CustomResource):
202
202
  example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
203
203
  repository=example.name,
204
204
  policy=\"\"\"{
205
- \\"rules\\": [
206
- {
207
- \\"rulePriority\\": 1,
208
- \\"description\\": \\"Keep last 30 images\\",
209
- \\"selection\\": {
210
- \\"tagStatus\\": \\"tagged\\",
211
- \\"tagPrefixList\\": [\\"v\\"],
212
- \\"countType\\": \\"imageCountMoreThan\\",
213
- \\"countNumber\\": 30
214
- },
215
- \\"action\\": {
216
- \\"type\\": \\"expire\\"
217
- }
218
- }
219
- ]
205
+ \\"rules\\": [
206
+ {
207
+ \\"rulePriority\\": 1,
208
+ \\"description\\": \\"Keep last 30 images\\",
209
+ \\"selection\\": {
210
+ \\"tagStatus\\": \\"tagged\\",
211
+ \\"tagPrefixList\\": [\\"v\\"],
212
+ \\"countType\\": \\"imageCountMoreThan\\",
213
+ \\"countNumber\\": 30
214
+ },
215
+ \\"action\\": {
216
+ \\"type\\": \\"expire\\"
217
+ }
218
+ }
219
+ ]
220
+ }
221
+ \"\"\")
222
+ ```
223
+
224
+ ### Policy to Archive and Delete
225
+
226
+ ```python
227
+ import pulumi
228
+ import pulumi_aws as aws
229
+
230
+ example = aws.ecr.Repository("example", name="example-repo")
231
+ example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
232
+ repository=example.name,
233
+ policy=\"\"\"{
234
+ \\"rules\\": [
235
+ {
236
+ \\"rulePriority\\": 1,
237
+ \\"description\\": \\"Archive images not pulled in 90 days\\",
238
+ \\"selection\\": {
239
+ \\"tagStatus\\": \\"any\\",
240
+ \\"countType\\": \\"sinceImagePulled\\",
241
+ \\"countUnit\\": \\"days\\",
242
+ \\"countNumber\\": 90
243
+ },
244
+ \\"action\\": {
245
+ \\"type\\": \\"transition\\",
246
+ \\"targetStorageClass\\": \\"archive\\"
247
+ }
248
+ },
249
+ {
250
+ \\"rulePriority\\": 2,
251
+ \\"description\\": \\"Delete images archived for more than 365 days\\",
252
+ \\"selection\\": {
253
+ \\"tagStatus\\": \\"any\\",
254
+ \\"storageClass\\": \\"archive\\",
255
+ \\"countType\\": \\"sinceImageTransitioned\\",
256
+ \\"countUnit\\": \\"days\\",
257
+ \\"countNumber\\": 365
258
+ },
259
+ \\"action\\": {
260
+ \\"type\\": \\"expire\\"
261
+ }
262
+ }
263
+ ]
220
264
  }
221
265
  \"\"\")
222
266
  ```
@@ -260,7 +304,36 @@ class LifecyclePolicy(pulumi.CustomResource):
260
304
 
261
305
  ## Example Usage
262
306
 
263
- ### Policy on untagged image
307
+ ### Policy on Untagged Images
308
+
309
+ ```python
310
+ import pulumi
311
+ import pulumi_aws as aws
312
+
313
+ example = aws.ecr.Repository("example", name="example-repo")
314
+ example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
315
+ repository=example.name,
316
+ policy=\"\"\"{
317
+ \\"rules\\": [
318
+ {
319
+ \\"rulePriority\\": 1,
320
+ \\"description\\": \\"Expire images older than 14 days\\",
321
+ \\"selection\\": {
322
+ \\"tagStatus\\": \\"untagged\\",
323
+ \\"countType\\": \\"sinceImagePushed\\",
324
+ \\"countUnit\\": \\"days\\",
325
+ \\"countNumber\\": 14
326
+ },
327
+ \\"action\\": {
328
+ \\"type\\": \\"expire\\"
329
+ }
330
+ }
331
+ ]
332
+ }
333
+ \"\"\")
334
+ ```
335
+
336
+ ### Policy on Tagged Images
264
337
 
265
338
  ```python
266
339
  import pulumi
@@ -270,26 +343,26 @@ class LifecyclePolicy(pulumi.CustomResource):
270
343
  example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
271
344
  repository=example.name,
272
345
  policy=\"\"\"{
273
- \\"rules\\": [
274
- {
275
- \\"rulePriority\\": 1,
276
- \\"description\\": \\"Expire images older than 14 days\\",
277
- \\"selection\\": {
278
- \\"tagStatus\\": \\"untagged\\",
279
- \\"countType\\": \\"sinceImagePushed\\",
280
- \\"countUnit\\": \\"days\\",
281
- \\"countNumber\\": 14
282
- },
283
- \\"action\\": {
284
- \\"type\\": \\"expire\\"
285
- }
286
- }
287
- ]
346
+ \\"rules\\": [
347
+ {
348
+ \\"rulePriority\\": 1,
349
+ \\"description\\": \\"Keep last 30 images\\",
350
+ \\"selection\\": {
351
+ \\"tagStatus\\": \\"tagged\\",
352
+ \\"tagPrefixList\\": [\\"v\\"],
353
+ \\"countType\\": \\"imageCountMoreThan\\",
354
+ \\"countNumber\\": 30
355
+ },
356
+ \\"action\\": {
357
+ \\"type\\": \\"expire\\"
358
+ }
359
+ }
360
+ ]
288
361
  }
289
362
  \"\"\")
290
363
  ```
291
364
 
292
- ### Policy on tagged image
365
+ ### Policy to Archive and Delete
293
366
 
294
367
  ```python
295
368
  import pulumi
@@ -299,21 +372,36 @@ class LifecyclePolicy(pulumi.CustomResource):
299
372
  example_lifecycle_policy = aws.ecr.LifecyclePolicy("example",
300
373
  repository=example.name,
301
374
  policy=\"\"\"{
302
- \\"rules\\": [
303
- {
304
- \\"rulePriority\\": 1,
305
- \\"description\\": \\"Keep last 30 images\\",
306
- \\"selection\\": {
307
- \\"tagStatus\\": \\"tagged\\",
308
- \\"tagPrefixList\\": [\\"v\\"],
309
- \\"countType\\": \\"imageCountMoreThan\\",
310
- \\"countNumber\\": 30
311
- },
312
- \\"action\\": {
313
- \\"type\\": \\"expire\\"
314
- }
315
- }
316
- ]
375
+ \\"rules\\": [
376
+ {
377
+ \\"rulePriority\\": 1,
378
+ \\"description\\": \\"Archive images not pulled in 90 days\\",
379
+ \\"selection\\": {
380
+ \\"tagStatus\\": \\"any\\",
381
+ \\"countType\\": \\"sinceImagePulled\\",
382
+ \\"countUnit\\": \\"days\\",
383
+ \\"countNumber\\": 90
384
+ },
385
+ \\"action\\": {
386
+ \\"type\\": \\"transition\\",
387
+ \\"targetStorageClass\\": \\"archive\\"
388
+ }
389
+ },
390
+ {
391
+ \\"rulePriority\\": 2,
392
+ \\"description\\": \\"Delete images archived for more than 365 days\\",
393
+ \\"selection\\": {
394
+ \\"tagStatus\\": \\"any\\",
395
+ \\"storageClass\\": \\"archive\\",
396
+ \\"countType\\": \\"sinceImageTransitioned\\",
397
+ \\"countUnit\\": \\"days\\",
398
+ \\"countNumber\\": 365
399
+ },
400
+ \\"action\\": {
401
+ \\"type\\": \\"expire\\"
402
+ }
403
+ }
404
+ ]
317
405
  }
318
406
  \"\"\")
319
407
  ```