Skip to content

Commit 7c06858

Browse files
authored
Try with v5 cloudflare provider (#11)
* Try with v5 cloudflare provider * Add a test for write token * Add comment about version support
1 parent b05f051 commit 7c06858

File tree

5 files changed

+55
-38
lines changed

5 files changed

+55
-38
lines changed

.github/testing/main.tf

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ terraform {
22
required_providers {
33
cloudflare = {
44
source = "cloudflare/cloudflare"
5-
version = ">= 4.7.0"
5+
version = ">= 5, <6"
66
}
77
random = {
88
source = "hashicorp/random"
9-
version = "3.5.1"
9+
version = "3.7.1"
1010
}
1111
}
1212
}
@@ -42,14 +42,22 @@ resource "cloudflare_r2_bucket" "test2" {
4242
name = random_string.bucket2_name.result
4343
}
4444

45-
module "r2-api-token" {
45+
module "r2-api-token-read" {
4646
source = "../.."
4747
account_id = var.account_id
4848
buckets = [cloudflare_r2_bucket.test1.name, cloudflare_r2_bucket.test2.name]
4949
bucket_write = false
5050
expires_on = timeadd(timestamp(), "10m")
5151
}
5252

53+
module "r2-api-token-write" {
54+
source = "../.."
55+
account_id = var.account_id
56+
buckets = [cloudflare_r2_bucket.test2.name]
57+
bucket_write = true
58+
expires_on = timeadd(timestamp(), "10m")
59+
}
60+
5361
module "r2-api-token_custom_name" {
5462
source = "../.."
5563
account_id = var.account_id
@@ -66,12 +74,10 @@ module "r2-api-token_wildcard" {
6674
expires_on = timeadd(timestamp(), "10m")
6775
}
6876

69-
70-
7177
module "r2-api-token_eu" {
7278
source = "../.."
7379
account_id = var.account_id
7480
bucket_write = false
7581
expires_on = timeadd(timestamp(), "10m")
7682
jurisdiction = "eu"
77-
}
83+
}

.terraform-docs.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ output:
2121
write = false
2222
}
2323
```
24+
25+
### Cloudflare provider version support
26+
27+
5.0 and above uses version 5.0 of the Cloudflare provider.
28+
4.1.1 and below uses version 4 of the Cloudflare provider.
29+
30+
I will continue to support the 4.1.1 version to the best of my ability, but I will not be adding new features to it. I will only add new features to the 5.0 version of the provider.
2431
<!-- BEGIN_TF_DOCS -->
2532
{{ .Content }}
2633
<!-- END_TF_DOCS -->

.terraform.lock.hcl

Lines changed: 11 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,26 @@ module "r2-api-token" {
1212
write = false
1313
}
1414
```
15+
16+
### Cloudflare provider version support
17+
18+
5.0 and above uses version 5.0 of the Cloudflare provider.
19+
4.1.1 and below uses version 4 of the Cloudflare provider.
20+
21+
I will continue to support the 4.1.1 version to the best of my ability, but I will not be adding new features to it. I will only add new features to the 5.0 version of the provider.
1522
<!-- BEGIN_TF_DOCS -->
1623
## Requirements
1724

1825
| Name | Version |
1926
|------|---------|
2027
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.2.0 |
21-
| <a name="requirement_cloudflare"></a> [cloudflare](#requirement\_cloudflare) | >= 4.13.0, <5 |
28+
| <a name="requirement_cloudflare"></a> [cloudflare](#requirement\_cloudflare) | >= 5, <6 |
2229

2330
## Providers
2431

2532
| Name | Version |
2633
|------|---------|
27-
| <a name="provider_cloudflare"></a> [cloudflare](#provider\_cloudflare) | >= 4.13.0, <5 |
34+
| <a name="provider_cloudflare"></a> [cloudflare](#provider\_cloudflare) | >= 5, <6 |
2835

2936
## Modules
3037

@@ -35,7 +42,7 @@ No modules.
3542
| Name | Type |
3643
|------|------|
3744
| [cloudflare_api_token.token](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/api_token) | resource |
38-
| [cloudflare_api_token_permission_groups.this](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/data-sources/api_token_permission_groups) | data source |
45+
| [cloudflare_api_token_permission_groups_list.this](https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/data-sources/api_token_permission_groups_list) | data source |
3946

4047
## Inputs
4148

main.tf

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,35 @@ terraform {
33
required_providers {
44
cloudflare = {
55
source = "cloudflare/cloudflare"
6-
version = ">= 4.13.0, <5"
6+
version = ">= 5, <6"
77
}
88
}
99
}
1010

11-
data "cloudflare_api_token_permission_groups" "this" {}
11+
data "cloudflare_api_token_permission_groups_list" "this" {
12+
}
1213

1314
locals {
1415
resources = length(var.buckets) > 0 ? { for bucket in var.buckets : "com.cloudflare.edge.r2.bucket.${var.account_id}_${var.jurisdiction}_${bucket}" => "*" } : { "com.cloudflare.edge.r2.bucket.*" = "*" }
1516
token_bucket_names = length(var.buckets) > 0 ? join(",", var.buckets) : "All-Buckets"
17+
r2_api_permissions = { for x in data.cloudflare_api_token_permission_groups_list.this.result : x.name => x.id if contains(["Workers R2 Storage Bucket Item Read", "Workers R2 Storage Bucket Item Write"], x.name) }
18+
permission_id_list = compact([
19+
var.bucket_read ? local.r2_api_permissions["Workers R2 Storage Bucket Item Read"] : null,
20+
var.bucket_write ? local.r2_api_permissions["Workers R2 Storage Bucket Item Write"] : null,
21+
])
1622
}
1723

1824
resource "cloudflare_api_token" "token" {
1925
name = var.token_name != "" ? var.token_name : "R2-${local.token_bucket_names}-${var.bucket_read ? "Read" : ""}-${var.bucket_write ? "Write" : ""}"
20-
policy {
21-
permission_groups = compact([
22-
var.bucket_read ? data.cloudflare_api_token_permission_groups.this.r2["Workers R2 Storage Bucket Item Read"] : null,
23-
var.bucket_write ? data.cloudflare_api_token_permission_groups.this.r2["Workers R2 Storage Bucket Item Write"] : null,
24-
])
25-
resources = local.resources
26-
}
26+
policies = [{
27+
effect = "allow"
28+
resources = local.resources
29+
permission_groups = [for x in local.permission_id_list : { id = x }]
30+
}]
2731
not_before = var.not_before != "" ? var.not_before : null
2832
expires_on = var.expires_on != "" ? var.expires_on : null
29-
condition {
30-
request_ip {
33+
condition = {
34+
request_ip = {
3135
in = var.condition_ip_in
3236
not_in = var.condition_ip_not_in
3337
}

0 commit comments

Comments
 (0)