pulumi-vault 6.2.0__py3-none-any.whl → 6.2.0a1712731873__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 (192) hide show
  1. pulumi_vault/__init__.py +0 -26
  2. pulumi_vault/_inputs.py +20 -0
  3. pulumi_vault/ad/secret_backend.py +6 -2
  4. pulumi_vault/ad/secret_library.py +4 -2
  5. pulumi_vault/ad/secret_role.py +4 -0
  6. pulumi_vault/alicloud/auth_backend_role.py +192 -69
  7. pulumi_vault/approle/auth_backend_login.py +4 -0
  8. pulumi_vault/approle/auth_backend_role.py +186 -63
  9. pulumi_vault/approle/auth_backend_role_secret_id.py +4 -0
  10. pulumi_vault/approle/get_auth_backend_role_id.py +4 -0
  11. pulumi_vault/audit.py +20 -12
  12. pulumi_vault/audit_request_header.py +6 -6
  13. pulumi_vault/auth_backend.py +0 -47
  14. pulumi_vault/aws/auth_backend_client.py +17 -253
  15. pulumi_vault/aws/auth_backend_config_identity.py +4 -0
  16. pulumi_vault/aws/auth_backend_identity_whitelist.py +10 -6
  17. pulumi_vault/aws/auth_backend_login.py +8 -0
  18. pulumi_vault/aws/auth_backend_role.py +186 -63
  19. pulumi_vault/aws/auth_backend_roletag_blacklist.py +10 -6
  20. pulumi_vault/aws/auth_backend_sts_role.py +4 -0
  21. pulumi_vault/aws/secret_backend_role.py +4 -56
  22. pulumi_vault/aws/secret_backend_static_role.py +4 -2
  23. pulumi_vault/azure/auth_backend_config.py +10 -139
  24. pulumi_vault/azure/auth_backend_role.py +186 -63
  25. pulumi_vault/azure/backend.py +22 -217
  26. pulumi_vault/azure/backend_role.py +18 -14
  27. pulumi_vault/azure/get_access_credentials.py +4 -0
  28. pulumi_vault/cert_auth_backend_role.py +208 -75
  29. pulumi_vault/consul/secret_backend.py +18 -10
  30. pulumi_vault/consul/secret_backend_role.py +4 -2
  31. pulumi_vault/database/_inputs.py +784 -522
  32. pulumi_vault/database/outputs.py +784 -522
  33. pulumi_vault/database/secret_backend_connection.py +4 -2
  34. pulumi_vault/database/secret_backend_role.py +4 -4
  35. pulumi_vault/database/secret_backend_static_role.py +8 -10
  36. pulumi_vault/database/secrets_mount.py +4 -286
  37. pulumi_vault/egp_policy.py +8 -4
  38. pulumi_vault/gcp/auth_backend.py +18 -226
  39. pulumi_vault/gcp/auth_backend_role.py +264 -63
  40. pulumi_vault/gcp/get_auth_backend_role.py +4 -0
  41. pulumi_vault/gcp/secret_backend.py +9 -275
  42. pulumi_vault/gcp/secret_impersonated_account.py +14 -12
  43. pulumi_vault/gcp/secret_roleset.py +6 -4
  44. pulumi_vault/gcp/secret_static_account.py +16 -14
  45. pulumi_vault/generic/endpoint.py +8 -4
  46. pulumi_vault/generic/get_secret.py +4 -40
  47. pulumi_vault/get_auth_backend.py +4 -0
  48. pulumi_vault/get_auth_backends.py +8 -0
  49. pulumi_vault/get_namespace.py +12 -0
  50. pulumi_vault/get_namespaces.py +12 -4
  51. pulumi_vault/get_nomad_access_token.py +4 -0
  52. pulumi_vault/get_policy_document.py +8 -8
  53. pulumi_vault/get_raft_autopilot_state.py +4 -0
  54. pulumi_vault/github/auth_backend.py +4 -0
  55. pulumi_vault/github/team.py +6 -2
  56. pulumi_vault/github/user.py +6 -2
  57. pulumi_vault/identity/entity.py +8 -6
  58. pulumi_vault/identity/entity_alias.py +8 -6
  59. pulumi_vault/identity/entity_policies.py +12 -12
  60. pulumi_vault/identity/get_entity.py +4 -0
  61. pulumi_vault/identity/get_group.py +4 -0
  62. pulumi_vault/identity/get_oidc_client_creds.py +4 -2
  63. pulumi_vault/identity/get_oidc_openid_config.py +6 -10
  64. pulumi_vault/identity/get_oidc_public_keys.py +6 -10
  65. pulumi_vault/identity/group.py +42 -38
  66. pulumi_vault/identity/group_alias.py +4 -2
  67. pulumi_vault/identity/group_member_entity_ids.py +16 -12
  68. pulumi_vault/identity/group_member_group_ids.py +20 -24
  69. pulumi_vault/identity/group_policies.py +8 -4
  70. pulumi_vault/identity/mfa_duo.py +8 -4
  71. pulumi_vault/identity/mfa_login_enforcement.py +8 -8
  72. pulumi_vault/identity/mfa_okta.py +8 -4
  73. pulumi_vault/identity/mfa_pingid.py +4 -0
  74. pulumi_vault/identity/mfa_totp.py +4 -0
  75. pulumi_vault/identity/oidc.py +4 -0
  76. pulumi_vault/identity/oidc_assignment.py +6 -10
  77. pulumi_vault/identity/oidc_client.py +10 -10
  78. pulumi_vault/identity/oidc_key.py +12 -16
  79. pulumi_vault/identity/oidc_key_allowed_client_id.py +12 -16
  80. pulumi_vault/identity/oidc_provider.py +16 -22
  81. pulumi_vault/identity/oidc_role.py +20 -28
  82. pulumi_vault/identity/oidc_scope.py +8 -6
  83. pulumi_vault/jwt/auth_backend.py +32 -20
  84. pulumi_vault/jwt/auth_backend_role.py +225 -91
  85. pulumi_vault/kmip/secret_backend.py +14 -10
  86. pulumi_vault/kmip/secret_role.py +4 -0
  87. pulumi_vault/kmip/secret_scope.py +4 -0
  88. pulumi_vault/kubernetes/auth_backend_config.py +4 -0
  89. pulumi_vault/kubernetes/auth_backend_role.py +172 -56
  90. pulumi_vault/kubernetes/get_service_account_token.py +8 -8
  91. pulumi_vault/kubernetes/secret_backend.py +8 -288
  92. pulumi_vault/kubernetes/secret_backend_role.py +24 -24
  93. pulumi_vault/kv/get_secret.py +4 -0
  94. pulumi_vault/kv/get_secret_subkeys_v2.py +6 -4
  95. pulumi_vault/kv/get_secret_v2.py +0 -58
  96. pulumi_vault/kv/get_secrets_list.py +8 -4
  97. pulumi_vault/kv/get_secrets_list_v2.py +12 -14
  98. pulumi_vault/kv/secret.py +4 -0
  99. pulumi_vault/kv/secret_backend_v2.py +4 -0
  100. pulumi_vault/kv/secret_v2.py +4 -2
  101. pulumi_vault/ldap/auth_backend.py +161 -66
  102. pulumi_vault/ldap/auth_backend_group.py +4 -0
  103. pulumi_vault/ldap/auth_backend_user.py +4 -0
  104. pulumi_vault/ldap/secret_backend.py +8 -286
  105. pulumi_vault/ldap/secret_backend_dynamic_role.py +4 -0
  106. pulumi_vault/ldap/secret_backend_library_set.py +4 -2
  107. pulumi_vault/ldap/secret_backend_static_role.py +4 -0
  108. pulumi_vault/managed/_inputs.py +132 -84
  109. pulumi_vault/managed/keys.py +28 -7
  110. pulumi_vault/managed/outputs.py +132 -84
  111. pulumi_vault/mfa_duo.py +6 -4
  112. pulumi_vault/mfa_okta.py +6 -4
  113. pulumi_vault/mfa_pingid.py +6 -4
  114. pulumi_vault/mfa_totp.py +12 -10
  115. pulumi_vault/mongodbatlas/secret_backend.py +4 -0
  116. pulumi_vault/mongodbatlas/secret_role.py +4 -2
  117. pulumi_vault/mount.py +42 -350
  118. pulumi_vault/nomad_secret_backend.py +8 -4
  119. pulumi_vault/nomad_secret_role.py +4 -0
  120. pulumi_vault/okta/_inputs.py +8 -8
  121. pulumi_vault/okta/auth_backend.py +10 -459
  122. pulumi_vault/okta/auth_backend_group.py +4 -0
  123. pulumi_vault/okta/auth_backend_user.py +4 -0
  124. pulumi_vault/okta/outputs.py +8 -8
  125. pulumi_vault/outputs.py +20 -0
  126. pulumi_vault/password_policy.py +8 -6
  127. pulumi_vault/pkisecret/__init__.py +0 -2
  128. pulumi_vault/pkisecret/_inputs.py +0 -30
  129. pulumi_vault/pkisecret/backend_config_cluster.py +4 -0
  130. pulumi_vault/pkisecret/get_backend_issuer.py +0 -36
  131. pulumi_vault/pkisecret/get_backend_issuers.py +4 -0
  132. pulumi_vault/pkisecret/get_backend_key.py +6 -2
  133. pulumi_vault/pkisecret/get_backend_keys.py +4 -0
  134. pulumi_vault/pkisecret/outputs.py +0 -54
  135. pulumi_vault/pkisecret/secret_backend_cert.py +8 -6
  136. pulumi_vault/pkisecret/secret_backend_config_ca.py +8 -4
  137. pulumi_vault/pkisecret/secret_backend_config_issuers.py +4 -0
  138. pulumi_vault/pkisecret/secret_backend_config_urls.py +4 -0
  139. pulumi_vault/pkisecret/secret_backend_crl_config.py +6 -2
  140. pulumi_vault/pkisecret/secret_backend_intermediate_cert_request.py +8 -4
  141. pulumi_vault/pkisecret/secret_backend_intermediate_set_signed.py +14 -10
  142. pulumi_vault/pkisecret/secret_backend_issuer.py +4 -0
  143. pulumi_vault/pkisecret/secret_backend_role.py +4 -2
  144. pulumi_vault/pkisecret/secret_backend_root_cert.py +8 -4
  145. pulumi_vault/pkisecret/secret_backend_root_sign_intermediate.py +10 -6
  146. pulumi_vault/pkisecret/secret_backend_sign.py +8 -6
  147. pulumi_vault/provider.py +8 -0
  148. pulumi_vault/pulumi-plugin.json +1 -2
  149. pulumi_vault/quota_lease_count.py +8 -53
  150. pulumi_vault/quota_rate_limit.py +4 -49
  151. pulumi_vault/rabbitmq/secret_backend.py +8 -4
  152. pulumi_vault/rabbitmq/secret_backend_role.py +4 -2
  153. pulumi_vault/raft_autopilot.py +4 -0
  154. pulumi_vault/raft_snapshot_agent_config.py +304 -109
  155. pulumi_vault/rgp_policy.py +6 -2
  156. pulumi_vault/saml/auth_backend.py +12 -8
  157. pulumi_vault/saml/auth_backend_role.py +178 -64
  158. pulumi_vault/secrets/sync_association.py +10 -12
  159. pulumi_vault/secrets/sync_aws_destination.py +8 -6
  160. pulumi_vault/secrets/sync_azure_destination.py +12 -10
  161. pulumi_vault/secrets/sync_config.py +6 -2
  162. pulumi_vault/secrets/sync_gcp_destination.py +6 -6
  163. pulumi_vault/secrets/sync_gh_destination.py +8 -6
  164. pulumi_vault/secrets/sync_github_apps.py +8 -8
  165. pulumi_vault/secrets/sync_vercel_destination.py +8 -6
  166. pulumi_vault/ssh/_inputs.py +32 -6
  167. pulumi_vault/ssh/outputs.py +32 -6
  168. pulumi_vault/ssh/secret_backend_ca.py +4 -94
  169. pulumi_vault/ssh/secret_backend_role.py +4 -4
  170. pulumi_vault/terraformcloud/secret_backend.py +56 -0
  171. pulumi_vault/terraformcloud/secret_creds.py +17 -2
  172. pulumi_vault/terraformcloud/secret_role.py +69 -2
  173. pulumi_vault/token.py +18 -14
  174. pulumi_vault/tokenauth/auth_backend_role.py +180 -64
  175. pulumi_vault/transform/alphabet.py +6 -4
  176. pulumi_vault/transform/get_decode.py +4 -4
  177. pulumi_vault/transform/get_encode.py +4 -4
  178. pulumi_vault/transform/role.py +6 -4
  179. pulumi_vault/transform/template.py +4 -4
  180. pulumi_vault/transit/get_decrypt.py +20 -4
  181. pulumi_vault/transit/get_encrypt.py +14 -0
  182. pulumi_vault/transit/secret_backend_key.py +6 -6
  183. pulumi_vault/transit/secret_cache_config.py +4 -0
  184. {pulumi_vault-6.2.0.dist-info → pulumi_vault-6.2.0a1712731873.dist-info}/METADATA +1 -1
  185. pulumi_vault-6.2.0a1712731873.dist-info/RECORD +252 -0
  186. {pulumi_vault-6.2.0.dist-info → pulumi_vault-6.2.0a1712731873.dist-info}/WHEEL +1 -1
  187. pulumi_vault/pkisecret/backend_config_est.py +0 -614
  188. pulumi_vault/pkisecret/get_backend_config_est.py +0 -233
  189. pulumi_vault/plugin.py +0 -590
  190. pulumi_vault/plugin_pinned_version.py +0 -293
  191. pulumi_vault-6.2.0.dist-info/RECORD +0 -256
  192. {pulumi_vault-6.2.0.dist-info → pulumi_vault-6.2.0a1712731873.dist-info}/top_level.txt +0 -0
@@ -311,6 +311,7 @@ def get_auth_backend_role(backend: Optional[str] = None,
311
311
 
312
312
  ## Example Usage
313
313
 
314
+ <!--Start PulumiCodeChooser -->
314
315
  ```python
315
316
  import pulumi
316
317
  import pulumi_vault as vault
@@ -319,6 +320,7 @@ def get_auth_backend_role(backend: Optional[str] = None,
319
320
  role_name="my-role")
320
321
  pulumi.export("role-id", role.role_id)
321
322
  ```
323
+ <!--End PulumiCodeChooser -->
322
324
 
323
325
 
324
326
  :param str backend: The unique name for the GCP backend from which to fetch the role. Defaults to "gcp".
@@ -414,6 +416,7 @@ def get_auth_backend_role_output(backend: Optional[pulumi.Input[Optional[str]]]
414
416
 
415
417
  ## Example Usage
416
418
 
419
+ <!--Start PulumiCodeChooser -->
417
420
  ```python
418
421
  import pulumi
419
422
  import pulumi_vault as vault
@@ -422,6 +425,7 @@ def get_auth_backend_role_output(backend: Optional[pulumi.Input[Optional[str]]]
422
425
  role_name="my-role")
423
426
  pulumi.export("role-id", role.role_id)
424
427
  ```
428
+ <!--End PulumiCodeChooser -->
425
429
 
426
430
 
427
431
  :param str backend: The unique name for the GCP backend from which to fetch the role. Defaults to "gcp".
@@ -18,14 +18,10 @@ class SecretBackendArgs:
18
18
  default_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
19
19
  description: Optional[pulumi.Input[str]] = None,
20
20
  disable_remount: Optional[pulumi.Input[bool]] = None,
21
- identity_token_audience: Optional[pulumi.Input[str]] = None,
22
- identity_token_key: Optional[pulumi.Input[str]] = None,
23
- identity_token_ttl: Optional[pulumi.Input[int]] = None,
24
21
  local: Optional[pulumi.Input[bool]] = None,
25
22
  max_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
26
23
  namespace: Optional[pulumi.Input[str]] = None,
27
- path: Optional[pulumi.Input[str]] = None,
28
- service_account_email: Optional[pulumi.Input[str]] = None):
24
+ path: Optional[pulumi.Input[str]] = None):
29
25
  """
30
26
  The set of arguments for constructing a SecretBackend resource.
31
27
  :param pulumi.Input[str] credentials: JSON-encoded credentials to use to connect to GCP
@@ -34,12 +30,6 @@ class SecretBackendArgs:
34
30
  :param pulumi.Input[str] description: A human-friendly description for this backend.
35
31
  :param pulumi.Input[bool] disable_remount: If set, opts out of mount migration on path updates.
36
32
  See here for more info on [Mount Migration](https://www.vaultproject.io/docs/concepts/mount-migration)
37
- :param pulumi.Input[str] identity_token_audience: The audience claim value for plugin identity
38
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
39
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
40
- :param pulumi.Input[str] identity_token_key: The key to use for signing plugin identity
41
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
42
- :param pulumi.Input[int] identity_token_ttl: The TTL of generated tokens.
43
33
  :param pulumi.Input[bool] local: Boolean flag that can be explicitly set to true to enforce local mount in HA environment
44
34
  :param pulumi.Input[int] max_lease_ttl_seconds: The maximum TTL that can be requested
45
35
  for credentials issued by this backend. Defaults to '0'.
@@ -49,8 +39,6 @@ class SecretBackendArgs:
49
39
  *Available only for Vault Enterprise*.
50
40
  :param pulumi.Input[str] path: The unique path this backend should be mounted at. Must
51
41
  not begin or end with a `/`. Defaults to `gcp`.
52
- :param pulumi.Input[str] service_account_email: Service Account to impersonate for plugin workload identity federation.
53
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
54
42
  """
55
43
  if credentials is not None:
56
44
  pulumi.set(__self__, "credentials", credentials)
@@ -60,12 +48,6 @@ class SecretBackendArgs:
60
48
  pulumi.set(__self__, "description", description)
61
49
  if disable_remount is not None:
62
50
  pulumi.set(__self__, "disable_remount", disable_remount)
63
- if identity_token_audience is not None:
64
- pulumi.set(__self__, "identity_token_audience", identity_token_audience)
65
- if identity_token_key is not None:
66
- pulumi.set(__self__, "identity_token_key", identity_token_key)
67
- if identity_token_ttl is not None:
68
- pulumi.set(__self__, "identity_token_ttl", identity_token_ttl)
69
51
  if local is not None:
70
52
  pulumi.set(__self__, "local", local)
71
53
  if max_lease_ttl_seconds is not None:
@@ -74,8 +56,6 @@ class SecretBackendArgs:
74
56
  pulumi.set(__self__, "namespace", namespace)
75
57
  if path is not None:
76
58
  pulumi.set(__self__, "path", path)
77
- if service_account_email is not None:
78
- pulumi.set(__self__, "service_account_email", service_account_email)
79
59
 
80
60
  @property
81
61
  @pulumi.getter
@@ -127,45 +107,6 @@ class SecretBackendArgs:
127
107
  def disable_remount(self, value: Optional[pulumi.Input[bool]]):
128
108
  pulumi.set(self, "disable_remount", value)
129
109
 
130
- @property
131
- @pulumi.getter(name="identityTokenAudience")
132
- def identity_token_audience(self) -> Optional[pulumi.Input[str]]:
133
- """
134
- The audience claim value for plugin identity
135
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
136
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
137
- """
138
- return pulumi.get(self, "identity_token_audience")
139
-
140
- @identity_token_audience.setter
141
- def identity_token_audience(self, value: Optional[pulumi.Input[str]]):
142
- pulumi.set(self, "identity_token_audience", value)
143
-
144
- @property
145
- @pulumi.getter(name="identityTokenKey")
146
- def identity_token_key(self) -> Optional[pulumi.Input[str]]:
147
- """
148
- The key to use for signing plugin identity
149
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
150
- """
151
- return pulumi.get(self, "identity_token_key")
152
-
153
- @identity_token_key.setter
154
- def identity_token_key(self, value: Optional[pulumi.Input[str]]):
155
- pulumi.set(self, "identity_token_key", value)
156
-
157
- @property
158
- @pulumi.getter(name="identityTokenTtl")
159
- def identity_token_ttl(self) -> Optional[pulumi.Input[int]]:
160
- """
161
- The TTL of generated tokens.
162
- """
163
- return pulumi.get(self, "identity_token_ttl")
164
-
165
- @identity_token_ttl.setter
166
- def identity_token_ttl(self, value: Optional[pulumi.Input[int]]):
167
- pulumi.set(self, "identity_token_ttl", value)
168
-
169
110
  @property
170
111
  @pulumi.getter
171
112
  def local(self) -> Optional[pulumi.Input[bool]]:
@@ -219,51 +160,26 @@ class SecretBackendArgs:
219
160
  def path(self, value: Optional[pulumi.Input[str]]):
220
161
  pulumi.set(self, "path", value)
221
162
 
222
- @property
223
- @pulumi.getter(name="serviceAccountEmail")
224
- def service_account_email(self) -> Optional[pulumi.Input[str]]:
225
- """
226
- Service Account to impersonate for plugin workload identity federation.
227
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
228
- """
229
- return pulumi.get(self, "service_account_email")
230
-
231
- @service_account_email.setter
232
- def service_account_email(self, value: Optional[pulumi.Input[str]]):
233
- pulumi.set(self, "service_account_email", value)
234
-
235
163
 
236
164
  @pulumi.input_type
237
165
  class _SecretBackendState:
238
166
  def __init__(__self__, *,
239
- accessor: Optional[pulumi.Input[str]] = None,
240
167
  credentials: Optional[pulumi.Input[str]] = None,
241
168
  default_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
242
169
  description: Optional[pulumi.Input[str]] = None,
243
170
  disable_remount: Optional[pulumi.Input[bool]] = None,
244
- identity_token_audience: Optional[pulumi.Input[str]] = None,
245
- identity_token_key: Optional[pulumi.Input[str]] = None,
246
- identity_token_ttl: Optional[pulumi.Input[int]] = None,
247
171
  local: Optional[pulumi.Input[bool]] = None,
248
172
  max_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
249
173
  namespace: Optional[pulumi.Input[str]] = None,
250
- path: Optional[pulumi.Input[str]] = None,
251
- service_account_email: Optional[pulumi.Input[str]] = None):
174
+ path: Optional[pulumi.Input[str]] = None):
252
175
  """
253
176
  Input properties used for looking up and filtering SecretBackend resources.
254
- :param pulumi.Input[str] accessor: The accessor of the created GCP mount.
255
177
  :param pulumi.Input[str] credentials: JSON-encoded credentials to use to connect to GCP
256
178
  :param pulumi.Input[int] default_lease_ttl_seconds: The default TTL for credentials
257
179
  issued by this backend. Defaults to '0'.
258
180
  :param pulumi.Input[str] description: A human-friendly description for this backend.
259
181
  :param pulumi.Input[bool] disable_remount: If set, opts out of mount migration on path updates.
260
182
  See here for more info on [Mount Migration](https://www.vaultproject.io/docs/concepts/mount-migration)
261
- :param pulumi.Input[str] identity_token_audience: The audience claim value for plugin identity
262
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
263
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
264
- :param pulumi.Input[str] identity_token_key: The key to use for signing plugin identity
265
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
266
- :param pulumi.Input[int] identity_token_ttl: The TTL of generated tokens.
267
183
  :param pulumi.Input[bool] local: Boolean flag that can be explicitly set to true to enforce local mount in HA environment
268
184
  :param pulumi.Input[int] max_lease_ttl_seconds: The maximum TTL that can be requested
269
185
  for credentials issued by this backend. Defaults to '0'.
@@ -273,11 +189,7 @@ class _SecretBackendState:
273
189
  *Available only for Vault Enterprise*.
274
190
  :param pulumi.Input[str] path: The unique path this backend should be mounted at. Must
275
191
  not begin or end with a `/`. Defaults to `gcp`.
276
- :param pulumi.Input[str] service_account_email: Service Account to impersonate for plugin workload identity federation.
277
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
278
192
  """
279
- if accessor is not None:
280
- pulumi.set(__self__, "accessor", accessor)
281
193
  if credentials is not None:
282
194
  pulumi.set(__self__, "credentials", credentials)
283
195
  if default_lease_ttl_seconds is not None:
@@ -286,12 +198,6 @@ class _SecretBackendState:
286
198
  pulumi.set(__self__, "description", description)
287
199
  if disable_remount is not None:
288
200
  pulumi.set(__self__, "disable_remount", disable_remount)
289
- if identity_token_audience is not None:
290
- pulumi.set(__self__, "identity_token_audience", identity_token_audience)
291
- if identity_token_key is not None:
292
- pulumi.set(__self__, "identity_token_key", identity_token_key)
293
- if identity_token_ttl is not None:
294
- pulumi.set(__self__, "identity_token_ttl", identity_token_ttl)
295
201
  if local is not None:
296
202
  pulumi.set(__self__, "local", local)
297
203
  if max_lease_ttl_seconds is not None:
@@ -300,20 +206,6 @@ class _SecretBackendState:
300
206
  pulumi.set(__self__, "namespace", namespace)
301
207
  if path is not None:
302
208
  pulumi.set(__self__, "path", path)
303
- if service_account_email is not None:
304
- pulumi.set(__self__, "service_account_email", service_account_email)
305
-
306
- @property
307
- @pulumi.getter
308
- def accessor(self) -> Optional[pulumi.Input[str]]:
309
- """
310
- The accessor of the created GCP mount.
311
- """
312
- return pulumi.get(self, "accessor")
313
-
314
- @accessor.setter
315
- def accessor(self, value: Optional[pulumi.Input[str]]):
316
- pulumi.set(self, "accessor", value)
317
209
 
318
210
  @property
319
211
  @pulumi.getter
@@ -365,45 +257,6 @@ class _SecretBackendState:
365
257
  def disable_remount(self, value: Optional[pulumi.Input[bool]]):
366
258
  pulumi.set(self, "disable_remount", value)
367
259
 
368
- @property
369
- @pulumi.getter(name="identityTokenAudience")
370
- def identity_token_audience(self) -> Optional[pulumi.Input[str]]:
371
- """
372
- The audience claim value for plugin identity
373
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
374
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
375
- """
376
- return pulumi.get(self, "identity_token_audience")
377
-
378
- @identity_token_audience.setter
379
- def identity_token_audience(self, value: Optional[pulumi.Input[str]]):
380
- pulumi.set(self, "identity_token_audience", value)
381
-
382
- @property
383
- @pulumi.getter(name="identityTokenKey")
384
- def identity_token_key(self) -> Optional[pulumi.Input[str]]:
385
- """
386
- The key to use for signing plugin identity
387
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
388
- """
389
- return pulumi.get(self, "identity_token_key")
390
-
391
- @identity_token_key.setter
392
- def identity_token_key(self, value: Optional[pulumi.Input[str]]):
393
- pulumi.set(self, "identity_token_key", value)
394
-
395
- @property
396
- @pulumi.getter(name="identityTokenTtl")
397
- def identity_token_ttl(self) -> Optional[pulumi.Input[int]]:
398
- """
399
- The TTL of generated tokens.
400
- """
401
- return pulumi.get(self, "identity_token_ttl")
402
-
403
- @identity_token_ttl.setter
404
- def identity_token_ttl(self, value: Optional[pulumi.Input[int]]):
405
- pulumi.set(self, "identity_token_ttl", value)
406
-
407
260
  @property
408
261
  @pulumi.getter
409
262
  def local(self) -> Optional[pulumi.Input[bool]]:
@@ -457,19 +310,6 @@ class _SecretBackendState:
457
310
  def path(self, value: Optional[pulumi.Input[str]]):
458
311
  pulumi.set(self, "path", value)
459
312
 
460
- @property
461
- @pulumi.getter(name="serviceAccountEmail")
462
- def service_account_email(self) -> Optional[pulumi.Input[str]]:
463
- """
464
- Service Account to impersonate for plugin workload identity federation.
465
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
466
- """
467
- return pulumi.get(self, "service_account_email")
468
-
469
- @service_account_email.setter
470
- def service_account_email(self, value: Optional[pulumi.Input[str]]):
471
- pulumi.set(self, "service_account_email", value)
472
-
473
313
 
474
314
  class SecretBackend(pulumi.CustomResource):
475
315
  @overload
@@ -480,37 +320,22 @@ class SecretBackend(pulumi.CustomResource):
480
320
  default_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
481
321
  description: Optional[pulumi.Input[str]] = None,
482
322
  disable_remount: Optional[pulumi.Input[bool]] = None,
483
- identity_token_audience: Optional[pulumi.Input[str]] = None,
484
- identity_token_key: Optional[pulumi.Input[str]] = None,
485
- identity_token_ttl: Optional[pulumi.Input[int]] = None,
486
323
  local: Optional[pulumi.Input[bool]] = None,
487
324
  max_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
488
325
  namespace: Optional[pulumi.Input[str]] = None,
489
326
  path: Optional[pulumi.Input[str]] = None,
490
- service_account_email: Optional[pulumi.Input[str]] = None,
491
327
  __props__=None):
492
328
  """
493
329
  ## Example Usage
494
330
 
495
- You can setup the GCP secret backend with Workload Identity Federation (WIF) for a secret-less configuration:
496
- ```python
497
- import pulumi
498
- import pulumi_vault as vault
499
-
500
- gcp = vault.gcp.SecretBackend("gcp",
501
- identity_token_key="example-key",
502
- identity_token_ttl=1800,
503
- identity_token_audience="<TOKEN_AUDIENCE>",
504
- service_account_email="<SERVICE_ACCOUNT_EMAIL>")
505
- ```
506
-
331
+ <!--Start PulumiCodeChooser -->
507
332
  ```python
508
333
  import pulumi
509
- import pulumi_std as std
510
334
  import pulumi_vault as vault
511
335
 
512
- gcp = vault.gcp.SecretBackend("gcp", credentials=std.file(input="credentials.json").result)
336
+ gcp = vault.gcp.SecretBackend("gcp", credentials=(lambda path: open(path).read())("credentials.json"))
513
337
  ```
338
+ <!--End PulumiCodeChooser -->
514
339
 
515
340
  :param str resource_name: The name of the resource.
516
341
  :param pulumi.ResourceOptions opts: Options for the resource.
@@ -520,12 +345,6 @@ class SecretBackend(pulumi.CustomResource):
520
345
  :param pulumi.Input[str] description: A human-friendly description for this backend.
521
346
  :param pulumi.Input[bool] disable_remount: If set, opts out of mount migration on path updates.
522
347
  See here for more info on [Mount Migration](https://www.vaultproject.io/docs/concepts/mount-migration)
523
- :param pulumi.Input[str] identity_token_audience: The audience claim value for plugin identity
524
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
525
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
526
- :param pulumi.Input[str] identity_token_key: The key to use for signing plugin identity
527
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
528
- :param pulumi.Input[int] identity_token_ttl: The TTL of generated tokens.
529
348
  :param pulumi.Input[bool] local: Boolean flag that can be explicitly set to true to enforce local mount in HA environment
530
349
  :param pulumi.Input[int] max_lease_ttl_seconds: The maximum TTL that can be requested
531
350
  for credentials issued by this backend. Defaults to '0'.
@@ -535,8 +354,6 @@ class SecretBackend(pulumi.CustomResource):
535
354
  *Available only for Vault Enterprise*.
536
355
  :param pulumi.Input[str] path: The unique path this backend should be mounted at. Must
537
356
  not begin or end with a `/`. Defaults to `gcp`.
538
- :param pulumi.Input[str] service_account_email: Service Account to impersonate for plugin workload identity federation.
539
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
540
357
  """
541
358
  ...
542
359
  @overload
@@ -547,25 +364,14 @@ class SecretBackend(pulumi.CustomResource):
547
364
  """
548
365
  ## Example Usage
549
366
 
550
- You can setup the GCP secret backend with Workload Identity Federation (WIF) for a secret-less configuration:
551
- ```python
552
- import pulumi
553
- import pulumi_vault as vault
554
-
555
- gcp = vault.gcp.SecretBackend("gcp",
556
- identity_token_key="example-key",
557
- identity_token_ttl=1800,
558
- identity_token_audience="<TOKEN_AUDIENCE>",
559
- service_account_email="<SERVICE_ACCOUNT_EMAIL>")
560
- ```
561
-
367
+ <!--Start PulumiCodeChooser -->
562
368
  ```python
563
369
  import pulumi
564
- import pulumi_std as std
565
370
  import pulumi_vault as vault
566
371
 
567
- gcp = vault.gcp.SecretBackend("gcp", credentials=std.file(input="credentials.json").result)
372
+ gcp = vault.gcp.SecretBackend("gcp", credentials=(lambda path: open(path).read())("credentials.json"))
568
373
  ```
374
+ <!--End PulumiCodeChooser -->
569
375
 
570
376
  :param str resource_name: The name of the resource.
571
377
  :param SecretBackendArgs args: The arguments to use to populate this resource's properties.
@@ -586,14 +392,10 @@ class SecretBackend(pulumi.CustomResource):
586
392
  default_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
587
393
  description: Optional[pulumi.Input[str]] = None,
588
394
  disable_remount: Optional[pulumi.Input[bool]] = None,
589
- identity_token_audience: Optional[pulumi.Input[str]] = None,
590
- identity_token_key: Optional[pulumi.Input[str]] = None,
591
- identity_token_ttl: Optional[pulumi.Input[int]] = None,
592
395
  local: Optional[pulumi.Input[bool]] = None,
593
396
  max_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
594
397
  namespace: Optional[pulumi.Input[str]] = None,
595
398
  path: Optional[pulumi.Input[str]] = None,
596
- service_account_email: Optional[pulumi.Input[str]] = None,
597
399
  __props__=None):
598
400
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
599
401
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -607,15 +409,10 @@ class SecretBackend(pulumi.CustomResource):
607
409
  __props__.__dict__["default_lease_ttl_seconds"] = default_lease_ttl_seconds
608
410
  __props__.__dict__["description"] = description
609
411
  __props__.__dict__["disable_remount"] = disable_remount
610
- __props__.__dict__["identity_token_audience"] = identity_token_audience
611
- __props__.__dict__["identity_token_key"] = identity_token_key
612
- __props__.__dict__["identity_token_ttl"] = identity_token_ttl
613
412
  __props__.__dict__["local"] = local
614
413
  __props__.__dict__["max_lease_ttl_seconds"] = max_lease_ttl_seconds
615
414
  __props__.__dict__["namespace"] = namespace
616
415
  __props__.__dict__["path"] = path
617
- __props__.__dict__["service_account_email"] = service_account_email
618
- __props__.__dict__["accessor"] = None
619
416
  secret_opts = pulumi.ResourceOptions(additional_secret_outputs=["credentials"])
620
417
  opts = pulumi.ResourceOptions.merge(opts, secret_opts)
621
418
  super(SecretBackend, __self__).__init__(
@@ -628,19 +425,14 @@ class SecretBackend(pulumi.CustomResource):
628
425
  def get(resource_name: str,
629
426
  id: pulumi.Input[str],
630
427
  opts: Optional[pulumi.ResourceOptions] = None,
631
- accessor: Optional[pulumi.Input[str]] = None,
632
428
  credentials: Optional[pulumi.Input[str]] = None,
633
429
  default_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
634
430
  description: Optional[pulumi.Input[str]] = None,
635
431
  disable_remount: Optional[pulumi.Input[bool]] = None,
636
- identity_token_audience: Optional[pulumi.Input[str]] = None,
637
- identity_token_key: Optional[pulumi.Input[str]] = None,
638
- identity_token_ttl: Optional[pulumi.Input[int]] = None,
639
432
  local: Optional[pulumi.Input[bool]] = None,
640
433
  max_lease_ttl_seconds: Optional[pulumi.Input[int]] = None,
641
434
  namespace: Optional[pulumi.Input[str]] = None,
642
- path: Optional[pulumi.Input[str]] = None,
643
- service_account_email: Optional[pulumi.Input[str]] = None) -> 'SecretBackend':
435
+ path: Optional[pulumi.Input[str]] = None) -> 'SecretBackend':
644
436
  """
645
437
  Get an existing SecretBackend resource's state with the given name, id, and optional extra
646
438
  properties used to qualify the lookup.
@@ -648,19 +440,12 @@ class SecretBackend(pulumi.CustomResource):
648
440
  :param str resource_name: The unique name of the resulting resource.
649
441
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
650
442
  :param pulumi.ResourceOptions opts: Options for the resource.
651
- :param pulumi.Input[str] accessor: The accessor of the created GCP mount.
652
443
  :param pulumi.Input[str] credentials: JSON-encoded credentials to use to connect to GCP
653
444
  :param pulumi.Input[int] default_lease_ttl_seconds: The default TTL for credentials
654
445
  issued by this backend. Defaults to '0'.
655
446
  :param pulumi.Input[str] description: A human-friendly description for this backend.
656
447
  :param pulumi.Input[bool] disable_remount: If set, opts out of mount migration on path updates.
657
448
  See here for more info on [Mount Migration](https://www.vaultproject.io/docs/concepts/mount-migration)
658
- :param pulumi.Input[str] identity_token_audience: The audience claim value for plugin identity
659
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
660
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
661
- :param pulumi.Input[str] identity_token_key: The key to use for signing plugin identity
662
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
663
- :param pulumi.Input[int] identity_token_ttl: The TTL of generated tokens.
664
449
  :param pulumi.Input[bool] local: Boolean flag that can be explicitly set to true to enforce local mount in HA environment
665
450
  :param pulumi.Input[int] max_lease_ttl_seconds: The maximum TTL that can be requested
666
451
  for credentials issued by this backend. Defaults to '0'.
@@ -670,36 +455,21 @@ class SecretBackend(pulumi.CustomResource):
670
455
  *Available only for Vault Enterprise*.
671
456
  :param pulumi.Input[str] path: The unique path this backend should be mounted at. Must
672
457
  not begin or end with a `/`. Defaults to `gcp`.
673
- :param pulumi.Input[str] service_account_email: Service Account to impersonate for plugin workload identity federation.
674
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
675
458
  """
676
459
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
677
460
 
678
461
  __props__ = _SecretBackendState.__new__(_SecretBackendState)
679
462
 
680
- __props__.__dict__["accessor"] = accessor
681
463
  __props__.__dict__["credentials"] = credentials
682
464
  __props__.__dict__["default_lease_ttl_seconds"] = default_lease_ttl_seconds
683
465
  __props__.__dict__["description"] = description
684
466
  __props__.__dict__["disable_remount"] = disable_remount
685
- __props__.__dict__["identity_token_audience"] = identity_token_audience
686
- __props__.__dict__["identity_token_key"] = identity_token_key
687
- __props__.__dict__["identity_token_ttl"] = identity_token_ttl
688
467
  __props__.__dict__["local"] = local
689
468
  __props__.__dict__["max_lease_ttl_seconds"] = max_lease_ttl_seconds
690
469
  __props__.__dict__["namespace"] = namespace
691
470
  __props__.__dict__["path"] = path
692
- __props__.__dict__["service_account_email"] = service_account_email
693
471
  return SecretBackend(resource_name, opts=opts, __props__=__props__)
694
472
 
695
- @property
696
- @pulumi.getter
697
- def accessor(self) -> pulumi.Output[str]:
698
- """
699
- The accessor of the created GCP mount.
700
- """
701
- return pulumi.get(self, "accessor")
702
-
703
473
  @property
704
474
  @pulumi.getter
705
475
  def credentials(self) -> pulumi.Output[Optional[str]]:
@@ -734,33 +504,6 @@ class SecretBackend(pulumi.CustomResource):
734
504
  """
735
505
  return pulumi.get(self, "disable_remount")
736
506
 
737
- @property
738
- @pulumi.getter(name="identityTokenAudience")
739
- def identity_token_audience(self) -> pulumi.Output[Optional[str]]:
740
- """
741
- The audience claim value for plugin identity
742
- tokens. Must match an allowed audience configured for the target [Workload Identity Pool](https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers#prepare).
743
- Mutually exclusive with `credentials`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
744
- """
745
- return pulumi.get(self, "identity_token_audience")
746
-
747
- @property
748
- @pulumi.getter(name="identityTokenKey")
749
- def identity_token_key(self) -> pulumi.Output[Optional[str]]:
750
- """
751
- The key to use for signing plugin identity
752
- tokens. Requires Vault 1.17+. *Available only for Vault Enterprise*.
753
- """
754
- return pulumi.get(self, "identity_token_key")
755
-
756
- @property
757
- @pulumi.getter(name="identityTokenTtl")
758
- def identity_token_ttl(self) -> pulumi.Output[Optional[int]]:
759
- """
760
- The TTL of generated tokens.
761
- """
762
- return pulumi.get(self, "identity_token_ttl")
763
-
764
507
  @property
765
508
  @pulumi.getter
766
509
  def local(self) -> pulumi.Output[Optional[bool]]:
@@ -798,12 +541,3 @@ class SecretBackend(pulumi.CustomResource):
798
541
  """
799
542
  return pulumi.get(self, "path")
800
543
 
801
- @property
802
- @pulumi.getter(name="serviceAccountEmail")
803
- def service_account_email(self) -> pulumi.Output[Optional[str]]:
804
- """
805
- Service Account to impersonate for plugin workload identity federation.
806
- Required with `identity_token_audience`. Requires Vault 1.17+. *Available only for Vault Enterprise*.
807
- """
808
- return pulumi.get(self, "service_account_email")
809
-
@@ -219,22 +219,23 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
219
219
 
220
220
  ## Example Usage
221
221
 
222
+ <!--Start PulumiCodeChooser -->
222
223
  ```python
223
224
  import pulumi
224
- import pulumi_google as google
225
- import pulumi_std as std
225
+ import pulumi_gcp as gcp
226
226
  import pulumi_vault as vault
227
227
 
228
- this = google.index.ServiceAccount("this", account_id=my-awesome-account)
228
+ this = gcp.service_account.Account("this", account_id="my-awesome-account")
229
229
  gcp = vault.gcp.SecretBackend("gcp",
230
230
  path="gcp",
231
- credentials=std.file(input="credentials.json").result)
232
- impersonated_account = vault.gcp.SecretImpersonatedAccount("impersonated_account",
231
+ credentials=(lambda path: open(path).read())("credentials.json"))
232
+ impersonated_account = vault.gcp.SecretImpersonatedAccount("impersonatedAccount",
233
233
  backend=gcp.path,
234
234
  impersonated_account="this",
235
- service_account_email=this["email"],
235
+ service_account_email=this.email,
236
236
  token_scopes=["https://www.googleapis.com/auth/cloud-platform"])
237
237
  ```
238
+ <!--End PulumiCodeChooser -->
238
239
 
239
240
  ## Import
240
241
 
@@ -266,22 +267,23 @@ class SecretImpersonatedAccount(pulumi.CustomResource):
266
267
 
267
268
  ## Example Usage
268
269
 
270
+ <!--Start PulumiCodeChooser -->
269
271
  ```python
270
272
  import pulumi
271
- import pulumi_google as google
272
- import pulumi_std as std
273
+ import pulumi_gcp as gcp
273
274
  import pulumi_vault as vault
274
275
 
275
- this = google.index.ServiceAccount("this", account_id=my-awesome-account)
276
+ this = gcp.service_account.Account("this", account_id="my-awesome-account")
276
277
  gcp = vault.gcp.SecretBackend("gcp",
277
278
  path="gcp",
278
- credentials=std.file(input="credentials.json").result)
279
- impersonated_account = vault.gcp.SecretImpersonatedAccount("impersonated_account",
279
+ credentials=(lambda path: open(path).read())("credentials.json"))
280
+ impersonated_account = vault.gcp.SecretImpersonatedAccount("impersonatedAccount",
280
281
  backend=gcp.path,
281
282
  impersonated_account="this",
282
- service_account_email=this["email"],
283
+ service_account_email=this.email,
283
284
  token_scopes=["https://www.googleapis.com/auth/cloud-platform"])
284
285
  ```
286
+ <!--End PulumiCodeChooser -->
285
287
 
286
288
  ## Import
287
289
 
@@ -297,15 +297,15 @@ class SecretRoleset(pulumi.CustomResource):
297
297
 
298
298
  ## Example Usage
299
299
 
300
+ <!--Start PulumiCodeChooser -->
300
301
  ```python
301
302
  import pulumi
302
- import pulumi_std as std
303
303
  import pulumi_vault as vault
304
304
 
305
305
  project = "my-awesome-project"
306
306
  gcp = vault.gcp.SecretBackend("gcp",
307
307
  path="gcp",
308
- credentials=std.file(input="credentials.json").result)
308
+ credentials=(lambda path: open(path).read())("credentials.json"))
309
309
  roleset = vault.gcp.SecretRoleset("roleset",
310
310
  backend=gcp.path,
311
311
  roleset="project_viewer",
@@ -317,6 +317,7 @@ class SecretRoleset(pulumi.CustomResource):
317
317
  roles=["roles/viewer"],
318
318
  )])
319
319
  ```
320
+ <!--End PulumiCodeChooser -->
320
321
 
321
322
  ## Import
322
323
 
@@ -352,15 +353,15 @@ class SecretRoleset(pulumi.CustomResource):
352
353
 
353
354
  ## Example Usage
354
355
 
356
+ <!--Start PulumiCodeChooser -->
355
357
  ```python
356
358
  import pulumi
357
- import pulumi_std as std
358
359
  import pulumi_vault as vault
359
360
 
360
361
  project = "my-awesome-project"
361
362
  gcp = vault.gcp.SecretBackend("gcp",
362
363
  path="gcp",
363
- credentials=std.file(input="credentials.json").result)
364
+ credentials=(lambda path: open(path).read())("credentials.json"))
364
365
  roleset = vault.gcp.SecretRoleset("roleset",
365
366
  backend=gcp.path,
366
367
  roleset="project_viewer",
@@ -372,6 +373,7 @@ class SecretRoleset(pulumi.CustomResource):
372
373
  roles=["roles/viewer"],
373
374
  )])
374
375
  ```
376
+ <!--End PulumiCodeChooser -->
375
377
 
376
378
  ## Import
377
379