Skip to content

Commit 634e61f

Browse files
Copilotcyberchen98
authored andcommitted
docs: address review comments on cloud-metadata page
Co-authored-by: cyberchen98 <44337247+cyberchen98@users.noreply.github.com> Agent-Logs-Url: https://github.com/risingwavelabs/risingwave-docs/sessions/5bfb5281-ddfc-49e3-806e-fdf46d303614
1 parent 215f200 commit 634e61f

File tree

4 files changed

+20
-64
lines changed

4 files changed

+20
-64
lines changed

cloud/cloud-metadata.mdx

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Cloud metadata"
33
sidebarTitle: "Cloud metadata"
4-
description: "View and use the cloud metadata values exposed in the RisingWave Cloud Console, including the IAM role ARN, external ID, account ID, VPC ID, and region for your project."
4+
description: "View and use the cloud metadata values exposed in the RisingWave Cloud Console, including the IAM role ARN, PrivateLink Principal, and egress public IPs for your project."
55
---
66

77
RisingWave Cloud exposes a set of environment-specific metadata values for each project. These values are required when setting up cross-account access (IAM role assume) and PrivateLink connections. All values are read-only and are generated automatically when a project is created.
@@ -24,53 +24,35 @@ Cloud metadata is only available for projects on the **Standard** plan or above.
2424

2525
The AWS IAM role ARN that RisingWave Cloud uses to access AWS resources on behalf of this project. When you configure [IAM role assume](/cloud/iam-role-assume) (cross-account S3 access), you add this ARN as a trusted principal in your IAM role's trust policy.
2626

27-
### External ID
27+
### PrivateLink Principal
2828

2929
| Field | Example value |
3030
|:------|:--------------|
31-
| **External ID** | `rwc-project-abc123-ext` |
31+
| **PrivateLink Principal** | `arn:aws:iam::123456789012:root` |
3232

33-
A unique identifier for this project. Use it as the `sts:ExternalId` condition in your IAM trust policy to prevent [confused deputy attacks](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Including an external ID is strongly recommended for production setups.
33+
The AWS principal associated with the RisingWave Cloud deployment that hosts your project. When you create a PrivateLink endpoint service in your AWS account, add this principal to the list of **Allowed principals** so that RisingWave Cloud can connect to your service.
3434

35-
### AWS account ID
35+
### Egress public IPs
3636

3737
| Field | Example value |
3838
|:------|:--------------|
39-
| **AWS account ID** | `123456789012` |
39+
| **Egress public IPs** | `203.0.113.10, 203.0.113.11` |
4040

41-
The AWS account ID associated with the RisingWave Cloud deployment that hosts your project. This is the account that issues `sts:AssumeRole` calls when assuming your IAM role.
42-
43-
### Region
44-
45-
| Field | Example value |
46-
|:------|:--------------|
47-
| **Region** | `us-east-1` |
48-
49-
The AWS region in which this project runs. When creating PrivateLink connections, your VPC and PrivateLink service must be in the same region as the project.
50-
51-
### VPC ID
52-
53-
| Field | Example value |
54-
|:------|:--------------|
55-
| **VPC ID** | `vpc-0abc123def456gh78` |
56-
57-
The VPC ID of the network associated with this project. Some PrivateLink endpoint service configurations (for example, when restricting which VPCs can connect) require this value.
41+
The public IP addresses from which outbound traffic from this project originates. Add these IPs to the allowlist of any firewall rules or security groups that restrict inbound access to your services (for example, a database or Kafka cluster that RisingWave connects to).
5842

5943
## Cloud metadata by platform
6044

6145
| Metadata field | AWS | GCP | Azure |
6246
|:---------------|:----|:----|:------|
6347
| IAM role ARN || ✅ (service account email) | ✅ (managed identity resource ID) |
64-
| External ID ||||
65-
| Account ID | ✅ (AWS account ID) | ✅ (GCP project ID) | ✅ (Azure subscription ID) |
66-
| Region ||||
67-
| VPC ID || ✅ (VPC network name) | ✅ (VNet resource ID) |
48+
| PrivateLink Principal | ✅ (AWS account ARN) | ✅ (GCP project number) | ✅ (Azure subscription ID) |
49+
| Egress public IPs ||||
6850

6951
<Note>
7052
GCP and Azure metadata field names differ from the AWS equivalents. The Console labels each field for the platform of your project.
7153
</Note>
7254

7355
## Next steps
7456

75-
- [Set up IAM role assume](/cloud/iam-role-assume) — use the IAM role ARN and external ID to grant RisingWave Cloud cross-account S3 access.
76-
- [Configure PrivateLink](/cloud/create-a-connection) — use the region and VPC ID when creating PrivateLink connections.
57+
- [Set up IAM role assume](/cloud/iam-role-assume) — use the IAM role ARN to grant RisingWave Cloud cross-account S3 access.
58+
- [Configure PrivateLink](/cloud/create-a-connection) — use the PrivateLink Principal when setting up your endpoint service's allowed principals.

cloud/create-a-connection.mdx

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,6 @@ You need to create a project with the Standard plan or Advanced plan in RisingWa
2323
* See [Choose a project plan](/cloud/choose-a-project-plan/) for more information. Please note that Trial projects do not support PrivateLink connections.
2424
* The VPC you want to connect to and your project must be in the same region. If your preferred region is not available when creating a project, contact our [support team](mailto:cloud-support@risingwave-labs.com) or [sales team](mailto:sales@risingwave-labs.com).
2525

26-
### Required cloud metadata
27-
28-
Before you set up PrivateLink, retrieve the following values from your project's [Cloud metadata](/cloud/cloud-metadata) page (**Settings****Cloud metadata**):
29-
30-
| Metadata field | Where it's used |
31-
|:---------------|:----------------|
32-
| **Region** | Confirm that your VPC and PrivateLink service are in the same region as the project |
33-
| **VPC ID** | Required if your endpoint service restricts which VPCs can connect |
34-
3526
You need to set up a PrivateLink service in your VPC and make sure it runs properly. The following links might be helpful:
3627
* For AWS, see [Share your services through AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-share-your-services.html).
3728
* For GCP, see [GCP Published services](https://cloud.google.com/vpc/docs/about-vpc-hosted-services).

cloud/iam-role-assume.mdx

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ Before you begin, retrieve the following values from your project's [Cloud metad
2929
| Metadata field | Where it's used |
3030
|:---------------|:----------------|
3131
| **IAM role ARN** | The `Principal.AWS` value in your IAM trust policy |
32-
| **External ID** | The `sts:ExternalId` condition value in your IAM trust policy (recommended) |
33-
| **AWS account ID** | Verify that `sts:AssumeRole` calls originate from the correct RisingWave Cloud account |
3432

3533
## Step-by-step setup
3634

@@ -73,17 +71,16 @@ Create a policy that grants RisingWave the necessary permissions on your S3 buck
7371
### Step 2 — Create an IAM role with the policy attached
7472

7573
1. In the [AWS IAM console](https://console.aws.amazon.com/iam/), create a new role.
76-
2. Select **Another AWS account** as the trusted entity type.
77-
3. Enter the **AWS account ID** from Cloud metadata as the trusted account.
78-
4. Attach the S3 policy created in Step 1.
74+
2. Select **Another AWS account** as the trusted entity type and enter the AWS account ID extracted from the **IAM role ARN** (the 12-digit number after `iam::`).
75+
3. Attach the S3 policy created in Step 1.
7976

8077
### Step 3 — Configure the trust policy
8178

82-
After the role is created, update its trust policy to allow the specific RisingWave Cloud IAM role to assume it. Include the external ID as a condition.
79+
After the role is created, update its trust policy to allow the specific RisingWave Cloud IAM role to assume it.
8380

84-
Replace `<iam-role-arn>` with the **IAM role ARN** from Cloud metadata, and `<external-id>` with the **External ID** from Cloud metadata.
81+
Replace `<iam-role-arn>` with the **IAM role ARN** from Cloud metadata.
8582

86-
```json Example: Trust policy with external ID
83+
```json Example: Trust policy
8784
{
8885
"Version": "2012-10-17",
8986
"Statement": [
@@ -92,25 +89,12 @@ Replace `<iam-role-arn>` with the **IAM role ARN** from Cloud metadata, and `<ex
9289
"Principal": {
9390
"AWS": "<iam-role-arn>"
9491
},
95-
"Action": "sts:AssumeRole",
96-
"Condition": {
97-
"StringEquals": {
98-
"sts:ExternalId": "<external-id>"
99-
}
100-
}
92+
"Action": "sts:AssumeRole"
10193
}
10294
]
10395
}
10496
```
10597

106-
<Warning>
107-
Always include the `sts:ExternalId` condition. Without it, any entity in the trusted account can assume your role — this is the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html).
108-
</Warning>
109-
110-
<Note>
111-
The `sts:ExternalId` value is a project-specific string. If you delete and recreate your project or create a new project, update this value accordingly.
112-
</Note>
113-
11498
### Step 4 — Use the role in RisingWave
11599

116100
Set `s3.assume_role` to the ARN of the role you created in Step 2 and set `enable_config_load = 'true'` (RisingWave Cloud only).
@@ -158,12 +142,11 @@ After creating the sink or source, run a quick sanity check:
158142
|:------|:-------------|:----|
159143
| `AccessDenied` when calling `AssumeRole` | The trust policy principal doesn't match the RisingWave Cloud IAM role ARN | Copy the exact IAM role ARN from Cloud metadata and update the trust policy |
160144
| `AccessDenied` on S3 operations after assuming | The attached S3 policy is missing required actions | Add the missing S3 actions (see Step 1) |
161-
| `InvalidClientTokenId` | Incorrect AWS account ID in the trust policy | Use the AWS account ID from Cloud metadata |
162-
| External ID mismatch | The `sts:ExternalId` in the trust policy doesn't match Cloud metadata | Copy the exact External ID from Cloud metadata |
145+
| `InvalidClientTokenId` | Incorrect IAM role ARN in the trust policy | Use the IAM role ARN from Cloud metadata |
163146

164147
## Related pages
165148

166-
- [Cloud metadata](/cloud/cloud-metadata) — retrieve the IAM role ARN and external ID for your project
149+
- [Cloud metadata](/cloud/cloud-metadata) — retrieve the IAM role ARN for your project
167150
- [PrivateLink connection configuration](/cloud/create-a-connection) — set up private network connectivity
168151
- [Sink to Amazon Redshift](/integrations/destinations/redshift) — end-to-end example with S3 staging
169152
- [Sink to Snowflake](/integrations/destinations/snowflake-v2) — end-to-end example with S3 staging

cloud/privatelink-overview.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ On the **RisingWave Cloud** side, RisingWave Cloud will create an endpoint (spec
3232
On the **Customer** side, you need to set up a PrivateLink service (specifically an AWS endpoint service, GCP published service, or Azure Private Link service) in your VPC network first.
3333

3434
<Tip>
35-
Before you configure PrivateLink, retrieve your project's **Region** and **VPC ID** from the [Cloud metadata](/cloud/cloud-metadata) page. Your VPC and PrivateLink service must be in the same region as the project.
35+
When setting up an AWS endpoint service, add the **PrivateLink Principal** from your project's [Cloud metadata](/cloud/cloud-metadata) page to the service's allowed principals list so that RisingWave Cloud can connect.
3636
</Tip>

0 commit comments

Comments
 (0)