Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions docs/components/AWS.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ import { CardGrid, LinkCard } from "@astrojs/starlight/components";
<LinkCard title="ECS • Run Task" href="#ecs-•-run-task" description="Run a task in AWS ECS" />
<LinkCard title="ECS • Stop Task" href="#ecs-•-stop-task" description="Stop a running AWS ECS task" />
<LinkCard title="Lambda • Run Function" href="#lambda-•-run-function" description="Invoke a Lambda function, optionally creating it from inline JavaScript" />
<LinkCard title="Route 53 • Create DNS Record" href="#route-53-•-create-dns-record" description="Create a DNS record in an AWS Route 53 hosted zone" />
<LinkCard title="Route 53 • Delete DNS Record" href="#route-53-•-delete-dns-record" description="Delete a DNS record from an AWS Route 53 hosted zone" />
<LinkCard title="Route 53 • Upsert DNS Record" href="#route-53-•-upsert-dns-record" description="Create or update a DNS record in an AWS Route 53 hosted zone" />
<LinkCard title="SNS • Create Topic" href="#sns-•-create-topic" description="Create an AWS SNS topic" />
<LinkCard title="SNS • Delete Topic" href="#sns-•-delete-topic" description="Delete an AWS SNS topic" />
<LinkCard title="SNS • Get Subscription" href="#sns-•-get-subscription" description="Get an AWS SNS subscription by ARN" />
Expand Down Expand Up @@ -931,6 +934,121 @@ The Run Lambda component invokes a Lambda function.
}
```

<a id="route-53-•-create-dns-record"></a>

## Route 53 • Create DNS Record

The Create DNS Record component creates a new DNS record in an AWS Route 53 hosted zone.

### Use Cases

- **Domain management**: Create DNS records for new services or endpoints
- **Automated provisioning**: Set up DNS entries as part of infrastructure workflows
- **Multi-environment setup**: Create environment-specific DNS records automatically

### How It Works

1. Connects to AWS Route 53 using the integration credentials
2. Creates a new DNS record in the specified hosted zone
3. Returns the change status and submission timestamp

### Example Output

```json
{
"data": {
"change": {
"id": "/change/C1234567890ABC",
"status": "INSYNC",
"submittedAt": "2026-01-28T10:30:00.000Z"
},
"record": {
"name": "api.example.com",
"type": "A"
}
},
"timestamp": "2026-01-28T10:30:00.000Z",
"type": "aws.route53.change"
}
```

<a id="route-53-•-delete-dns-record"></a>

## Route 53 • Delete DNS Record

The Delete DNS Record component deletes a DNS record from an AWS Route 53 hosted zone.

### Use Cases

- **Cleanup**: Remove DNS records when decommissioning services
- **Environment teardown**: Delete DNS entries for temporary environments
- **Migration**: Remove old DNS records after migrating to new endpoints

### How It Works

1. Connects to AWS Route 53 using the integration credentials
2. Deletes the specified DNS record from the hosted zone
3. The record name, type, TTL, and values must match the existing record exactly
4. Returns the change status and submission timestamp

### Example Output

```json
{
"data": {
"change": {
"id": "/change/C5555555555GHI",
"status": "INSYNC",
"submittedAt": "2026-01-28T10:30:00.000Z"
},
"record": {
"name": "api.example.com",
"type": "A"
}
},
"timestamp": "2026-01-28T10:30:00.000Z",
"type": "aws.route53.change"
}
```

<a id="route-53-•-upsert-dns-record"></a>

## Route 53 • Upsert DNS Record

The Upsert DNS Record component creates or updates a DNS record in an AWS Route 53 hosted zone.

### Use Cases

- **Idempotent updates**: Safely create or update DNS records without checking existence first
- **Rolling deployments**: Update DNS records to point to new infrastructure
- **Failover management**: Switch DNS records between primary and secondary endpoints

### How It Works

1. Connects to AWS Route 53 using the integration credentials
2. Creates the DNS record if it doesn't exist, or updates it if it does
3. Returns the change status and submission timestamp

### Example Output

```json
{
"data": {
"change": {
"id": "/change/C9876543210DEF",
"status": "INSYNC",
"submittedAt": "2026-01-28T10:30:00.000Z"
},
"record": {
"name": "api.example.com",
"type": "A"
}
},
"timestamp": "2026-01-28T10:30:00.000Z",
"type": "aws.route53.change"
}
```

<a id="sns-•-create-topic"></a>

## SNS • Create Topic
Expand Down
4 changes: 4 additions & 0 deletions pkg/integrations/aws/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"github.com/superplanehq/superplane/pkg/integrations/aws/eventbridge"
"github.com/superplanehq/superplane/pkg/integrations/aws/iam"
"github.com/superplanehq/superplane/pkg/integrations/aws/lambda"
"github.com/superplanehq/superplane/pkg/integrations/aws/route53"
"github.com/superplanehq/superplane/pkg/integrations/aws/sns"
"github.com/superplanehq/superplane/pkg/registry"
)
Expand Down Expand Up @@ -152,6 +153,9 @@ func (a *AWS) Components() []core.Component {
&ecr.GetImageScanFindings{},
&ecr.ScanImage{},
&lambda.RunFunction{},
&route53.CreateRecord{},
&route53.UpsertRecord{},
&route53.DeleteRecord{},
}
}

Expand Down
4 changes: 4 additions & 0 deletions pkg/integrations/aws/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/superplanehq/superplane/pkg/integrations/aws/ecr"
"github.com/superplanehq/superplane/pkg/integrations/aws/ecs"
"github.com/superplanehq/superplane/pkg/integrations/aws/lambda"
"github.com/superplanehq/superplane/pkg/integrations/aws/route53"
"github.com/superplanehq/superplane/pkg/integrations/aws/sns"
)

Expand Down Expand Up @@ -35,6 +36,9 @@ func (a *AWS) ListResources(resourceType string, ctx core.ListResourcesContext)
case "codeartifact.domain":
return codeartifact.ListDomains(ctx, resourceType)

case "route53.hostedZone":
return route53.ListHostedZones(ctx, resourceType)

case "sns.topic":
return sns.ListTopics(ctx, resourceType)

Expand Down
Loading