or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

application.mdcompute.mddatabase.mdglobal-data-sources.mdindex.mdnetworking.mdprovider.mdsecurity.mdstorage.md
tile.json

tessl/generic-pulumi--aws

Comprehensive Amazon Web Services (AWS) infrastructure provider for Pulumi enabling multi-language infrastructure-as-code with 225+ AWS services

Workspace
tessl
Visibility
Public
Created
Last updated
Describes

pkg:generic/pulumi-aws@7.6.x

To install, run

npx @tessl/cli install tessl/generic-pulumi--aws@7.6.0

index.mddocs/

Pulumi AWS Provider

The Pulumi AWS Provider (@pulumi/aws) is a comprehensive infrastructure-as-code library that enables programmatic management of Amazon Web Services (AWS) resources. It provides a complete bridge to AWS APIs through strongly-typed interfaces, supporting over 225 AWS services with 2,157+ resource and data source types across multiple programming languages.

Package Information

  • Package Name: @pulumi/aws
  • Package Type: npm (also available for Python, Go, Java, .NET)
  • Language: TypeScript/JavaScript (primary SDK)
  • Installation: npm install @pulumi/aws
  • Version: 7.6.0
  • AWS Services Supported: 225+ services
  • Total Resources: 2,157+ resource and data source types

Core Imports

import * as aws from "@pulumi/aws";
import { Provider } from "@pulumi/aws";

For specific service modules:

import * as ec2 from "@pulumi/aws/ec2";
import * as s3 from "@pulumi/aws/s3";
import * as lambda from "@pulumi/aws/lambda";
import * as iam from "@pulumi/aws/iam";

CommonJS:

const aws = require("@pulumi/aws");
const { Provider } = require("@pulumi/aws");

Basic Usage

import * as aws from "@pulumi/aws";

// Configure the AWS provider
const provider = new aws.Provider("aws-provider", {
    region: "us-west-2",
    profile: "my-profile"
});

// Create an S3 bucket  
const bucket = new aws.s3.Bucket("my-bucket", {
    bucket: "my-unique-bucket-name",
    acl: "private"
}, { provider });

// Create an EC2 instance
const instance = new aws.ec2.Instance("my-instance", {
    instanceType: "t3.micro",
    ami: "ami-0c55b159cbfafe1d0",
    tags: {
        Name: "MyInstance"
    }
}, { provider });

// Query existing resources
const availabilityZones = aws.getAvailabilityZones({});
const currentRegion = aws.getRegion({});

Architecture

The Pulumi AWS Provider is built around several key architectural patterns:

  • Service Modules: Each AWS service (EC2, S3, Lambda, etc.) is represented as a separate module with consistent API patterns
  • Resource Classes: AWS resources are modeled as Pulumi CustomResource classes with strongly-typed properties
  • Data Source Functions: Query functions for retrieving information about existing AWS resources
  • Provider Configuration: Centralized AWS configuration including authentication, regions, and global settings
  • Type Safety: Complete TypeScript definitions for all AWS resource properties and parameters
  • Lazy Loading: Performance optimization through on-demand module loading
  • Multi-Language Support: Consistent API across TypeScript, Python, Go, Java, and .NET SDKs

Capabilities

Provider Configuration

Central configuration for AWS authentication, regions, endpoints, and global settings. Essential for connecting to AWS and managing provider behavior.

class Provider extends pulumi.ProviderResource {
    constructor(name: string, args?: ProviderArgs, opts?: pulumi.ResourceOptions);
    
    readonly accessKey?: pulumi.Output<string>;
    readonly secretKey?: pulumi.Output<string>;
    readonly region?: pulumi.Output<string>;
    readonly profile?: pulumi.Output<string>;
}

interface ProviderArgs {
    accessKey?: pulumi.Input<string>;
    secretKey?: pulumi.Input<string>;
    region?: pulumi.Input<string>;
    profile?: pulumi.Input<string>;
    assumeRole?: pulumi.Input<ProviderAssumeRole>;
    defaultTags?: pulumi.Input<ProviderDefaultTags>;
    // ... 25+ additional configuration options
}

Provider Configuration

Global Data Sources

Utility functions for retrieving AWS account, region, and service information that work across all AWS services.

function getCallerIdentity(args?: GetCallerIdentityArgs): Promise<GetCallerIdentityResult>;
function getRegion(args?: GetRegionArgs): Promise<GetRegionResult>; 
function getAvailabilityZones(args?: GetAvailabilityZonesArgs): Promise<GetAvailabilityZonesResult>;

interface GetCallerIdentityResult {
    readonly accountId: string;
    readonly arn: string;
    readonly userId: string;
}

Global Data Sources

Compute Services

Comprehensive compute capabilities including virtual machines, serverless functions, containers, and Kubernetes orchestration.

// EC2 - Virtual machines and networking
class ec2.Instance extends pulumi.CustomResource {
    constructor(name: string, args: ec2.InstanceArgs, opts?: pulumi.CustomResourceOptions);
    readonly instanceType: pulumi.Output<string>;
    readonly ami: pulumi.Output<string>;
    readonly publicIp: pulumi.Output<string>;
}

// Lambda - Serverless functions  
class lambda.Function extends pulumi.CustomResource {
    constructor(name: string, args: lambda.FunctionArgs, opts?: pulumi.CustomResourceOptions);
    readonly runtime: pulumi.Output<string>;
    readonly handler: pulumi.Output<string>;
    readonly code: pulumi.Output<lambda.FunctionCode>;
}

Compute Services

Storage Services

Object storage, block storage, file systems, and data archival services for all storage needs.

// S3 - Object storage
class s3.Bucket extends pulumi.CustomResource {
    constructor(name: string, args?: s3.BucketArgs, opts?: pulumi.CustomResourceOptions);
    readonly bucket: pulumi.Output<string>;
    readonly arn: pulumi.Output<string>;
}

class s3.BucketObject extends pulumi.CustomResource {
    constructor(name: string, args: s3.BucketObjectArgs, opts?: pulumi.CustomResourceOptions);
    readonly bucket: pulumi.Output<string>;
    readonly key: pulumi.Output<string>;
    readonly source: pulumi.Output<pulumi.asset.Asset | pulumi.asset.Archive>;
}

Storage Services

Database Services

Relational databases, NoSQL databases, caching systems, and data warehousing solutions.

// RDS - Relational databases
class rds.Instance extends pulumi.CustomResource {
    constructor(name: string, args: rds.InstanceArgs, opts?: pulumi.CustomResourceOptions);
    readonly engine: pulumi.Output<string>;
    readonly instanceClass: pulumi.Output<string>;
    readonly dbName: pulumi.Output<string>;
}

// DynamoDB - NoSQL database
class dynamodb.Table extends pulumi.CustomResource {
    constructor(name: string, args: dynamodb.TableArgs, opts?: pulumi.CustomResourceOptions);
    readonly name: pulumi.Output<string>;
    readonly hashKey: pulumi.Output<string>;
    readonly attributes: pulumi.Output<dynamodb.TableAttribute[]>;
}

Database Services

Networking Services

Virtual private clouds, DNS, content delivery, and network connectivity services.

// VPC - Virtual private cloud networking
class vpc.Vpc extends pulumi.CustomResource {
    constructor(name: string, args?: vpc.VpcArgs, opts?: pulumi.CustomResourceOptions);
    readonly cidrBlock: pulumi.Output<string>;
    readonly defaultSecurityGroupId: pulumi.Output<string>;
}

// Route53 - DNS management
class route53.Zone extends pulumi.CustomResource {
    constructor(name: string, args: route53.ZoneArgs, opts?: pulumi.CustomResourceOptions);
    readonly name: pulumi.Output<string>;
    readonly nameServers: pulumi.Output<string[]>;
}

Networking Services

Security & Identity Services

Identity and access management, encryption, and security monitoring services.

// IAM - Identity and access management
class iam.Role extends pulumi.CustomResource {
    constructor(name: string, args: iam.RoleArgs, opts?: pulumi.CustomResourceOptions);
    readonly name: pulumi.Output<string>;
    readonly arn: pulumi.Output<string>;
    readonly assumeRolePolicy: pulumi.Output<string>;
}

// KMS - Key management  
class kms.Key extends pulumi.CustomResource {
    constructor(name: string, args?: kms.KeyArgs, opts?: pulumi.CustomResourceOptions);
    readonly keyId: pulumi.Output<string>;
    readonly arn: pulumi.Output<string>;
}

Security & Identity Services

Application Services

API management, messaging, workflow orchestration, and application integration services.

// API Gateway - REST and HTTP APIs
class apigateway.RestApi extends pulumi.CustomResource {
    constructor(name: string, args?: apigateway.RestApiArgs, opts?: pulumi.CustomResourceOptions);
    readonly name: pulumi.Output<string>;
    readonly executionArn: pulumi.Output<string>;
}

// SNS - Simple notification service  
class sns.Topic extends pulumi.CustomResource {
    constructor(name: string, args?: sns.TopicArgs, opts?: pulumi.CustomResourceOptions);
    readonly name: pulumi.Output<string>;
    readonly arn: pulumi.Output<string>;
}

Application Services

Types

Common Resource Patterns

// All AWS resources extend this base class
abstract class pulumi.CustomResource {
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ResourceState): Resource;
    static isInstance(obj: any): obj is Resource;
    readonly urn: pulumi.Output<pulumi.URN>;
}

// Common argument pattern for resource constructors
interface ResourceArgs {
    tags?: pulumi.Input<Tags>;
    [property: string]: pulumi.Input<any>;
}

// Common state pattern for importing existing resources
interface ResourceState {
    [property: string]: pulumi.Input<any>;
}

// Tags interface used throughout AWS resources
interface Tags {
    [key: string]: pulumi.Input<string>;
}

Data Source Patterns

// Standard data source function signature
type DataSourceFunction<TArgs, TResult> = (
    args?: TArgs, 
    opts?: pulumi.InvokeOptions
) => Promise<TResult>;

// Output version for use in resource properties
type DataSourceOutputFunction<TArgs, TResult> = (
    args?: pulumi.Input<TArgs>,
    opts?: pulumi.InvokeOptions  
) => pulumi.Output<TResult>;

// Common filter pattern for data sources
interface DataSourceFilter {
    name: string;
    values: string[];
}

Provider Types

interface ProviderAssumeRole {
    roleArn?: pulumi.Input<string>;
    sessionName?: pulumi.Input<string>;
    externalId?: pulumi.Input<string>;
    policy?: pulumi.Input<string>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

interface ProviderDefaultTags {
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}