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
@@ -16,6 +16,12 @@ from .. import _utilities
16
16
  from . import outputs
17
17
 
18
18
  __all__ = [
19
+ 'GlobalSecondaryIndexKeySchema',
20
+ 'GlobalSecondaryIndexOnDemandThroughput',
21
+ 'GlobalSecondaryIndexProjection',
22
+ 'GlobalSecondaryIndexProvisionedThroughput',
23
+ 'GlobalSecondaryIndexTimeouts',
24
+ 'GlobalSecondaryIndexWarmThroughput',
19
25
  'GlobalTableReplica',
20
26
  'TableAttribute',
21
27
  'TableExportIncrementalExportSpecification',
@@ -47,6 +53,315 @@ __all__ = [
47
53
  'GetTableWarmThroughputResult',
48
54
  ]
49
55
 
56
+ @pulumi.output_type
57
+ class GlobalSecondaryIndexKeySchema(dict):
58
+ @staticmethod
59
+ def __key_warning(key: str):
60
+ suggest = None
61
+ if key == "attributeName":
62
+ suggest = "attribute_name"
63
+ elif key == "attributeType":
64
+ suggest = "attribute_type"
65
+ elif key == "keyType":
66
+ suggest = "key_type"
67
+
68
+ if suggest:
69
+ pulumi.log.warn(f"Key '{key}' not found in GlobalSecondaryIndexKeySchema. Access the value via the '{suggest}' property getter instead.")
70
+
71
+ def __getitem__(self, key: str) -> Any:
72
+ GlobalSecondaryIndexKeySchema.__key_warning(key)
73
+ return super().__getitem__(key)
74
+
75
+ def get(self, key: str, default = None) -> Any:
76
+ GlobalSecondaryIndexKeySchema.__key_warning(key)
77
+ return super().get(key, default)
78
+
79
+ def __init__(__self__, *,
80
+ attribute_name: _builtins.str,
81
+ attribute_type: _builtins.str,
82
+ key_type: _builtins.str):
83
+ """
84
+ :param _builtins.str attribute_name: Name of the attribute.
85
+ :param _builtins.str attribute_type: Type of the attribute in the index.
86
+ Valid values are `S` (string), `N` (number), or `B` (binary).
87
+ :param _builtins.str key_type: Key type.
88
+ Valid values are `HASH` or `RANGE`.
89
+ """
90
+ pulumi.set(__self__, "attribute_name", attribute_name)
91
+ pulumi.set(__self__, "attribute_type", attribute_type)
92
+ pulumi.set(__self__, "key_type", key_type)
93
+
94
+ @_builtins.property
95
+ @pulumi.getter(name="attributeName")
96
+ def attribute_name(self) -> _builtins.str:
97
+ """
98
+ Name of the attribute.
99
+ """
100
+ return pulumi.get(self, "attribute_name")
101
+
102
+ @_builtins.property
103
+ @pulumi.getter(name="attributeType")
104
+ def attribute_type(self) -> _builtins.str:
105
+ """
106
+ Type of the attribute in the index.
107
+ Valid values are `S` (string), `N` (number), or `B` (binary).
108
+ """
109
+ return pulumi.get(self, "attribute_type")
110
+
111
+ @_builtins.property
112
+ @pulumi.getter(name="keyType")
113
+ def key_type(self) -> _builtins.str:
114
+ """
115
+ Key type.
116
+ Valid values are `HASH` or `RANGE`.
117
+ """
118
+ return pulumi.get(self, "key_type")
119
+
120
+
121
+ @pulumi.output_type
122
+ class GlobalSecondaryIndexOnDemandThroughput(dict):
123
+ @staticmethod
124
+ def __key_warning(key: str):
125
+ suggest = None
126
+ if key == "maxReadRequestUnits":
127
+ suggest = "max_read_request_units"
128
+ elif key == "maxWriteRequestUnits":
129
+ suggest = "max_write_request_units"
130
+
131
+ if suggest:
132
+ pulumi.log.warn(f"Key '{key}' not found in GlobalSecondaryIndexOnDemandThroughput. Access the value via the '{suggest}' property getter instead.")
133
+
134
+ def __getitem__(self, key: str) -> Any:
135
+ GlobalSecondaryIndexOnDemandThroughput.__key_warning(key)
136
+ return super().__getitem__(key)
137
+
138
+ def get(self, key: str, default = None) -> Any:
139
+ GlobalSecondaryIndexOnDemandThroughput.__key_warning(key)
140
+ return super().get(key, default)
141
+
142
+ def __init__(__self__, *,
143
+ max_read_request_units: Optional[_builtins.int] = None,
144
+ max_write_request_units: Optional[_builtins.int] = None):
145
+ """
146
+ :param _builtins.int max_read_request_units: Maximum number of read request units for this index.
147
+ :param _builtins.int max_write_request_units: Maximum number of write request units for this index.
148
+ """
149
+ if max_read_request_units is not None:
150
+ pulumi.set(__self__, "max_read_request_units", max_read_request_units)
151
+ if max_write_request_units is not None:
152
+ pulumi.set(__self__, "max_write_request_units", max_write_request_units)
153
+
154
+ @_builtins.property
155
+ @pulumi.getter(name="maxReadRequestUnits")
156
+ def max_read_request_units(self) -> Optional[_builtins.int]:
157
+ """
158
+ Maximum number of read request units for this index.
159
+ """
160
+ return pulumi.get(self, "max_read_request_units")
161
+
162
+ @_builtins.property
163
+ @pulumi.getter(name="maxWriteRequestUnits")
164
+ def max_write_request_units(self) -> Optional[_builtins.int]:
165
+ """
166
+ Maximum number of write request units for this index.
167
+ """
168
+ return pulumi.get(self, "max_write_request_units")
169
+
170
+
171
+ @pulumi.output_type
172
+ class GlobalSecondaryIndexProjection(dict):
173
+ @staticmethod
174
+ def __key_warning(key: str):
175
+ suggest = None
176
+ if key == "projectionType":
177
+ suggest = "projection_type"
178
+ elif key == "nonKeyAttributes":
179
+ suggest = "non_key_attributes"
180
+
181
+ if suggest:
182
+ pulumi.log.warn(f"Key '{key}' not found in GlobalSecondaryIndexProjection. Access the value via the '{suggest}' property getter instead.")
183
+
184
+ def __getitem__(self, key: str) -> Any:
185
+ GlobalSecondaryIndexProjection.__key_warning(key)
186
+ return super().__getitem__(key)
187
+
188
+ def get(self, key: str, default = None) -> Any:
189
+ GlobalSecondaryIndexProjection.__key_warning(key)
190
+ return super().get(key, default)
191
+
192
+ def __init__(__self__, *,
193
+ projection_type: _builtins.str,
194
+ non_key_attributes: Optional[Sequence[_builtins.str]] = None):
195
+ """
196
+ :param _builtins.str projection_type: The set of attributes represented in the index.
197
+ One of `ALL`, `INCLUDE`, or `KEYS_ONLY`.
198
+ :param Sequence[_builtins.str] non_key_attributes: Specifies which additional attributes to include in the index.
199
+ Only valid when `projection_type` is `INCLUDE`.`
200
+ """
201
+ pulumi.set(__self__, "projection_type", projection_type)
202
+ if non_key_attributes is not None:
203
+ pulumi.set(__self__, "non_key_attributes", non_key_attributes)
204
+
205
+ @_builtins.property
206
+ @pulumi.getter(name="projectionType")
207
+ def projection_type(self) -> _builtins.str:
208
+ """
209
+ The set of attributes represented in the index.
210
+ One of `ALL`, `INCLUDE`, or `KEYS_ONLY`.
211
+ """
212
+ return pulumi.get(self, "projection_type")
213
+
214
+ @_builtins.property
215
+ @pulumi.getter(name="nonKeyAttributes")
216
+ def non_key_attributes(self) -> Optional[Sequence[_builtins.str]]:
217
+ """
218
+ Specifies which additional attributes to include in the index.
219
+ Only valid when `projection_type` is `INCLUDE`.`
220
+ """
221
+ return pulumi.get(self, "non_key_attributes")
222
+
223
+
224
+ @pulumi.output_type
225
+ class GlobalSecondaryIndexProvisionedThroughput(dict):
226
+ @staticmethod
227
+ def __key_warning(key: str):
228
+ suggest = None
229
+ if key == "readCapacityUnits":
230
+ suggest = "read_capacity_units"
231
+ elif key == "writeCapacityUnits":
232
+ suggest = "write_capacity_units"
233
+
234
+ if suggest:
235
+ pulumi.log.warn(f"Key '{key}' not found in GlobalSecondaryIndexProvisionedThroughput. Access the value via the '{suggest}' property getter instead.")
236
+
237
+ def __getitem__(self, key: str) -> Any:
238
+ GlobalSecondaryIndexProvisionedThroughput.__key_warning(key)
239
+ return super().__getitem__(key)
240
+
241
+ def get(self, key: str, default = None) -> Any:
242
+ GlobalSecondaryIndexProvisionedThroughput.__key_warning(key)
243
+ return super().get(key, default)
244
+
245
+ def __init__(__self__, *,
246
+ read_capacity_units: Optional[_builtins.int] = None,
247
+ write_capacity_units: Optional[_builtins.int] = None):
248
+ """
249
+ :param _builtins.int read_capacity_units: Number of read capacity units for this index.
250
+ :param _builtins.int write_capacity_units: Number of write capacity units for this index.
251
+ """
252
+ if read_capacity_units is not None:
253
+ pulumi.set(__self__, "read_capacity_units", read_capacity_units)
254
+ if write_capacity_units is not None:
255
+ pulumi.set(__self__, "write_capacity_units", write_capacity_units)
256
+
257
+ @_builtins.property
258
+ @pulumi.getter(name="readCapacityUnits")
259
+ def read_capacity_units(self) -> Optional[_builtins.int]:
260
+ """
261
+ Number of read capacity units for this index.
262
+ """
263
+ return pulumi.get(self, "read_capacity_units")
264
+
265
+ @_builtins.property
266
+ @pulumi.getter(name="writeCapacityUnits")
267
+ def write_capacity_units(self) -> Optional[_builtins.int]:
268
+ """
269
+ Number of write capacity units for this index.
270
+ """
271
+ return pulumi.get(self, "write_capacity_units")
272
+
273
+
274
+ @pulumi.output_type
275
+ class GlobalSecondaryIndexTimeouts(dict):
276
+ def __init__(__self__, *,
277
+ create: Optional[_builtins.str] = None,
278
+ delete: Optional[_builtins.str] = None,
279
+ update: Optional[_builtins.str] = None):
280
+ """
281
+ :param _builtins.str create: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
282
+ :param _builtins.str delete: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
283
+ :param _builtins.str update: A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
284
+ """
285
+ if create is not None:
286
+ pulumi.set(__self__, "create", create)
287
+ if delete is not None:
288
+ pulumi.set(__self__, "delete", delete)
289
+ if update is not None:
290
+ pulumi.set(__self__, "update", update)
291
+
292
+ @_builtins.property
293
+ @pulumi.getter
294
+ def create(self) -> Optional[_builtins.str]:
295
+ """
296
+ A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
297
+ """
298
+ return pulumi.get(self, "create")
299
+
300
+ @_builtins.property
301
+ @pulumi.getter
302
+ def delete(self) -> Optional[_builtins.str]:
303
+ """
304
+ A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
305
+ """
306
+ return pulumi.get(self, "delete")
307
+
308
+ @_builtins.property
309
+ @pulumi.getter
310
+ def update(self) -> Optional[_builtins.str]:
311
+ """
312
+ A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
313
+ """
314
+ return pulumi.get(self, "update")
315
+
316
+
317
+ @pulumi.output_type
318
+ class GlobalSecondaryIndexWarmThroughput(dict):
319
+ @staticmethod
320
+ def __key_warning(key: str):
321
+ suggest = None
322
+ if key == "readUnitsPerSecond":
323
+ suggest = "read_units_per_second"
324
+ elif key == "writeUnitsPerSecond":
325
+ suggest = "write_units_per_second"
326
+
327
+ if suggest:
328
+ pulumi.log.warn(f"Key '{key}' not found in GlobalSecondaryIndexWarmThroughput. Access the value via the '{suggest}' property getter instead.")
329
+
330
+ def __getitem__(self, key: str) -> Any:
331
+ GlobalSecondaryIndexWarmThroughput.__key_warning(key)
332
+ return super().__getitem__(key)
333
+
334
+ def get(self, key: str, default = None) -> Any:
335
+ GlobalSecondaryIndexWarmThroughput.__key_warning(key)
336
+ return super().get(key, default)
337
+
338
+ def __init__(__self__, *,
339
+ read_units_per_second: _builtins.int,
340
+ write_units_per_second: _builtins.int):
341
+ """
342
+ :param _builtins.int read_units_per_second: Number of read operations this index can instantaneously support.
343
+ :param _builtins.int write_units_per_second: Number of write operations this index can instantaneously support.
344
+ """
345
+ pulumi.set(__self__, "read_units_per_second", read_units_per_second)
346
+ pulumi.set(__self__, "write_units_per_second", write_units_per_second)
347
+
348
+ @_builtins.property
349
+ @pulumi.getter(name="readUnitsPerSecond")
350
+ def read_units_per_second(self) -> _builtins.int:
351
+ """
352
+ Number of read operations this index can instantaneously support.
353
+ """
354
+ return pulumi.get(self, "read_units_per_second")
355
+
356
+ @_builtins.property
357
+ @pulumi.getter(name="writeUnitsPerSecond")
358
+ def write_units_per_second(self) -> _builtins.int:
359
+ """
360
+ Number of write operations this index can instantaneously support.
361
+ """
362
+ return pulumi.get(self, "write_units_per_second")
363
+
364
+
50
365
  @pulumi.output_type
51
366
  class GlobalTableReplica(dict):
52
367
  @staticmethod
@@ -1019,6 +1019,8 @@ class Table(pulumi.CustomResource):
1019
1019
 
1020
1020
  > **Note:** When using dynamodb.TableReplica with this resource, use `lifecycle` `ignore_changes` for `replica`, _e.g._, `lifecycle { ignore_changes = [replica] }`.
1021
1021
 
1022
+ > **Note:** If autoscaling creates drift for your `global_secondary_index` blocks and/or more granular `lifecycle` management for GSIs, we recommend using the new **experimental** resource `dynamodb.GlobalSecondaryIndex`.
1023
+
1022
1024
  ## DynamoDB Table attributes
1023
1025
 
1024
1026
  Only define attributes on the table object that are going to be used as:
@@ -1028,6 +1030,8 @@ class Table(pulumi.CustomResource):
1028
1030
 
1029
1031
  The DynamoDB API expects attribute structure (name and type) to be passed along when creating or updating GSI/LSIs or creating the initial table. In these cases it expects the Hash / Range keys to be provided. Because these get re-used in numerous places (i.e the table's range key could be a part of one or more GSIs), they are stored on the table object to prevent duplication and increase consistency. If you add attributes here that are not used in these scenarios it can cause an infinite loop in planning.
1030
1032
 
1033
+ > **Note:** When using the `dynamodb.GlobalSecondaryIndex` resource, you do not need to define the attributes for externally managed GSIs in the `dynamodb.Table` resource.
1034
+
1031
1035
  ## Example Usage
1032
1036
 
1033
1037
  ### Basic Example
@@ -1269,6 +1273,8 @@ class Table(pulumi.CustomResource):
1269
1273
 
1270
1274
  > **Note:** When using dynamodb.TableReplica with this resource, use `lifecycle` `ignore_changes` for `replica`, _e.g._, `lifecycle { ignore_changes = [replica] }`.
1271
1275
 
1276
+ > **Note:** If autoscaling creates drift for your `global_secondary_index` blocks and/or more granular `lifecycle` management for GSIs, we recommend using the new **experimental** resource `dynamodb.GlobalSecondaryIndex`.
1277
+
1272
1278
  ## DynamoDB Table attributes
1273
1279
 
1274
1280
  Only define attributes on the table object that are going to be used as:
@@ -1278,6 +1284,8 @@ class Table(pulumi.CustomResource):
1278
1284
 
1279
1285
  The DynamoDB API expects attribute structure (name and type) to be passed along when creating or updating GSI/LSIs or creating the initial table. In these cases it expects the Hash / Range keys to be provided. Because these get re-used in numerous places (i.e the table's range key could be a part of one or more GSIs), they are stored on the table object to prevent duplication and increase consistency. If you add attributes here that are not used in these scenarios it can cause an infinite loop in planning.
1280
1286
 
1287
+ > **Note:** When using the `dynamodb.GlobalSecondaryIndex` resource, you do not need to define the attributes for externally managed GSIs in the `dynamodb.Table` resource.
1288
+
1281
1289
  ## Example Usage
1282
1290
 
1283
1291
  ### Basic Example
@@ -1709,7 +1717,7 @@ class Table(pulumi.CustomResource):
1709
1717
 
1710
1718
  @_builtins.property
1711
1719
  @pulumi.getter(name="globalSecondaryIndexes")
1712
- def global_secondary_indexes(self) -> pulumi.Output[Optional[Sequence['outputs.TableGlobalSecondaryIndex']]]:
1720
+ def global_secondary_indexes(self) -> pulumi.Output[Sequence['outputs.TableGlobalSecondaryIndex']]:
1713
1721
  """
1714
1722
  Describe a GSI for the table; subject to the normal limits on the number of GSIs, projected attributes, etc. See below.
1715
1723
  """
pulumi_aws/ec2/_inputs.py CHANGED
@@ -22499,7 +22499,15 @@ if not MYPY:
22499
22499
  """
22500
22500
  private_dns_only_for_inbound_resolver_endpoint: NotRequired[pulumi.Input[_builtins.bool]]
22501
22501
  """
22502
- 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`.
22502
+ 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`.
22503
+ """
22504
+ private_dns_preference: NotRequired[pulumi.Input[_builtins.str]]
22505
+ """
22506
+ 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`.
22507
+ """
22508
+ private_dns_specified_domains: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
22509
+ """
22510
+ 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.
22503
22511
  """
22504
22512
  elif False:
22505
22513
  VpcEndpointDnsOptionsArgsDict: TypeAlias = Mapping[str, Any]
@@ -22508,15 +22516,23 @@ elif False:
22508
22516
  class VpcEndpointDnsOptionsArgs:
22509
22517
  def __init__(__self__, *,
22510
22518
  dns_record_ip_type: Optional[pulumi.Input[_builtins.str]] = None,
22511
- private_dns_only_for_inbound_resolver_endpoint: Optional[pulumi.Input[_builtins.bool]] = None):
22519
+ private_dns_only_for_inbound_resolver_endpoint: Optional[pulumi.Input[_builtins.bool]] = None,
22520
+ private_dns_preference: Optional[pulumi.Input[_builtins.str]] = None,
22521
+ private_dns_specified_domains: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
22512
22522
  """
22513
22523
  :param pulumi.Input[_builtins.str] dns_record_ip_type: The DNS records created for the endpoint. Valid values are `ipv4`, `dualstack`, `service-defined`, and `ipv6`.
22514
- :param pulumi.Input[_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`.
22524
+ :param pulumi.Input[_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`.
22525
+ :param pulumi.Input[_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`.
22526
+ :param pulumi.Input[Sequence[pulumi.Input[_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.
22515
22527
  """
22516
22528
  if dns_record_ip_type is not None:
22517
22529
  pulumi.set(__self__, "dns_record_ip_type", dns_record_ip_type)
22518
22530
  if private_dns_only_for_inbound_resolver_endpoint is not None:
22519
22531
  pulumi.set(__self__, "private_dns_only_for_inbound_resolver_endpoint", private_dns_only_for_inbound_resolver_endpoint)
22532
+ if private_dns_preference is not None:
22533
+ pulumi.set(__self__, "private_dns_preference", private_dns_preference)
22534
+ if private_dns_specified_domains is not None:
22535
+ pulumi.set(__self__, "private_dns_specified_domains", private_dns_specified_domains)
22520
22536
 
22521
22537
  @_builtins.property
22522
22538
  @pulumi.getter(name="dnsRecordIpType")
@@ -22534,7 +22550,7 @@ class VpcEndpointDnsOptionsArgs:
22534
22550
  @pulumi.getter(name="privateDnsOnlyForInboundResolverEndpoint")
22535
22551
  def private_dns_only_for_inbound_resolver_endpoint(self) -> Optional[pulumi.Input[_builtins.bool]]:
22536
22552
  """
22537
- 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`.
22553
+ 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`.
22538
22554
  """
22539
22555
  return pulumi.get(self, "private_dns_only_for_inbound_resolver_endpoint")
22540
22556
 
@@ -22542,6 +22558,30 @@ class VpcEndpointDnsOptionsArgs:
22542
22558
  def private_dns_only_for_inbound_resolver_endpoint(self, value: Optional[pulumi.Input[_builtins.bool]]):
22543
22559
  pulumi.set(self, "private_dns_only_for_inbound_resolver_endpoint", value)
22544
22560
 
22561
+ @_builtins.property
22562
+ @pulumi.getter(name="privateDnsPreference")
22563
+ def private_dns_preference(self) -> Optional[pulumi.Input[_builtins.str]]:
22564
+ """
22565
+ 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`.
22566
+ """
22567
+ return pulumi.get(self, "private_dns_preference")
22568
+
22569
+ @private_dns_preference.setter
22570
+ def private_dns_preference(self, value: Optional[pulumi.Input[_builtins.str]]):
22571
+ pulumi.set(self, "private_dns_preference", value)
22572
+
22573
+ @_builtins.property
22574
+ @pulumi.getter(name="privateDnsSpecifiedDomains")
22575
+ def private_dns_specified_domains(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
22576
+ """
22577
+ 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.
22578
+ """
22579
+ return pulumi.get(self, "private_dns_specified_domains")
22580
+
22581
+ @private_dns_specified_domains.setter
22582
+ def private_dns_specified_domains(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
22583
+ pulumi.set(self, "private_dns_specified_domains", value)
22584
+
22545
22585
 
22546
22586
  if not MYPY:
22547
22587
  class VpcEndpointServicePrivateDnsNameConfigurationArgsDict(TypedDict):
@@ -28,7 +28,7 @@ class GetVpcEndpointResult:
28
28
  """
29
29
  A collection of values returned by getVpcEndpoint.
30
30
  """
31
- def __init__(__self__, arn=None, cidr_blocks=None, dns_entries=None, dns_options=None, filters=None, id=None, ip_address_type=None, network_interface_ids=None, owner_id=None, policy=None, prefix_list_id=None, private_dns_enabled=None, region=None, requester_managed=None, route_table_ids=None, security_group_ids=None, service_name=None, state=None, subnet_ids=None, tags=None, vpc_endpoint_type=None, vpc_id=None):
31
+ def __init__(__self__, arn=None, cidr_blocks=None, dns_entries=None, dns_options=None, filters=None, id=None, ip_address_type=None, network_interface_ids=None, owner_id=None, policy=None, prefix_list_id=None, private_dns_enabled=None, region=None, requester_managed=None, route_table_ids=None, security_group_ids=None, service_name=None, service_region=None, state=None, subnet_ids=None, tags=None, vpc_endpoint_type=None, vpc_id=None):
32
32
  if arn and not isinstance(arn, str):
33
33
  raise TypeError("Expected argument 'arn' to be a str")
34
34
  pulumi.set(__self__, "arn", arn)
@@ -80,6 +80,9 @@ class GetVpcEndpointResult:
80
80
  if service_name and not isinstance(service_name, str):
81
81
  raise TypeError("Expected argument 'service_name' to be a str")
82
82
  pulumi.set(__self__, "service_name", service_name)
83
+ if service_region and not isinstance(service_region, str):
84
+ raise TypeError("Expected argument 'service_region' to be a str")
85
+ pulumi.set(__self__, "service_region", service_region)
83
86
  if state and not isinstance(state, str):
84
87
  raise TypeError("Expected argument 'state' to be a str")
85
88
  pulumi.set(__self__, "state", state)
@@ -217,6 +220,11 @@ class GetVpcEndpointResult:
217
220
  def service_name(self) -> _builtins.str:
218
221
  return pulumi.get(self, "service_name")
219
222
 
223
+ @_builtins.property
224
+ @pulumi.getter(name="serviceRegion")
225
+ def service_region(self) -> _builtins.str:
226
+ return pulumi.get(self, "service_region")
227
+
220
228
  @_builtins.property
221
229
  @pulumi.getter
222
230
  def state(self) -> _builtins.str:
@@ -238,9 +246,6 @@ class GetVpcEndpointResult:
238
246
  @_builtins.property
239
247
  @pulumi.getter(name="vpcEndpointType")
240
248
  def vpc_endpoint_type(self) -> _builtins.str:
241
- """
242
- VPC Endpoint type, `Gateway` or `Interface`.
243
- """
244
249
  return pulumi.get(self, "vpc_endpoint_type")
245
250
 
246
251
  @_builtins.property
@@ -272,6 +277,7 @@ class AwaitableGetVpcEndpointResult(GetVpcEndpointResult):
272
277
  route_table_ids=self.route_table_ids,
273
278
  security_group_ids=self.security_group_ids,
274
279
  service_name=self.service_name,
280
+ service_region=self.service_region,
275
281
  state=self.state,
276
282
  subnet_ids=self.subnet_ids,
277
283
  tags=self.tags,
@@ -283,8 +289,10 @@ def get_vpc_endpoint(filters: Optional[Sequence[Union['GetVpcEndpointFilterArgs'
283
289
  id: Optional[_builtins.str] = None,
284
290
  region: Optional[_builtins.str] = None,
285
291
  service_name: Optional[_builtins.str] = None,
292
+ service_region: Optional[_builtins.str] = None,
286
293
  state: Optional[_builtins.str] = None,
287
294
  tags: Optional[Mapping[str, _builtins.str]] = None,
295
+ vpc_endpoint_type: Optional[_builtins.str] = None,
288
296
  vpc_id: Optional[_builtins.str] = None,
289
297
  opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVpcEndpointResult:
290
298
  """
@@ -310,9 +318,11 @@ def get_vpc_endpoint(filters: Optional[Sequence[Union['GetVpcEndpointFilterArgs'
310
318
  :param _builtins.str id: ID of the specific VPC Endpoint to retrieve.
311
319
  :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
312
320
  :param _builtins.str service_name: Service name of the specific VPC Endpoint to retrieve. For AWS services the service name is usually in the form `com.amazonaws.<region>.<service>` (the SageMaker AI Notebook service is an exception to this rule, the service name is in the form `aws.sagemaker.<region>.notebook`).
321
+ :param _builtins.str service_region: AWS region of the VPC Endpoint Service. Applicable for endpoints of type `Interface`.
313
322
  :param _builtins.str state: State of the specific VPC Endpoint to retrieve.
314
323
  :param Mapping[str, _builtins.str] tags: Map of tags, each pair of which must exactly match
315
324
  a pair on the specific VPC Endpoint to retrieve.
325
+ :param _builtins.str vpc_endpoint_type: VPC Endpoint type. Valid values are `Interface`, `Gateway`, `GatewayLoadBalancer`, `Resource`, and `ServiceNetwork`.
316
326
  :param _builtins.str vpc_id: ID of the VPC in which the specific VPC Endpoint is used.
317
327
 
318
328
  The arguments of this data source act as filters for querying the available VPC endpoints.
@@ -323,8 +333,10 @@ def get_vpc_endpoint(filters: Optional[Sequence[Union['GetVpcEndpointFilterArgs'
323
333
  __args__['id'] = id
324
334
  __args__['region'] = region
325
335
  __args__['serviceName'] = service_name
336
+ __args__['serviceRegion'] = service_region
326
337
  __args__['state'] = state
327
338
  __args__['tags'] = tags
339
+ __args__['vpcEndpointType'] = vpc_endpoint_type
328
340
  __args__['vpcId'] = vpc_id
329
341
  opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
330
342
  __ret__ = pulumi.runtime.invoke('aws:ec2/getVpcEndpoint:getVpcEndpoint', __args__, opts=opts, typ=GetVpcEndpointResult).value
@@ -347,6 +359,7 @@ def get_vpc_endpoint(filters: Optional[Sequence[Union['GetVpcEndpointFilterArgs'
347
359
  route_table_ids=pulumi.get(__ret__, 'route_table_ids'),
348
360
  security_group_ids=pulumi.get(__ret__, 'security_group_ids'),
349
361
  service_name=pulumi.get(__ret__, 'service_name'),
362
+ service_region=pulumi.get(__ret__, 'service_region'),
350
363
  state=pulumi.get(__ret__, 'state'),
351
364
  subnet_ids=pulumi.get(__ret__, 'subnet_ids'),
352
365
  tags=pulumi.get(__ret__, 'tags'),
@@ -356,8 +369,10 @@ def get_vpc_endpoint_output(filters: Optional[pulumi.Input[Optional[Sequence[Uni
356
369
  id: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
357
370
  region: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
358
371
  service_name: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
372
+ service_region: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
359
373
  state: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
360
374
  tags: Optional[pulumi.Input[Optional[Mapping[str, _builtins.str]]]] = None,
375
+ vpc_endpoint_type: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
361
376
  vpc_id: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
362
377
  opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetVpcEndpointResult]:
363
378
  """
@@ -383,9 +398,11 @@ def get_vpc_endpoint_output(filters: Optional[pulumi.Input[Optional[Sequence[Uni
383
398
  :param _builtins.str id: ID of the specific VPC Endpoint to retrieve.
384
399
  :param _builtins.str region: Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
385
400
  :param _builtins.str service_name: Service name of the specific VPC Endpoint to retrieve. For AWS services the service name is usually in the form `com.amazonaws.<region>.<service>` (the SageMaker AI Notebook service is an exception to this rule, the service name is in the form `aws.sagemaker.<region>.notebook`).
401
+ :param _builtins.str service_region: AWS region of the VPC Endpoint Service. Applicable for endpoints of type `Interface`.
386
402
  :param _builtins.str state: State of the specific VPC Endpoint to retrieve.
387
403
  :param Mapping[str, _builtins.str] tags: Map of tags, each pair of which must exactly match
388
404
  a pair on the specific VPC Endpoint to retrieve.
405
+ :param _builtins.str vpc_endpoint_type: VPC Endpoint type. Valid values are `Interface`, `Gateway`, `GatewayLoadBalancer`, `Resource`, and `ServiceNetwork`.
389
406
  :param _builtins.str vpc_id: ID of the VPC in which the specific VPC Endpoint is used.
390
407
 
391
408
  The arguments of this data source act as filters for querying the available VPC endpoints.
@@ -396,8 +413,10 @@ def get_vpc_endpoint_output(filters: Optional[pulumi.Input[Optional[Sequence[Uni
396
413
  __args__['id'] = id
397
414
  __args__['region'] = region
398
415
  __args__['serviceName'] = service_name
416
+ __args__['serviceRegion'] = service_region
399
417
  __args__['state'] = state
400
418
  __args__['tags'] = tags
419
+ __args__['vpcEndpointType'] = vpc_endpoint_type
401
420
  __args__['vpcId'] = vpc_id
402
421
  opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
403
422
  __ret__ = pulumi.runtime.invoke_output('aws:ec2/getVpcEndpoint:getVpcEndpoint', __args__, opts=opts, typ=GetVpcEndpointResult)
@@ -419,6 +438,7 @@ def get_vpc_endpoint_output(filters: Optional[pulumi.Input[Optional[Sequence[Uni
419
438
  route_table_ids=pulumi.get(__response__, 'route_table_ids'),
420
439
  security_group_ids=pulumi.get(__response__, 'security_group_ids'),
421
440
  service_name=pulumi.get(__response__, 'service_name'),
441
+ service_region=pulumi.get(__response__, 'service_region'),
422
442
  state=pulumi.get(__response__, 'state'),
423
443
  subnet_ids=pulumi.get(__response__, 'subnet_ids'),
424
444
  tags=pulumi.get(__response__, 'tags'),