pulumiverse-scaleway 1.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.

Potentially problematic release.


This version of pulumiverse-scaleway might be problematic. Click here for more details.

Files changed (205) hide show
  1. pulumiverse_scaleway/__init__.py +1073 -0
  2. pulumiverse_scaleway/_inputs.py +8665 -0
  3. pulumiverse_scaleway/_utilities.py +327 -0
  4. pulumiverse_scaleway/account_project.py +316 -0
  5. pulumiverse_scaleway/account_ssh_key.py +450 -0
  6. pulumiverse_scaleway/apple_silicon_server.py +564 -0
  7. pulumiverse_scaleway/baremetal_server.py +1390 -0
  8. pulumiverse_scaleway/block_snapshot.py +391 -0
  9. pulumiverse_scaleway/block_volume.py +521 -0
  10. pulumiverse_scaleway/cockpit.py +299 -0
  11. pulumiverse_scaleway/cockpit_alert_manager.py +345 -0
  12. pulumiverse_scaleway/cockpit_grafana_user.py +326 -0
  13. pulumiverse_scaleway/cockpit_source.py +481 -0
  14. pulumiverse_scaleway/cockpit_token.py +461 -0
  15. pulumiverse_scaleway/config/__init__.py +8 -0
  16. pulumiverse_scaleway/config/__init__.pyi +56 -0
  17. pulumiverse_scaleway/config/vars.py +78 -0
  18. pulumiverse_scaleway/container.py +1387 -0
  19. pulumiverse_scaleway/container_cron.py +493 -0
  20. pulumiverse_scaleway/container_domain.py +400 -0
  21. pulumiverse_scaleway/container_namespace.py +589 -0
  22. pulumiverse_scaleway/container_token.py +454 -0
  23. pulumiverse_scaleway/container_trigger.py +478 -0
  24. pulumiverse_scaleway/database.py +407 -0
  25. pulumiverse_scaleway/database_acl.py +332 -0
  26. pulumiverse_scaleway/database_backup.py +574 -0
  27. pulumiverse_scaleway/database_instance.py +1636 -0
  28. pulumiverse_scaleway/database_privilege.py +422 -0
  29. pulumiverse_scaleway/database_read_replica.py +528 -0
  30. pulumiverse_scaleway/database_user.py +446 -0
  31. pulumiverse_scaleway/documentdb_database.py +450 -0
  32. pulumiverse_scaleway/documentdb_instance.py +812 -0
  33. pulumiverse_scaleway/documentdb_private_network_endpoint.py +352 -0
  34. pulumiverse_scaleway/documentdb_privilege.py +402 -0
  35. pulumiverse_scaleway/documentdb_read_replica.py +405 -0
  36. pulumiverse_scaleway/documentdb_user.py +442 -0
  37. pulumiverse_scaleway/domain_record.py +1074 -0
  38. pulumiverse_scaleway/domain_zone.py +458 -0
  39. pulumiverse_scaleway/flexible_ip.py +702 -0
  40. pulumiverse_scaleway/flexible_ip_mac_address.py +510 -0
  41. pulumiverse_scaleway/function.py +1145 -0
  42. pulumiverse_scaleway/function_cron.py +480 -0
  43. pulumiverse_scaleway/function_domain.py +361 -0
  44. pulumiverse_scaleway/function_namespace.py +533 -0
  45. pulumiverse_scaleway/function_token.py +462 -0
  46. pulumiverse_scaleway/function_trigger.py +478 -0
  47. pulumiverse_scaleway/get_account_project.py +164 -0
  48. pulumiverse_scaleway/get_account_ssh_key.py +201 -0
  49. pulumiverse_scaleway/get_availability_zones.py +131 -0
  50. pulumiverse_scaleway/get_baremetal_offer.py +245 -0
  51. pulumiverse_scaleway/get_baremetal_option.py +168 -0
  52. pulumiverse_scaleway/get_baremetal_os.py +174 -0
  53. pulumiverse_scaleway/get_baremetal_server.py +411 -0
  54. pulumiverse_scaleway/get_billing_consumptions.py +134 -0
  55. pulumiverse_scaleway/get_billing_invoices.py +154 -0
  56. pulumiverse_scaleway/get_block_snapshot.py +170 -0
  57. pulumiverse_scaleway/get_block_volume.py +186 -0
  58. pulumiverse_scaleway/get_cockpit.py +179 -0
  59. pulumiverse_scaleway/get_cockpit_plan.py +113 -0
  60. pulumiverse_scaleway/get_config.py +180 -0
  61. pulumiverse_scaleway/get_container.py +502 -0
  62. pulumiverse_scaleway/get_container_namespace.py +262 -0
  63. pulumiverse_scaleway/get_database.py +187 -0
  64. pulumiverse_scaleway/get_database_acl.py +143 -0
  65. pulumiverse_scaleway/get_database_backup.py +253 -0
  66. pulumiverse_scaleway/get_database_instance.py +404 -0
  67. pulumiverse_scaleway/get_database_privilege.py +181 -0
  68. pulumiverse_scaleway/get_documentdb_database.py +198 -0
  69. pulumiverse_scaleway/get_documentdb_instance.py +245 -0
  70. pulumiverse_scaleway/get_documentdb_load_balancer_endpoint.py +198 -0
  71. pulumiverse_scaleway/get_domain_record.py +334 -0
  72. pulumiverse_scaleway/get_domain_zone.py +225 -0
  73. pulumiverse_scaleway/get_flexible_ip.py +247 -0
  74. pulumiverse_scaleway/get_flexible_ips.py +240 -0
  75. pulumiverse_scaleway/get_function.py +357 -0
  76. pulumiverse_scaleway/get_function_namespace.py +227 -0
  77. pulumiverse_scaleway/get_iam_api_key.py +210 -0
  78. pulumiverse_scaleway/get_iam_application.py +210 -0
  79. pulumiverse_scaleway/get_iam_group.py +236 -0
  80. pulumiverse_scaleway/get_iam_ssh_key.py +212 -0
  81. pulumiverse_scaleway/get_iam_user.py +157 -0
  82. pulumiverse_scaleway/get_instance_image.py +305 -0
  83. pulumiverse_scaleway/get_instance_ip.py +204 -0
  84. pulumiverse_scaleway/get_instance_placement_group.py +212 -0
  85. pulumiverse_scaleway/get_instance_private_nic.py +215 -0
  86. pulumiverse_scaleway/get_instance_security_group.py +268 -0
  87. pulumiverse_scaleway/get_instance_server.py +502 -0
  88. pulumiverse_scaleway/get_instance_servers.py +187 -0
  89. pulumiverse_scaleway/get_instance_snapshot.py +248 -0
  90. pulumiverse_scaleway/get_instance_volume.py +215 -0
  91. pulumiverse_scaleway/get_iot_device.py +257 -0
  92. pulumiverse_scaleway/get_iot_hub.py +322 -0
  93. pulumiverse_scaleway/get_ipam_ip.py +419 -0
  94. pulumiverse_scaleway/get_ipam_ips.py +358 -0
  95. pulumiverse_scaleway/get_k8s_version.py +196 -0
  96. pulumiverse_scaleway/get_kubernetes_cluster.py +417 -0
  97. pulumiverse_scaleway/get_kubernetes_node_pool.py +436 -0
  98. pulumiverse_scaleway/get_lb_acls.py +198 -0
  99. pulumiverse_scaleway/get_lb_backend.py +486 -0
  100. pulumiverse_scaleway/get_lb_backends.py +196 -0
  101. pulumiverse_scaleway/get_lb_frontend.py +274 -0
  102. pulumiverse_scaleway/get_lb_frontends.py +196 -0
  103. pulumiverse_scaleway/get_lb_ips.py +198 -0
  104. pulumiverse_scaleway/get_lb_route.py +217 -0
  105. pulumiverse_scaleway/get_lb_routes.py +179 -0
  106. pulumiverse_scaleway/get_lbs.py +187 -0
  107. pulumiverse_scaleway/get_loadbalancer.py +339 -0
  108. pulumiverse_scaleway/get_loadbalancer_certificate.py +230 -0
  109. pulumiverse_scaleway/get_loadbalancer_ip.py +222 -0
  110. pulumiverse_scaleway/get_marketplace_image.py +147 -0
  111. pulumiverse_scaleway/get_mnq_sqs.py +150 -0
  112. pulumiverse_scaleway/get_object_bucket.py +278 -0
  113. pulumiverse_scaleway/get_object_bucket_policy.py +157 -0
  114. pulumiverse_scaleway/get_redis_cluster.py +347 -0
  115. pulumiverse_scaleway/get_registry_image.py +239 -0
  116. pulumiverse_scaleway/get_registry_namespace.py +199 -0
  117. pulumiverse_scaleway/get_secret.py +290 -0
  118. pulumiverse_scaleway/get_secret_version.py +303 -0
  119. pulumiverse_scaleway/get_tem_domain.py +367 -0
  120. pulumiverse_scaleway/get_vpc.py +246 -0
  121. pulumiverse_scaleway/get_vpc_gateway_network.py +287 -0
  122. pulumiverse_scaleway/get_vpc_private_network.py +282 -0
  123. pulumiverse_scaleway/get_vpc_public_gateway.py +304 -0
  124. pulumiverse_scaleway/get_vpc_public_gateway_dhcp.py +305 -0
  125. pulumiverse_scaleway/get_vpc_public_gateway_dhcp_reservation.py +382 -0
  126. pulumiverse_scaleway/get_vpc_public_gateway_ip.py +199 -0
  127. pulumiverse_scaleway/get_vpc_public_pat_rule.py +313 -0
  128. pulumiverse_scaleway/get_vpc_routes.py +208 -0
  129. pulumiverse_scaleway/get_vpcs.py +174 -0
  130. pulumiverse_scaleway/get_web_host_offer.py +192 -0
  131. pulumiverse_scaleway/get_webhosting.py +332 -0
  132. pulumiverse_scaleway/iam_api_key.py +620 -0
  133. pulumiverse_scaleway/iam_application.py +417 -0
  134. pulumiverse_scaleway/iam_group.py +566 -0
  135. pulumiverse_scaleway/iam_group_membership.py +323 -0
  136. pulumiverse_scaleway/iam_policy.py +727 -0
  137. pulumiverse_scaleway/iam_ssh_key.py +455 -0
  138. pulumiverse_scaleway/iam_user.py +466 -0
  139. pulumiverse_scaleway/instance_image.py +750 -0
  140. pulumiverse_scaleway/instance_ip.py +483 -0
  141. pulumiverse_scaleway/instance_ip_reverse_dns.py +308 -0
  142. pulumiverse_scaleway/instance_placement_group.py +479 -0
  143. pulumiverse_scaleway/instance_private_nic.py +454 -0
  144. pulumiverse_scaleway/instance_security_group.py +720 -0
  145. pulumiverse_scaleway/instance_security_group_rules.py +439 -0
  146. pulumiverse_scaleway/instance_server.py +1907 -0
  147. pulumiverse_scaleway/instance_snapshot.py +669 -0
  148. pulumiverse_scaleway/instance_user_data.py +435 -0
  149. pulumiverse_scaleway/instance_volume.py +535 -0
  150. pulumiverse_scaleway/iot_device.py +750 -0
  151. pulumiverse_scaleway/iot_hub.py +896 -0
  152. pulumiverse_scaleway/iot_network.py +425 -0
  153. pulumiverse_scaleway/iot_route.py +660 -0
  154. pulumiverse_scaleway/ipam_ip.py +666 -0
  155. pulumiverse_scaleway/ipam_ip_reverse_dns.py +318 -0
  156. pulumiverse_scaleway/job_definition.py +692 -0
  157. pulumiverse_scaleway/kubernetes_cluster.py +1538 -0
  158. pulumiverse_scaleway/kubernetes_node_pool.py +1255 -0
  159. pulumiverse_scaleway/loadbalancer.py +1095 -0
  160. pulumiverse_scaleway/loadbalancer_acl.py +520 -0
  161. pulumiverse_scaleway/loadbalancer_backend.py +1588 -0
  162. pulumiverse_scaleway/loadbalancer_certificate.py +460 -0
  163. pulumiverse_scaleway/loadbalancer_frontend.py +829 -0
  164. pulumiverse_scaleway/loadbalancer_ip.py +514 -0
  165. pulumiverse_scaleway/loadbalancer_route.py +523 -0
  166. pulumiverse_scaleway/mnq_nats_account.py +334 -0
  167. pulumiverse_scaleway/mnq_nats_credentials.py +328 -0
  168. pulumiverse_scaleway/mnq_sns.py +306 -0
  169. pulumiverse_scaleway/mnq_sns_credentials.py +413 -0
  170. pulumiverse_scaleway/mnq_sns_topic.py +659 -0
  171. pulumiverse_scaleway/mnq_sns_topic_subscription.py +699 -0
  172. pulumiverse_scaleway/mnq_sqs.py +304 -0
  173. pulumiverse_scaleway/mnq_sqs_credentials.py +413 -0
  174. pulumiverse_scaleway/mnq_sqs_queue.py +800 -0
  175. pulumiverse_scaleway/object_bucket.py +888 -0
  176. pulumiverse_scaleway/object_bucket_acl.py +592 -0
  177. pulumiverse_scaleway/object_bucket_lock_configuration.py +393 -0
  178. pulumiverse_scaleway/object_bucket_policy.py +671 -0
  179. pulumiverse_scaleway/object_bucket_website_configuration.py +532 -0
  180. pulumiverse_scaleway/object_item.py +711 -0
  181. pulumiverse_scaleway/outputs.py +11663 -0
  182. pulumiverse_scaleway/provider.py +327 -0
  183. pulumiverse_scaleway/pulumi-plugin.json +6 -0
  184. pulumiverse_scaleway/py.typed +0 -0
  185. pulumiverse_scaleway/redis_cluster.py +1166 -0
  186. pulumiverse_scaleway/registry_namespace.py +458 -0
  187. pulumiverse_scaleway/sdb_database.py +428 -0
  188. pulumiverse_scaleway/secret.py +560 -0
  189. pulumiverse_scaleway/secret_version.py +482 -0
  190. pulumiverse_scaleway/tem_domain.py +950 -0
  191. pulumiverse_scaleway/tem_domain_validation.py +303 -0
  192. pulumiverse_scaleway/vpc.py +536 -0
  193. pulumiverse_scaleway/vpc_gateway_network.py +866 -0
  194. pulumiverse_scaleway/vpc_private_network.py +734 -0
  195. pulumiverse_scaleway/vpc_public_gateway.py +789 -0
  196. pulumiverse_scaleway/vpc_public_gateway_dhcp.py +933 -0
  197. pulumiverse_scaleway/vpc_public_gateway_dhcp_reservation.py +514 -0
  198. pulumiverse_scaleway/vpc_public_gateway_ip.py +457 -0
  199. pulumiverse_scaleway/vpc_public_gateway_ip_reverse_dns.py +306 -0
  200. pulumiverse_scaleway/vpc_public_gateway_pat_rule.py +591 -0
  201. pulumiverse_scaleway/webhosting.py +805 -0
  202. pulumiverse_scaleway-1.16.0.dist-info/METADATA +69 -0
  203. pulumiverse_scaleway-1.16.0.dist-info/RECORD +205 -0
  204. pulumiverse_scaleway-1.16.0.dist-info/WHEEL +5 -0
  205. pulumiverse_scaleway-1.16.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,671 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+
17
+ __all__ = ['ObjectBucketPolicyArgs', 'ObjectBucketPolicy']
18
+
19
+ @pulumi.input_type
20
+ class ObjectBucketPolicyArgs:
21
+ def __init__(__self__, *,
22
+ bucket: pulumi.Input[str],
23
+ policy: pulumi.Input[str],
24
+ project_id: Optional[pulumi.Input[str]] = None,
25
+ region: Optional[pulumi.Input[str]] = None):
26
+ """
27
+ The set of arguments for constructing a ObjectBucketPolicy resource.
28
+ :param pulumi.Input[str] bucket: The bucket's name or regional ID.
29
+ :param pulumi.Input[str] policy: The text of the policy.
30
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
31
+ :param pulumi.Input[str] region: The Scaleway region this bucket resides in.
32
+ """
33
+ pulumi.set(__self__, "bucket", bucket)
34
+ pulumi.set(__self__, "policy", policy)
35
+ if project_id is not None:
36
+ pulumi.set(__self__, "project_id", project_id)
37
+ if region is not None:
38
+ pulumi.set(__self__, "region", region)
39
+
40
+ @property
41
+ @pulumi.getter
42
+ def bucket(self) -> pulumi.Input[str]:
43
+ """
44
+ The bucket's name or regional ID.
45
+ """
46
+ return pulumi.get(self, "bucket")
47
+
48
+ @bucket.setter
49
+ def bucket(self, value: pulumi.Input[str]):
50
+ pulumi.set(self, "bucket", value)
51
+
52
+ @property
53
+ @pulumi.getter
54
+ def policy(self) -> pulumi.Input[str]:
55
+ """
56
+ The text of the policy.
57
+ """
58
+ return pulumi.get(self, "policy")
59
+
60
+ @policy.setter
61
+ def policy(self, value: pulumi.Input[str]):
62
+ pulumi.set(self, "policy", value)
63
+
64
+ @property
65
+ @pulumi.getter(name="projectId")
66
+ def project_id(self) -> Optional[pulumi.Input[str]]:
67
+ """
68
+ The project_id you want to attach the resource to
69
+ """
70
+ return pulumi.get(self, "project_id")
71
+
72
+ @project_id.setter
73
+ def project_id(self, value: Optional[pulumi.Input[str]]):
74
+ pulumi.set(self, "project_id", value)
75
+
76
+ @property
77
+ @pulumi.getter
78
+ def region(self) -> Optional[pulumi.Input[str]]:
79
+ """
80
+ The Scaleway region this bucket resides in.
81
+ """
82
+ return pulumi.get(self, "region")
83
+
84
+ @region.setter
85
+ def region(self, value: Optional[pulumi.Input[str]]):
86
+ pulumi.set(self, "region", value)
87
+
88
+
89
+ @pulumi.input_type
90
+ class _ObjectBucketPolicyState:
91
+ def __init__(__self__, *,
92
+ bucket: Optional[pulumi.Input[str]] = None,
93
+ policy: Optional[pulumi.Input[str]] = None,
94
+ project_id: Optional[pulumi.Input[str]] = None,
95
+ region: Optional[pulumi.Input[str]] = None):
96
+ """
97
+ Input properties used for looking up and filtering ObjectBucketPolicy resources.
98
+ :param pulumi.Input[str] bucket: The bucket's name or regional ID.
99
+ :param pulumi.Input[str] policy: The text of the policy.
100
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
101
+ :param pulumi.Input[str] region: The Scaleway region this bucket resides in.
102
+ """
103
+ if bucket is not None:
104
+ pulumi.set(__self__, "bucket", bucket)
105
+ if policy is not None:
106
+ pulumi.set(__self__, "policy", policy)
107
+ if project_id is not None:
108
+ pulumi.set(__self__, "project_id", project_id)
109
+ if region is not None:
110
+ pulumi.set(__self__, "region", region)
111
+
112
+ @property
113
+ @pulumi.getter
114
+ def bucket(self) -> Optional[pulumi.Input[str]]:
115
+ """
116
+ The bucket's name or regional ID.
117
+ """
118
+ return pulumi.get(self, "bucket")
119
+
120
+ @bucket.setter
121
+ def bucket(self, value: Optional[pulumi.Input[str]]):
122
+ pulumi.set(self, "bucket", value)
123
+
124
+ @property
125
+ @pulumi.getter
126
+ def policy(self) -> Optional[pulumi.Input[str]]:
127
+ """
128
+ The text of the policy.
129
+ """
130
+ return pulumi.get(self, "policy")
131
+
132
+ @policy.setter
133
+ def policy(self, value: Optional[pulumi.Input[str]]):
134
+ pulumi.set(self, "policy", value)
135
+
136
+ @property
137
+ @pulumi.getter(name="projectId")
138
+ def project_id(self) -> Optional[pulumi.Input[str]]:
139
+ """
140
+ The project_id you want to attach the resource to
141
+ """
142
+ return pulumi.get(self, "project_id")
143
+
144
+ @project_id.setter
145
+ def project_id(self, value: Optional[pulumi.Input[str]]):
146
+ pulumi.set(self, "project_id", value)
147
+
148
+ @property
149
+ @pulumi.getter
150
+ def region(self) -> Optional[pulumi.Input[str]]:
151
+ """
152
+ The Scaleway region this bucket resides in.
153
+ """
154
+ return pulumi.get(self, "region")
155
+
156
+ @region.setter
157
+ def region(self, value: Optional[pulumi.Input[str]]):
158
+ pulumi.set(self, "region", value)
159
+
160
+
161
+ class ObjectBucketPolicy(pulumi.CustomResource):
162
+ @overload
163
+ def __init__(__self__,
164
+ resource_name: str,
165
+ opts: Optional[pulumi.ResourceOptions] = None,
166
+ bucket: Optional[pulumi.Input[str]] = None,
167
+ policy: Optional[pulumi.Input[str]] = None,
168
+ project_id: Optional[pulumi.Input[str]] = None,
169
+ region: Optional[pulumi.Input[str]] = None,
170
+ __props__=None):
171
+ """
172
+ Creates and manages Scaleway object storage bucket policy.
173
+ For more information, see [the documentation](https://www.scaleway.com/en/docs/storage/object/api-cli/bucket-policy/).
174
+
175
+ ## Example Usage
176
+
177
+ ### Example Usage with an IAM user
178
+
179
+ ```python
180
+ import pulumi
181
+ import json
182
+ import pulumi_scaleway as scaleway
183
+ import pulumiverse_scaleway as scaleway
184
+
185
+ # Project ID
186
+ default = scaleway.get_account_project(name="default")
187
+ # IAM configuration
188
+ user = scaleway.get_iam_user(email="user@scaleway.com")
189
+ policy = scaleway.IamPolicy("policy",
190
+ name="object-storage-policy",
191
+ user_id=user.id,
192
+ rules=[{
193
+ "project_ids": [default.id],
194
+ "permission_set_names": ["ObjectStorageFullAccess"],
195
+ }])
196
+ # Object storage configuration
197
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
198
+ policy_object_bucket_policy = scaleway.ObjectBucketPolicy("policy",
199
+ bucket=bucket.name,
200
+ policy=pulumi.Output.json_dumps({
201
+ "Version": "2023-04-17",
202
+ "Id": "MyBucketPolicy",
203
+ "Statement": [{
204
+ "Effect": "Allow",
205
+ "Action": ["s3:*"],
206
+ "Principal": {
207
+ "SCW": f"user_id:{user.id}",
208
+ },
209
+ "Resource": [
210
+ bucket.name,
211
+ bucket.name.apply(lambda name: f"{name}/*"),
212
+ ],
213
+ }],
214
+ }))
215
+ ```
216
+
217
+ ### Example with an IAM application
218
+
219
+ ### Creating a bucket and delegating read access to an application
220
+
221
+ ```python
222
+ import pulumi
223
+ import json
224
+ import pulumi_scaleway as scaleway
225
+ import pulumiverse_scaleway as scaleway
226
+
227
+ # Project ID
228
+ default = scaleway.get_account_project(name="default")
229
+ # IAM configuration
230
+ reading_app = scaleway.IamApplication("reading-app", name="reading-app")
231
+ policy = scaleway.IamPolicy("policy",
232
+ name="object-storage-policy",
233
+ application_id=reading_app.id,
234
+ rules=[{
235
+ "project_ids": [default.id],
236
+ "permission_set_names": ["ObjectStorageBucketsRead"],
237
+ }])
238
+ # Object storage configuration
239
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
240
+ policy_object_bucket_policy = scaleway.ObjectBucketPolicy("policy",
241
+ bucket=bucket.id,
242
+ policy=pulumi.Output.json_dumps({
243
+ "Version": "2023-04-17",
244
+ "Statement": [{
245
+ "Sid": "Delegate read access",
246
+ "Effect": "Allow",
247
+ "Principal": {
248
+ "SCW": reading_app.id.apply(lambda id: f"application_id:{id}"),
249
+ },
250
+ "Action": [
251
+ "s3:ListBucket",
252
+ "s3:GetObject",
253
+ ],
254
+ "Resource": [
255
+ bucket.name,
256
+ bucket.name.apply(lambda name: f"{name}/*"),
257
+ ],
258
+ }],
259
+ }))
260
+ ```
261
+
262
+ ### Reading the bucket with the application
263
+
264
+ ```python
265
+ import pulumi
266
+ import pulumi_scaleway as scaleway
267
+ import pulumiverse_scaleway as scaleway
268
+
269
+ reading_app = scaleway.get_iam_application(name="reading-app")
270
+ reading_api_key = scaleway.IamApiKey("reading-api-key", application_id=reading_app.id)
271
+ bucket = scaleway.get_object_bucket(name="some-unique-name")
272
+ ```
273
+
274
+ ### Example with AWS provider
275
+
276
+ ```python
277
+ import pulumi
278
+ import pulumi_aws as aws
279
+ import pulumi_scaleway as scaleway
280
+ import pulumiverse_scaleway as scaleway
281
+
282
+ # Scaleway project ID
283
+ default = scaleway.get_account_project(name="default")
284
+ # Object storage configuration
285
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
286
+ # AWS data source
287
+ policy = aws.iam.get_policy_document_output(version="2012-10-17",
288
+ statements=[{
289
+ "sid": "Delegate access",
290
+ "effect": "Allow",
291
+ "principals": [{
292
+ "type": "SCW",
293
+ "identifiers": [f"project_id:{default.id}"],
294
+ }],
295
+ "actions": ["s3:ListBucket"],
296
+ "resources": [
297
+ bucket.name,
298
+ bucket.name.apply(lambda name: f"{name}/*"),
299
+ ],
300
+ }])
301
+ main = scaleway.ObjectBucketPolicy("main",
302
+ bucket=bucket.id,
303
+ policy=policy.json)
304
+ ```
305
+
306
+ ### Example with deprecated version 2012-10-17
307
+
308
+ ```python
309
+ import pulumi
310
+ import json
311
+ import pulumi_scaleway as scaleway
312
+ import pulumiverse_scaleway as scaleway
313
+
314
+ # Project ID
315
+ default = scaleway.get_account_project(name="default")
316
+ # Object storage configuration
317
+ bucket = scaleway.ObjectBucket("bucket",
318
+ name="mia-cross-crash-tests",
319
+ region="fr-par")
320
+ policy = scaleway.ObjectBucketPolicy("policy",
321
+ bucket=bucket.name,
322
+ policy=pulumi.Output.json_dumps({
323
+ "Version": "2012-10-17",
324
+ "Statement": [{
325
+ "Effect": "Allow",
326
+ "Action": [
327
+ "s3:ListBucket",
328
+ "s3:GetObjectTagging",
329
+ ],
330
+ "Principal": {
331
+ "SCW": f"project_id:{default.id}",
332
+ },
333
+ "Resource": [
334
+ bucket.name,
335
+ bucket.name.apply(lambda name: f"{name}/*"),
336
+ ],
337
+ }],
338
+ }))
339
+ ```
340
+
341
+ **NB:** To configure the AWS provider with Scaleway credentials, please visit this [tutorial](https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/).
342
+
343
+ ## Import
344
+
345
+ Bucket policies can be imported using the `{region}/{bucketName}` identifier, e.g.
346
+
347
+ bash
348
+
349
+ ```sh
350
+ $ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket
351
+ ```
352
+
353
+ ~> **Important:** The `project_id` attribute has a particular behavior with s3 products because the s3 API is scoped by project.
354
+
355
+ If you are using a project different from the default one, you have to specify the project ID at the end of the import command.
356
+
357
+ bash
358
+
359
+ ```sh
360
+ $ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
361
+ ```
362
+
363
+ :param str resource_name: The name of the resource.
364
+ :param pulumi.ResourceOptions opts: Options for the resource.
365
+ :param pulumi.Input[str] bucket: The bucket's name or regional ID.
366
+ :param pulumi.Input[str] policy: The text of the policy.
367
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
368
+ :param pulumi.Input[str] region: The Scaleway region this bucket resides in.
369
+ """
370
+ ...
371
+ @overload
372
+ def __init__(__self__,
373
+ resource_name: str,
374
+ args: ObjectBucketPolicyArgs,
375
+ opts: Optional[pulumi.ResourceOptions] = None):
376
+ """
377
+ Creates and manages Scaleway object storage bucket policy.
378
+ For more information, see [the documentation](https://www.scaleway.com/en/docs/storage/object/api-cli/bucket-policy/).
379
+
380
+ ## Example Usage
381
+
382
+ ### Example Usage with an IAM user
383
+
384
+ ```python
385
+ import pulumi
386
+ import json
387
+ import pulumi_scaleway as scaleway
388
+ import pulumiverse_scaleway as scaleway
389
+
390
+ # Project ID
391
+ default = scaleway.get_account_project(name="default")
392
+ # IAM configuration
393
+ user = scaleway.get_iam_user(email="user@scaleway.com")
394
+ policy = scaleway.IamPolicy("policy",
395
+ name="object-storage-policy",
396
+ user_id=user.id,
397
+ rules=[{
398
+ "project_ids": [default.id],
399
+ "permission_set_names": ["ObjectStorageFullAccess"],
400
+ }])
401
+ # Object storage configuration
402
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
403
+ policy_object_bucket_policy = scaleway.ObjectBucketPolicy("policy",
404
+ bucket=bucket.name,
405
+ policy=pulumi.Output.json_dumps({
406
+ "Version": "2023-04-17",
407
+ "Id": "MyBucketPolicy",
408
+ "Statement": [{
409
+ "Effect": "Allow",
410
+ "Action": ["s3:*"],
411
+ "Principal": {
412
+ "SCW": f"user_id:{user.id}",
413
+ },
414
+ "Resource": [
415
+ bucket.name,
416
+ bucket.name.apply(lambda name: f"{name}/*"),
417
+ ],
418
+ }],
419
+ }))
420
+ ```
421
+
422
+ ### Example with an IAM application
423
+
424
+ ### Creating a bucket and delegating read access to an application
425
+
426
+ ```python
427
+ import pulumi
428
+ import json
429
+ import pulumi_scaleway as scaleway
430
+ import pulumiverse_scaleway as scaleway
431
+
432
+ # Project ID
433
+ default = scaleway.get_account_project(name="default")
434
+ # IAM configuration
435
+ reading_app = scaleway.IamApplication("reading-app", name="reading-app")
436
+ policy = scaleway.IamPolicy("policy",
437
+ name="object-storage-policy",
438
+ application_id=reading_app.id,
439
+ rules=[{
440
+ "project_ids": [default.id],
441
+ "permission_set_names": ["ObjectStorageBucketsRead"],
442
+ }])
443
+ # Object storage configuration
444
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
445
+ policy_object_bucket_policy = scaleway.ObjectBucketPolicy("policy",
446
+ bucket=bucket.id,
447
+ policy=pulumi.Output.json_dumps({
448
+ "Version": "2023-04-17",
449
+ "Statement": [{
450
+ "Sid": "Delegate read access",
451
+ "Effect": "Allow",
452
+ "Principal": {
453
+ "SCW": reading_app.id.apply(lambda id: f"application_id:{id}"),
454
+ },
455
+ "Action": [
456
+ "s3:ListBucket",
457
+ "s3:GetObject",
458
+ ],
459
+ "Resource": [
460
+ bucket.name,
461
+ bucket.name.apply(lambda name: f"{name}/*"),
462
+ ],
463
+ }],
464
+ }))
465
+ ```
466
+
467
+ ### Reading the bucket with the application
468
+
469
+ ```python
470
+ import pulumi
471
+ import pulumi_scaleway as scaleway
472
+ import pulumiverse_scaleway as scaleway
473
+
474
+ reading_app = scaleway.get_iam_application(name="reading-app")
475
+ reading_api_key = scaleway.IamApiKey("reading-api-key", application_id=reading_app.id)
476
+ bucket = scaleway.get_object_bucket(name="some-unique-name")
477
+ ```
478
+
479
+ ### Example with AWS provider
480
+
481
+ ```python
482
+ import pulumi
483
+ import pulumi_aws as aws
484
+ import pulumi_scaleway as scaleway
485
+ import pulumiverse_scaleway as scaleway
486
+
487
+ # Scaleway project ID
488
+ default = scaleway.get_account_project(name="default")
489
+ # Object storage configuration
490
+ bucket = scaleway.ObjectBucket("bucket", name="some-unique-name")
491
+ # AWS data source
492
+ policy = aws.iam.get_policy_document_output(version="2012-10-17",
493
+ statements=[{
494
+ "sid": "Delegate access",
495
+ "effect": "Allow",
496
+ "principals": [{
497
+ "type": "SCW",
498
+ "identifiers": [f"project_id:{default.id}"],
499
+ }],
500
+ "actions": ["s3:ListBucket"],
501
+ "resources": [
502
+ bucket.name,
503
+ bucket.name.apply(lambda name: f"{name}/*"),
504
+ ],
505
+ }])
506
+ main = scaleway.ObjectBucketPolicy("main",
507
+ bucket=bucket.id,
508
+ policy=policy.json)
509
+ ```
510
+
511
+ ### Example with deprecated version 2012-10-17
512
+
513
+ ```python
514
+ import pulumi
515
+ import json
516
+ import pulumi_scaleway as scaleway
517
+ import pulumiverse_scaleway as scaleway
518
+
519
+ # Project ID
520
+ default = scaleway.get_account_project(name="default")
521
+ # Object storage configuration
522
+ bucket = scaleway.ObjectBucket("bucket",
523
+ name="mia-cross-crash-tests",
524
+ region="fr-par")
525
+ policy = scaleway.ObjectBucketPolicy("policy",
526
+ bucket=bucket.name,
527
+ policy=pulumi.Output.json_dumps({
528
+ "Version": "2012-10-17",
529
+ "Statement": [{
530
+ "Effect": "Allow",
531
+ "Action": [
532
+ "s3:ListBucket",
533
+ "s3:GetObjectTagging",
534
+ ],
535
+ "Principal": {
536
+ "SCW": f"project_id:{default.id}",
537
+ },
538
+ "Resource": [
539
+ bucket.name,
540
+ bucket.name.apply(lambda name: f"{name}/*"),
541
+ ],
542
+ }],
543
+ }))
544
+ ```
545
+
546
+ **NB:** To configure the AWS provider with Scaleway credentials, please visit this [tutorial](https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/).
547
+
548
+ ## Import
549
+
550
+ Bucket policies can be imported using the `{region}/{bucketName}` identifier, e.g.
551
+
552
+ bash
553
+
554
+ ```sh
555
+ $ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket
556
+ ```
557
+
558
+ ~> **Important:** The `project_id` attribute has a particular behavior with s3 products because the s3 API is scoped by project.
559
+
560
+ If you are using a project different from the default one, you have to specify the project ID at the end of the import command.
561
+
562
+ bash
563
+
564
+ ```sh
565
+ $ pulumi import scaleway:index/objectBucketPolicy:ObjectBucketPolicy some_bucket fr-par/some-bucket@xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
566
+ ```
567
+
568
+ :param str resource_name: The name of the resource.
569
+ :param ObjectBucketPolicyArgs args: The arguments to use to populate this resource's properties.
570
+ :param pulumi.ResourceOptions opts: Options for the resource.
571
+ """
572
+ ...
573
+ def __init__(__self__, resource_name: str, *args, **kwargs):
574
+ resource_args, opts = _utilities.get_resource_args_opts(ObjectBucketPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
575
+ if resource_args is not None:
576
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
577
+ else:
578
+ __self__._internal_init(resource_name, *args, **kwargs)
579
+
580
+ def _internal_init(__self__,
581
+ resource_name: str,
582
+ opts: Optional[pulumi.ResourceOptions] = None,
583
+ bucket: Optional[pulumi.Input[str]] = None,
584
+ policy: Optional[pulumi.Input[str]] = None,
585
+ project_id: Optional[pulumi.Input[str]] = None,
586
+ region: Optional[pulumi.Input[str]] = None,
587
+ __props__=None):
588
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
589
+ if not isinstance(opts, pulumi.ResourceOptions):
590
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
591
+ if opts.id is None:
592
+ if __props__ is not None:
593
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
594
+ __props__ = ObjectBucketPolicyArgs.__new__(ObjectBucketPolicyArgs)
595
+
596
+ if bucket is None and not opts.urn:
597
+ raise TypeError("Missing required property 'bucket'")
598
+ __props__.__dict__["bucket"] = bucket
599
+ if policy is None and not opts.urn:
600
+ raise TypeError("Missing required property 'policy'")
601
+ __props__.__dict__["policy"] = policy
602
+ __props__.__dict__["project_id"] = project_id
603
+ __props__.__dict__["region"] = region
604
+ super(ObjectBucketPolicy, __self__).__init__(
605
+ 'scaleway:index/objectBucketPolicy:ObjectBucketPolicy',
606
+ resource_name,
607
+ __props__,
608
+ opts)
609
+
610
+ @staticmethod
611
+ def get(resource_name: str,
612
+ id: pulumi.Input[str],
613
+ opts: Optional[pulumi.ResourceOptions] = None,
614
+ bucket: Optional[pulumi.Input[str]] = None,
615
+ policy: Optional[pulumi.Input[str]] = None,
616
+ project_id: Optional[pulumi.Input[str]] = None,
617
+ region: Optional[pulumi.Input[str]] = None) -> 'ObjectBucketPolicy':
618
+ """
619
+ Get an existing ObjectBucketPolicy resource's state with the given name, id, and optional extra
620
+ properties used to qualify the lookup.
621
+
622
+ :param str resource_name: The unique name of the resulting resource.
623
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
624
+ :param pulumi.ResourceOptions opts: Options for the resource.
625
+ :param pulumi.Input[str] bucket: The bucket's name or regional ID.
626
+ :param pulumi.Input[str] policy: The text of the policy.
627
+ :param pulumi.Input[str] project_id: The project_id you want to attach the resource to
628
+ :param pulumi.Input[str] region: The Scaleway region this bucket resides in.
629
+ """
630
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
631
+
632
+ __props__ = _ObjectBucketPolicyState.__new__(_ObjectBucketPolicyState)
633
+
634
+ __props__.__dict__["bucket"] = bucket
635
+ __props__.__dict__["policy"] = policy
636
+ __props__.__dict__["project_id"] = project_id
637
+ __props__.__dict__["region"] = region
638
+ return ObjectBucketPolicy(resource_name, opts=opts, __props__=__props__)
639
+
640
+ @property
641
+ @pulumi.getter
642
+ def bucket(self) -> pulumi.Output[str]:
643
+ """
644
+ The bucket's name or regional ID.
645
+ """
646
+ return pulumi.get(self, "bucket")
647
+
648
+ @property
649
+ @pulumi.getter
650
+ def policy(self) -> pulumi.Output[str]:
651
+ """
652
+ The text of the policy.
653
+ """
654
+ return pulumi.get(self, "policy")
655
+
656
+ @property
657
+ @pulumi.getter(name="projectId")
658
+ def project_id(self) -> pulumi.Output[str]:
659
+ """
660
+ The project_id you want to attach the resource to
661
+ """
662
+ return pulumi.get(self, "project_id")
663
+
664
+ @property
665
+ @pulumi.getter
666
+ def region(self) -> pulumi.Output[str]:
667
+ """
668
+ The Scaleway region this bucket resides in.
669
+ """
670
+ return pulumi.get(self, "region")
671
+