Comprehensive Amazon Web Services (AWS) infrastructure provider for Pulumi enabling multi-language infrastructure-as-code with 225+ AWS services
pkg:generic/pulumi-aws@7.6.x
npx @tessl/cli install tessl/generic-pulumi--aws@7.6.0The 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.
npm install @pulumi/awsimport * 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");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({});The Pulumi AWS Provider is built around several key architectural patterns:
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
}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;
}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>;
}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>;
}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[]>;
}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[]>;
}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>;
}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>;
}// 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>;
}// 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[];
}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>}>;
}