CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.

Overview
Eval results
Files

Pulumi AWS Provider - Go SDK

The Pulumi AWS Provider (github.com/pulumi/pulumi-aws/sdk/v7) is a Go SDK for creating and managing Amazon Web Services (AWS) cloud resources using Pulumi's infrastructure-as-code framework. It provides strongly-typed resource classes and data sources for all major AWS services.

Package Information

  • Module: github.com/pulumi/pulumi-aws/sdk/v7
  • Package Type: golang
  • Language: Go
  • Installation: go get github.com/pulumi/pulumi-aws/sdk/v7
  • Version: 7.16.0

Quick Start

import (
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/s3"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        bucket, err := s3.NewBucketV2(ctx, "my-bucket", &s3.BucketV2Args{
            Bucket: pulumi.String("my-unique-bucket-name"),
        })
        if err != nil {
            return err
        }

        ctx.Export("bucketName", bucket.Bucket)
        return nil
    })
}

Complete Quick Start Guide

Core Concepts

Resource Pattern

// Create a resource
func New<ResourceName>(ctx *pulumi.Context, name string, args *<ResourceName>Args, opts ...pulumi.ResourceOption) (*<ResourceName>, error)

// Import existing resource
func Get<ResourceName>(ctx *pulumi.Context, name string, id pulumi.IDInput, state *<ResourceName>State, opts ...pulumi.ResourceOption) (*<ResourceName>, error)

Data Source Pattern

// Synchronous lookup
func Lookup<Name>(ctx *pulumi.Context, args *Lookup<Name>Args, opts ...pulumi.InvokeOption) (*Lookup<Name>Result, error)

// Output variant (for dependencies)
func Lookup<Name>Output(ctx *pulumi.Context, args Lookup<Name>OutputArgs, opts ...pulumi.InvokeOption) Lookup<Name>ResultOutput

Type System

// Input/Output types
pulumi.String("value")        // pulumi.StringInput / pulumi.StringOutput
pulumi.StringPtr("value")     // pulumi.StringPtrInput / pulumi.StringPtrOutput
pulumi.StringArray{...}       // pulumi.StringArrayInput / pulumi.StringArrayOutput
pulumi.StringMap{...}         // pulumi.StringMapInput / pulumi.StringMapOutput

// Special types
pulumi.ID("id")               // Resource identifiers
pulumi.NewFileArchive("path") // Lambda deployments
pulumi.NewFileAsset("path")   // File uploads

Resource Options

pulumi.DependsOn([]pulumi.Resource{other})  // Explicit dependency
pulumi.Parent(parent)                        // Parent-child relationship
pulumi.Provider(customProvider)              // Custom provider
pulumi.Import(pulumi.ID("existing-id"))      // Import existing resource
pulumi.IgnoreChanges([]string{"tags"})       // Ignore field changes
pulumi.Protect(true)                         // Prevent deletion

Service Categories

Compute

  • EC2: Instances, VPCs, Security Groups, Networking → Reference
  • Lambda: Functions, Layers, Event Source Mappings → Reference
  • ECS: Clusters, Task Definitions, Services → Reference
  • EKS: Kubernetes Clusters, Node Groups → Reference
  • Auto Scaling: Auto Scaling Groups, Policies → Reference

Storage

Database

  • RDS: Relational Databases, Aurora Clusters → Reference
  • DynamoDB: NoSQL Tables, Global Tables → Reference
  • ElastiCache: Redis/Memcached Clusters → Reference

Networking

  • Load Balancers: ALB, NLB, Classic ELB → Reference
  • Route 53: DNS Zones, Records → Reference

Security

  • IAM: Roles, Policies, Users, Groups → Reference
  • KMS: Encryption Keys, Grants → Reference
  • Secrets Manager: Secrets, Rotation → Reference

Messaging

Monitoring

Application Services

  • API Gateway: REST APIs (v1), HTTP APIs (v2) → Reference
  • CloudFormation: Stacks, StackSets → Reference
  • SSM: Parameter Store, Documents → Reference

All Services

200+ AWS services availableComplete Service List

Quick Reference

Common Resource Constructors

ServiceResourceConstructor
S3Buckets3.NewBucketV2(ctx, name, args, opts)
LambdaFunctionlambda.NewFunction(ctx, name, args, opts)
EC2Instanceec2.NewInstance(ctx, name, args, opts)
EC2VPCec2.NewVpc(ctx, name, args, opts)
RDSDatabaserds.NewInstance(ctx, name, args, opts)
DynamoDBTabledynamodb.NewTable(ctx, name, args, opts)
IAMRoleiam.NewRole(ctx, name, args, opts)
ECSClusterecs.NewCluster(ctx, name, args, opts)
EKSClustereks.NewCluster(ctx, name, args, opts)

Common Data Sources

PurposeFunction
Current account IDaws.GetCallerIdentity(ctx, args, opts)
Current regionaws.GetRegion(ctx, args, opts)
Available AZsaws.GetAvailabilityZones(ctx, args, opts)
Latest AMIec2.LookupAmi(ctx, args, opts)
Existing VPCec2.LookupVpc(ctx, args, opts)

Provider Configuration

// Default provider (uses environment variables)
bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{...})

// Custom provider
provider, err := aws.NewProvider(ctx, "custom", &aws.ProviderArgs{
    Region:  pulumi.StringPtr("us-east-1"),
    Profile: pulumi.StringPtr("production"),
})
bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{...}, 
    pulumi.Provider(provider))

Provider Configuration Reference

Common Patterns

Error Handling

resource, err := service.NewResource(ctx, "name", &service.ResourceArgs{})
if err != nil {
    return err
}

Dependencies

// Implicit (automatic)
bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{})
policy, err := s3.NewBucketPolicy(ctx, "policy", &s3.BucketPolicyArgs{
    Bucket: bucket.ID(),  // Implicit dependency
})

// Explicit (manual)
resource, err := service.NewResource(ctx, "resource", &service.ResourceArgs{},
    pulumi.DependsOn([]pulumi.Resource{other}))

Output Transformations

transformedOutput := resource.Field.ApplyT(func(value string) (string, error) {
    return fmt.Sprintf("transformed-%s", value), nil
}).(pulumi.StringOutput)

Documentation Structure

Guides - Step-by-step instructions

Examples - Real-world scenarios

Reference - Detailed specifications

Compute

  • EC2 - Instances, VPCs, networking (100+ resources)
  • Lambda - Serverless functions, layers, triggers
  • ECS - Container services, task definitions
  • EKS - Kubernetes clusters, node groups
  • Auto Scaling - Auto Scaling groups, policies

Storage

  • S3 - Object storage, buckets, policies
  • EBS and EFS - Block storage, file systems

Database

  • RDS - Relational databases, Aurora
  • DynamoDB - NoSQL tables, streams
  • ElastiCache - Redis, Memcached, MemoryDB

Networking

Security

Messaging

Monitoring

Application Services

Available Service Packages

Over 200 AWS service packages are available under github.com/pulumi/pulumi-aws/sdk/v7/go/aws/:

CategoryServices
Computeec2, lambda, ecs, eks, autoscaling, batch, lightsail
Storages3, ebs, efs, glacier, storagegateway, backup
Databaserds, dynamodb, elasticache, neptune, memorydb, dax
Networkingvpc, lb, route53, cloudfront, apigateway, directconnect
Securityiam, kms, secretsmanager, guardduty, securityhub, waf
Messagingsns, sqs, kinesis, eventbridge (cloudwatch), mq, msk
Analyticsathena, emr, glue, quicksight, opensearch, redshift
ML/AIsagemaker, bedrock, comprehend, rekognition, transcribe
Developer Toolscodebuild, codedeploy, codecommit, codepipeline
Managementcloudformation, cloudwatch, cloudtrail, ssm, config

Complete Service Package List

Error Handling

All resource constructors return (resource, error):

resource, err := service.NewResource(ctx, "name", &service.ResourceArgs{})
if err != nil {
    return err  // Return from pulumi.Run callback
}

Getting Help

Documentation Navigation

  1. New to Pulumi AWS? → Start with Quick Start Guide
  2. Need examples? → See Real-World Scenarios
  3. Hitting edge cases? → Check Edge Cases & Troubleshooting
  4. Need API details? → Browse Reference Documentation

Common Tasks Quick Links

TaskDocumentation
Configure AWS credentialsProvider Reference
Create VPC with subnetsEC2 Reference
Deploy Lambda functionLambda Reference
Set up S3 bucketS3 Reference
Create RDS databaseRDS Reference
Configure IAM rolesIAM Reference
Deploy container serviceECS Reference
Set up Kubernetes clusterEKS Reference
Create API GatewayAPI Gateway Reference
Query account/region infoCore Data Sources

Architecture Overview

┌─────────────────────────────────────────────────────────┐
│ Pulumi AWS Provider                                     │
│                                                         │
│  Provider Config ──→ Resources ──→ AWS Cloud           │
│       ↓                   ↓                             │
│  Authentication      Dependencies                       │
│  Region              Outputs                            │
│  Tags                                                   │
└─────────────────────────────────────────────────────────┘
  • Provider: Configures authentication, region, and defaults
  • Resources: Managed AWS infrastructure (create, update, delete)
  • Data Sources: Read-only queries of existing resources
  • Outputs: Async values enabling cross-resource dependencies

Integration Patterns

Lambda + API Gateway

Deploy serverless API → Example

S3 + CloudFront + Route53

Deploy static website with CDN → Example

ECS + ALB

Deploy containerized application → Example

VPC + Subnets + NAT

Create network infrastructure → Example

Next Steps

  1. Start Building: Quick Start Guide
  2. Learn Patterns: Real-World Scenarios
  3. Handle Edge Cases: Edge Cases Guide
  4. Explore APIs: Browse Reference Documentation

Key Features

  • 200+ AWS Services: Comprehensive coverage of AWS
  • Strongly Typed: Go type safety for all resources
  • Automatic Dependencies: Output-based dependency tracking
  • Multi-Region: Deploy across multiple AWS regions
  • Cross-Account: Manage resources in multiple accounts
  • State Management: Automatic state tracking and drift detection
  • Preview Mode: See changes before applying
  • Rollback Support: Automatic rollback on errors

Additional Resources

  • Pulumi Docs: https://www.pulumi.com/docs/
  • AWS Provider Registry: https://www.pulumi.com/registry/packages/aws/
  • GitHub Repository: https://github.com/pulumi/pulumi-aws
  • API Documentation: https://pkg.go.dev/github.com/pulumi/pulumi-aws/sdk/v7

For detailed API specifications, comprehensive examples, and advanced patterns, explore the Reference Documentation.

Install with Tessl CLI

npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7
Workspace
tessl
Visibility
Public
Created
Last updated
Describes
golangpkg:golang/github.com/pulumi/pulumi-aws/sdk/v7@v7.16.0