Pulumi Python Dynamic Resource demonstration

View Code Deploy

A simple example demonstrating how to write Dynamic Providers using Pulumi.


  1. Install Pulumi
  2. Configure Pulumi for AWS
  3. Configure Pulumi for Python

Deploying and running the program

  1. Create a new stack:

    $ pulumi stack init aws-py-dynamicresource
  2. Set the AWS region and the names and passwords for admin and user:

    $ pulumi config set aws:region us-west-2
    $ pulumi config set sql-admin-name <NAME>
    $ pulumi config set sql-admin-password <PASSWORD> --secret
    $ pulumi config set sql-user-name <NAME>
    $ pulumi config set sql-user-password <PASSWORD> --secret
  3. Run pulumi up -y to deploy changes:

    Updating (aws-py-dynamicresource):
        Type                                  Name                                           Status      
    +   pulumi:pulumi:Stack                   aws-py-dynamicresource-aws-py-dynamicresource  created     
    +   ├─ aws:ec2:Vpc                        app-vpc                                        created     
    +   ├─ aws:ec2:InternetGateway            app-gateway                                    created     
    +   ├─ aws:ec2:SecurityGroup              security-group                                 created     
    +   ├─ aws:ec2:Subnet                     app-vpc-subnet                                 created     
    +   ├─ aws:ec2:Subnet                     extra-rds-subnet                               created     
    +   ├─ aws:ec2:RouteTable                 app-routetable                                 created     
    +   ├─ aws:rds:SubnetGroup                app-database-subnetgroup                       created     
    +   ├─ aws:ec2:MainRouteTableAssociation  app_routetable_association                     created     
    +   ├─ aws:rds:Instance                   mysql-server                                   created     
    +   ├─ pulumi:providers:mysql             mysql-provider                                 created     
    +   ├─ mysql:index:Database               mysql-database                                 created     
    +   ├─ mysql:index:User                   mysql-standard-user                            created     
    +   ├─ mysql:index:Grant                  mysql-access-grant                             created     
    +   └─ pulumi-python:dynamic:Resource     mysql_votes_table                              created     
        dynamic-resource-id: "schema-44462d37c8e04c18be08cbf05670a328"
        + 15 created
    Duration: 3m31s
  4. View the ID of the dynamic resource via stack output:

    $ pulumi stack output
    Current stack outputs (1):
        OUTPUT               VALUE
        dynamic-resource-id  schema-44462d37c8e04c18be08cbf05670a328

Clean up

To clean up resources, run pulumi destroy and answer the confirmation question at the prompt.