diff --git a/.server-changes/private-connections-helper-cross-region-comment.md b/.server-changes/private-connections-helper-cross-region-comment.md new file mode 100644 index 00000000000..8d0bed2c2bb --- /dev/null +++ b/.server-changes/private-connections-helper-cross-region-comment.md @@ -0,0 +1,6 @@ +--- +area: webapp +type: improvement +--- + +Clarify the cross-region intent in the Terraform and AI-prompt helpers on the Add Private Connection page. Both already default `supported_regions` to `["us-east-1", "eu-central-1"]`; added an inline comment / parenthetical so the user understands why both regions are listed (Trigger.dev runs in both, so the service must be consumable from either). diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx index 7c82333ccc0..a62929a0619 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx @@ -18,6 +18,7 @@ import { logger } from "~/services/logger.server"; import { getPrivateLinks } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { + docsPath, OrganizationParamsSchema, organizationPath, v3PrivateConnectionsPath, @@ -29,6 +30,7 @@ import { type ActionFunctionArgs, json } from "@remix-run/server-runtime"; import { deletePrivateLink } from "~/services/platform.v3.server"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { + BookOpenIcon, ClipboardDocumentIcon, PlusIcon, TrashIcon, @@ -182,6 +184,13 @@ export default function Page() { + + Private connection docs + {hasPrivateNetworking && canAdd && ( Add Connection diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx index 649419b9c65..142d2796172 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx @@ -12,6 +12,7 @@ import { PageContainer, } from "~/components/layout/AppLayout"; import { Button, LinkButton } from "~/components/primitives/Buttons"; +import { ClipboardField } from "~/components/primitives/ClipboardField"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormButtons } from "~/components/primitives/FormButtons"; import { FormError } from "~/components/primitives/FormError"; @@ -19,7 +20,7 @@ import { Header2, Header3 } from "~/components/primitives/Headers"; import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; -import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; +import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Select, SelectItem } from "~/components/primitives/Select"; import { prisma } from "~/db.server"; @@ -36,11 +37,14 @@ import { } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { + docsPath, OrganizationParamsSchema, organizationPath, v3PrivateConnectionsPath, } from "~/utils/pathBuilder"; import { + ArrowTopRightOnSquareIcon, + BookOpenIcon, CommandLineIcon, DocumentTextIcon, PencilSquareIcon, @@ -266,7 +270,10 @@ resource "aws_lb_listener" "port_${p.port}" { resource "aws_vpc_endpoint_service" "trigger_privatelink" { acceptance_required = false network_load_balancer_arns = [aws_lb.trigger_privatelink.arn] - supported_regions = ["us-east-1", "eu-central-1"] + + # Trigger.dev runs in us-east-1 and eu-central-1. Listing both makes this + # service consumable from either region so any of your tasks can connect. + supported_regions = ["us-east-1", "eu-central-1"] allowed_principals = [ ${awsAccountIds.map((id) => ` "arn:aws:iam::${id}:root",`).join("\n")} @@ -418,7 +425,7 @@ ${validPorts.length > 0 ? validPorts.map((p) => ` - Port ${p.port} (${p.protoc 3. A VPC Endpoint Service: - Acceptance required: no - Attach the NLB created above - - Supported regions: us-east-1, eu-central-1 + - Supported regions: us-east-1, eu-central-1 (these are the AWS regions Trigger.dev runs in, so the service must be consumable from both) - Allowed principals: ${awsAccountIds.map((id) => ` - arn:aws:iam::${id}:root`).join("\n") || " - "} @@ -531,7 +538,7 @@ export default function Page() { const { availableRegions, activeRegions, awsAccountIds } = useTypedLoaderData(); const { organizationSlug } = useParams(); const lastSubmission = useActionData(); - const [setupMethod, setSetupMethod] = useState(null); + const [setupMethod, setSetupMethod] = useState("manual"); const defaultRegion = "us-east-1"; @@ -547,6 +554,15 @@ export default function Page() { + + + Private connection docs + + @@ -651,7 +667,7 @@ export default function Page() { )} - {/* Docs iframe */} + {/* Docs link */} {setupMethod === "docs" && (
Setup Guide @@ -659,37 +675,47 @@ export default function Page() { <> When adding allowed principals to your VPC Endpoint Service, use the following - AWS account ID(s): + AWS account ARN(s): -
+
{awsAccountIds.map((id) => ( - - {id} - + ))}
)} -