1. Docs
  2. Pulumi IaC
  3. Clouds
  4. AWS
  5. Cloud Framework

Cloud Framework

    The Cloud Framework for Pulumi lets you program infrastructure and application logic, side by side, using simple, high-level, cloud-agnostic building blocks.

    The Cloud Framework must be configured with credentials to deploy and update resources in the target cloud platform.

    See the full API documentation for complete details of the available Cloud Framework APIs.

    For AWS-specific use cases, see also the awsx library which provides higher-level libraries for working with many AWS services.

    Getting Started

    The easiest way to start with the Cloud Framework is to follow one of the tutorials:

    In addition to the tutorials, several interesting examples are available with instructions:

    Example

    const cloud = require("@pulumi/cloud");
    const api = new cloud.API("my-api");
    
    api.get("/hello", (req, res) => {
        res.json({ message: "Hi, world!" });
    });
    
    exports.url = api.publish().url;
    

    Libraries

    The following packages are available in package managers:

    The provider-specific implementations of this library are also available for use directly when writing code that does not need to be portable:

    The Cloud Framework is open source and available in the pulumi/pulumi-cloud repo.

    Authentication

    Authentication options must be set for the target cloud provider. See the AWS setup page for details (more providers for the Cloud Framework coming soon).

    Configuration

    The Cloud Framework accepts the following configuration settings. These can be provided via pulumi config set cloud:<option>.

    • provider: (Required) The provider to deploy cloud resources into. Currently only aws is supported.

    The AWS implementation of the Cloud Framework accepts the following configuration settings. These can be provided via pulumi config set cloud-aws:<option>.

    • functionMemorySize: (Optional) Override the Lambda function memory size for all functions.
    • functionIncludePaths: (Optional) Comma-separated list of additional paths (relative to the project root) to include in Lambda zip uploads for JavaScript callbacks. E.g ./img.png,app/.
    • functionIncludePackages: (Optional) Comma-separated list of additional packages (relative to the project root) to include in Lambda zip uploads for JavaScript callbacks. E.g body-parser,typescript.
    • computeIAMRolePolicyARNs: (Optional) Set the IAM role policies to apply to compute (both Lambda and ECS) within this Pulumi program. The default is: arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AmazonECS_FullAccess.
    • acmCertificateARN: (Optional) ACM certificate ARN to support services HTTPS traffic.
    • ecsClusterARN: (Optional) ECS cluster ARN. One of useFargate, ecsClusterARN, or ecsAutoCluster must be provided to use container-based resources like cloud.Service and cloud.Task.
    • ecsClusterSecurityGroup: (Optional) ECS cluster security group that all ALBs for services within the cluster will use.
    • ecsClusterEfsMountPath: (Optional) EFS mount path on the cluster hosts. If not provided, Volumes cannot be used in cloud.Service and cloud.Task.
    • usePrivateNetwork: (Optional) Put all compute in a private network.
    • externalVpcId: (Optional) Use an existing VPC. If both usePrivateNetwork and externalVpcId are provided, the VPC must be configured to run all compute in private subnets with Internet egress enabled via NAT Gateways.
    • externalSubnets: (Optional) Provide subnets ids for the VPC as a comma-separated string. Required if using an existing VPC.
    • externalPublicSubnets: (Optional) Provide public subnets ids for the VPC as a comma-separated string. Required if using an existing VPC.
    • externalSecurityGroups: (Optional) Provide securityGroup ids for the VPC as a comma-separated string. Required if using an existing VPC.
    • useFargate: (Optional) Wse Fargate-based container compute. All tasks must be Fargate-compatible. One of useFargate, ecsClusterARN, or ecsAutoCluster must be provided to use container-based resources like cloud.Service and `cloud.Task.
    • ecsAutoCluster: (Optional) Auto-provision an ECS Cluster. If set to true, parameters for the cluster can be provided via the other “ecsAutoCluster*” configuration variables. One of useFargate, ecsClusterARN, or ecsAutoCluster must be provided to use container-based resources like cloud.Service and `cloud.Task.
    • ecsAutoClusterNumberOfAZs: (Optional) The number of AZs to create subnets in as part of the cluster. Defaults to 2.
    • ecsAutoClusterInstanceType: (Optional) The EC2 instance type to use for the cluster. Defaults to t2.micro.
    • ecsAutoClusterInstanceRolePolicyARNs: (Optional) The EC2 instance role policy ARN to use for the cluster. Defaults to arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role,arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess.
    • ecsAutoClusterInstanceRootVolumeSize: (Optional) The size (in GiB) of the EBS volume to attach to each instance as the root volume. Defaults to 8 GiB.
    • ecsAutoClusterInstanceDockerImageVolumeSize: (Optional) The size (in GiB) of the EBS volume to attach to each instance as Docker Image volume. Defaults to 50 GiB.
    • ecsAutoClusterInstanceSwapVolumeSize: (Optional) The size (in GiB) of the EBS volume to attach to each instance as the swap volume. Defaults to 5 GiB.
    • ecsAutoClusterMinSize: (Optional) The minimum size of the cluster. Defaults to 2.
    • ecsAutoClusterMaxSize: (Optional) The maximum size of the cluster. Defaults to 100.
    • ecsAutoClusterPublicKey: (Optional) Public key material for SSH access to the cluster. See allowed formats. If not provided, no SSH access is enabled on VMs.
    • ecsAutoClusterECSOptimizedAMIName: (Optional) The name of the ECS-optimzed AMI to use for the Container Instances in this cluster, e.g. amzn-ami-2017.09.l-amazon-ecs-optimized. See valid values.
    • ecsAutoClusterUseEFS: (Optional) Optionally auto-provision an Elastic File System for the Cluster. Defaults to false.
      PulumiUP 2024. Watch On Demand.