Hi All,
I am starting to learn pulimi. Pulumi’s infrastructure-as-code SDK helps you create, deploy, and manage AWS containers, serverless functions, and infrastructure using programming languages like TypeScript, Python, Go, C#, and Java, and markup languages like YAML. The Pulumi AWS provider packages and CLI help you accomplish all these within minutes.
Docs
- https://www.pulumi.com/docs/clouds/aws/get-started/create-project/
- https://www.pulumi.com/docs/clouds/aws/get-started/begin/
- https://www.pulumi.com/docs/clouds/aws/get-started/create-project/
Scope of this blog will be just to check how pulumi project works. Its a learning journey for Infrastructure as code with AWS.
Selected Pulumi for infrastructure-as-code as it provides programming language flexibility (It means you write test cases) & integration with a lot of the cloud providers (like aws, azure, gcp etc).
As I am comfortable with Python, it will be my choice of language.
Also, I am using my windows personal machine.
Environment Setup
Following link: https://www.pulumi.com/docs/clouds/aws/get-started/begin/
Looks like you need Powershell is preferred to install pulumi as per documentation.
To install pulumi
choco install pulumichoco install pulumichoco install pulumi
Enter fullscreen mode Exit fullscreen mode
To check installed pulumi version
pulumi versionpulumi versionpulumi version
Enter fullscreen mode Exit fullscreen mode
Version installed: v3.121.0
You need to install Python or any other language you are using. I have Python already installed in my system. So, need to install it.
Configure Pulumi to access your AWS account
Following page: https://www.pulumi.com/registry/packages/aws/installation-configuration/
Pulumi requires cloud credentials to manage and provision resources. You must use an IAM user account that has programmatic access with rights to deploy and manage resources handled through Pulumi.
I already have AWS CLI installed on my system. For pulumi we need to create a new IAM user/ existing IAM user.
Followed below mentioned steps
- I create a new IAM user “pulumi-user”
- Gave AdministratorAccess to the user (note: Gave it admin access for ease of experiments)
- Added profile “pulumi-dev” aws_access key & secret key in ~/.aws/credentials (screenshot below)
- Configure pulumi to use the profile from your terminal (command: pulumi config set aws:profile pulumi-dev)
Create a Pulumi Project
Reference link: https://www.pulumi.com/docs/clouds/aws/get-started/create-project/
I created a gitlab project called “pulumi”. Created the project “awsproj” as mentioned in the steps given on the document.
PS > pulumi new aws-pythonThis command will walk you through creating a new Pulumi project.Enter a value or leave blank to accept the (default), and press <ENTER>.Press ^C at any time to quit.project name (project): awsprojproject description (A minimal AWS Python Pulumi program):Created project 'awsproj'stack name (dev):Created stack 'dev'Enter your passphrase to protect config/secrets:Re-enter your passphrase to confirm:The toolchain to use for installing dependencies and running the program pipaws:region: The AWS region to deploy into (us-east-1):Saved configInstalling dependencies...Creating virtual environment...Finished creating virtual environmentUpdating pip, setuptools, and wheel in virtual environment...Requirement already satisfied: pip in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (22.0.4)Collecting pipDownloading pip-24.1.1-py3-none-any.whl (1.8 MB)---------------------------------------- 1.8/1.8 MB 11.6 MB/s eta 0:00:00Requirement already satisfied: setuptools in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (58.1.0)Collecting setuptoolsDownloading setuptools-70.1.1-py3-none-any.whl (883 kB)------------------------------------- 883.3/883.3 KB 28.2 MB/s eta 0:00:00Collecting wheelUsing cached wheel-0.43.0-py3-none-any.whl (65 kB)Installing collected packages: wheel, setuptools, pipAttempting uninstall: setuptoolsFound existing installation: setuptools 58.1.0Uninstalling setuptools-58.1.0:Successfully uninstalled setuptools-58.1.0Attempting uninstall: pipFound existing installation: pip 22.0.4Uninstalling pip-22.0.4:Successfully uninstalled pip-22.0.4Successfully installed pip-24.1.1 setuptools-70.1.1 wheel-0.43.0Finished updatingInstalling dependencies in virtual environment...Collecting pulumi<4.0.0,>=3.0.0 (from -r requirements.txt (line 1))Downloading pulumi-3.121.0-py3-none-any.whl.metadata (11 kB)Collecting pulumi-aws<7.0.0,>=6.0.2 (from -r requirements.txt (line 2))Downloading pulumi_aws-6.42.1-py3-none-any.whl.metadata (8.4 kB)Collecting protobuf~=4.21 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl.metadata (541 bytes)Collecting grpcio~=1.60.1 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl.metadata (4.2 kB)Collecting dill~=0.3 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB)Collecting six~=1.12 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)Collecting semver~=2.13 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Downloading semver-2.13.0-py2.py3-none-any.whl.metadata (5.0 kB)Collecting pyyaml~=6.0 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1))Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl.metadata (2.1 kB)Collecting parver>=0.2.1 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2))Downloading parver-0.5-py3-none-any.whl.metadata (2.7 kB)Collecting typing-extensions>=4.11 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2))Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)Collecting arpeggio>=1.7 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2))Downloading Arpeggio-2.0.2-py2.py3-none-any.whl.metadata (2.4 kB)Collecting attrs>=19.2 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2))Downloading attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)Downloading pulumi-3.121.0-py3-none-any.whl (263 kB)---------------------------------------- 263.4/263.4 kB 5.5 MB/s eta 0:00:00Downloading pulumi_aws-6.42.1-py3-none-any.whl (9.3 MB)---------------------------------------- 9.3/9.3 MB 14.8 MB/s eta 0:00:00Downloading dill-0.3.8-py3-none-any.whl (116 kB)---------------------------------------- 116.3/116.3 kB 6.6 MB/s eta 0:00:00Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl (3.7 MB)---------------------------------------- 3.7/3.7 MB 3.2 MB/s eta 0:00:00Downloading parver-0.5-py3-none-any.whl (15 kB)Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl (413 kB)---------------------------------------- 413.4/413.4 kB ? eta 0:00:00Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl (145 kB)Downloading semver-2.13.0-py2.py3-none-any.whl (12 kB)Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)Downloading Arpeggio-2.0.2-py2.py3-none-any.whl (55 kB)---------------------------------------- 55.3/55.3 kB ? eta 0:00:00Downloading attrs-23.2.0-py3-none-any.whl (60 kB)---------------------------------------- 60.8/60.8 kB ? eta 0:00:00Installing collected packages: arpeggio, typing-extensions, six, semver, pyyaml, protobuf, grpcio, dill, attrs, pulumi, parver, pulumi-awsSuccessfully installed arpeggio-2.0.2 attrs-23.2.0 dill-0.3.8 grpcio-1.60.1 parver-0.5 protobuf-4.25.3 pulumi-3.121.0 pulumi-aws-6.42.1 pyyaml-6.0.1 semver-2.13.0 six-1.16.0 typing-extensions-4.12.2Finished installing dependenciesFinished installing dependenciesYour new project is ready to go!To perform an initial deployment, run `pulumi up`PS > pulumi new aws-python This command will walk you through creating a new Pulumi project. Enter a value or leave blank to accept the (default), and press <ENTER>. Press ^C at any time to quit. project name (project): awsproj project description (A minimal AWS Python Pulumi program): Created project 'awsproj' stack name (dev): Created stack 'dev' Enter your passphrase to protect config/secrets: Re-enter your passphrase to confirm: The toolchain to use for installing dependencies and running the program pip aws:region: The AWS region to deploy into (us-east-1): Saved config Installing dependencies... Creating virtual environment... Finished creating virtual environment Updating pip, setuptools, and wheel in virtual environment... Requirement already satisfied: pip in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (22.0.4) Collecting pip Downloading pip-24.1.1-py3-none-any.whl (1.8 MB) ---------------------------------------- 1.8/1.8 MB 11.6 MB/s eta 0:00:00 Requirement already satisfied: setuptools in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (58.1.0) Collecting setuptools Downloading setuptools-70.1.1-py3-none-any.whl (883 kB) ------------------------------------- 883.3/883.3 KB 28.2 MB/s eta 0:00:00 Collecting wheel Using cached wheel-0.43.0-py3-none-any.whl (65 kB) Installing collected packages: wheel, setuptools, pip Attempting uninstall: setuptools Found existing installation: setuptools 58.1.0 Uninstalling setuptools-58.1.0: Successfully uninstalled setuptools-58.1.0 Attempting uninstall: pip Found existing installation: pip 22.0.4 Uninstalling pip-22.0.4: Successfully uninstalled pip-22.0.4 Successfully installed pip-24.1.1 setuptools-70.1.1 wheel-0.43.0 Finished updating Installing dependencies in virtual environment... Collecting pulumi<4.0.0,>=3.0.0 (from -r requirements.txt (line 1)) Downloading pulumi-3.121.0-py3-none-any.whl.metadata (11 kB) Collecting pulumi-aws<7.0.0,>=6.0.2 (from -r requirements.txt (line 2)) Downloading pulumi_aws-6.42.1-py3-none-any.whl.metadata (8.4 kB) Collecting protobuf~=4.21 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl.metadata (541 bytes) Collecting grpcio~=1.60.1 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl.metadata (4.2 kB) Collecting dill~=0.3 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB) Collecting six~=1.12 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB) Collecting semver~=2.13 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading semver-2.13.0-py2.py3-none-any.whl.metadata (5.0 kB) Collecting pyyaml~=6.0 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl.metadata (2.1 kB) Collecting parver>=0.2.1 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading parver-0.5-py3-none-any.whl.metadata (2.7 kB) Collecting typing-extensions>=4.11 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB) Collecting arpeggio>=1.7 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading Arpeggio-2.0.2-py2.py3-none-any.whl.metadata (2.4 kB) Collecting attrs>=19.2 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB) Downloading pulumi-3.121.0-py3-none-any.whl (263 kB) ---------------------------------------- 263.4/263.4 kB 5.5 MB/s eta 0:00:00 Downloading pulumi_aws-6.42.1-py3-none-any.whl (9.3 MB) ---------------------------------------- 9.3/9.3 MB 14.8 MB/s eta 0:00:00 Downloading dill-0.3.8-py3-none-any.whl (116 kB) ---------------------------------------- 116.3/116.3 kB 6.6 MB/s eta 0:00:00 Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl (3.7 MB) ---------------------------------------- 3.7/3.7 MB 3.2 MB/s eta 0:00:00 Downloading parver-0.5-py3-none-any.whl (15 kB) Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl (413 kB) ---------------------------------------- 413.4/413.4 kB ? eta 0:00:00 Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl (145 kB) Downloading semver-2.13.0-py2.py3-none-any.whl (12 kB) Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) Downloading Arpeggio-2.0.2-py2.py3-none-any.whl (55 kB) ---------------------------------------- 55.3/55.3 kB ? eta 0:00:00 Downloading attrs-23.2.0-py3-none-any.whl (60 kB) ---------------------------------------- 60.8/60.8 kB ? eta 0:00:00 Installing collected packages: arpeggio, typing-extensions, six, semver, pyyaml, protobuf, grpcio, dill, attrs, pulumi, parver, pulumi-aws Successfully installed arpeggio-2.0.2 attrs-23.2.0 dill-0.3.8 grpcio-1.60.1 parver-0.5 protobuf-4.25.3 pulumi-3.121.0 pulumi-aws-6.42.1 pyyaml-6.0.1 semver-2.13.0 six-1.16.0 typing-extensions-4.12.2 Finished installing dependencies Finished installing dependencies Your new project is ready to go! To perform an initial deployment, run `pulumi up`PS > pulumi new aws-python This command will walk you through creating a new Pulumi project. Enter a value or leave blank to accept the (default), and press <ENTER>. Press ^C at any time to quit. project name (project): awsproj project description (A minimal AWS Python Pulumi program): Created project 'awsproj' stack name (dev): Created stack 'dev' Enter your passphrase to protect config/secrets: Re-enter your passphrase to confirm: The toolchain to use for installing dependencies and running the program pip aws:region: The AWS region to deploy into (us-east-1): Saved config Installing dependencies... Creating virtual environment... Finished creating virtual environment Updating pip, setuptools, and wheel in virtual environment... Requirement already satisfied: pip in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (22.0.4) Collecting pip Downloading pip-24.1.1-py3-none-any.whl (1.8 MB) ---------------------------------------- 1.8/1.8 MB 11.6 MB/s eta 0:00:00 Requirement already satisfied: setuptools in c:\users\debashis\git_projects\pulumi\venv\lib\site-packages (58.1.0) Collecting setuptools Downloading setuptools-70.1.1-py3-none-any.whl (883 kB) ------------------------------------- 883.3/883.3 KB 28.2 MB/s eta 0:00:00 Collecting wheel Using cached wheel-0.43.0-py3-none-any.whl (65 kB) Installing collected packages: wheel, setuptools, pip Attempting uninstall: setuptools Found existing installation: setuptools 58.1.0 Uninstalling setuptools-58.1.0: Successfully uninstalled setuptools-58.1.0 Attempting uninstall: pip Found existing installation: pip 22.0.4 Uninstalling pip-22.0.4: Successfully uninstalled pip-22.0.4 Successfully installed pip-24.1.1 setuptools-70.1.1 wheel-0.43.0 Finished updating Installing dependencies in virtual environment... Collecting pulumi<4.0.0,>=3.0.0 (from -r requirements.txt (line 1)) Downloading pulumi-3.121.0-py3-none-any.whl.metadata (11 kB) Collecting pulumi-aws<7.0.0,>=6.0.2 (from -r requirements.txt (line 2)) Downloading pulumi_aws-6.42.1-py3-none-any.whl.metadata (8.4 kB) Collecting protobuf~=4.21 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl.metadata (541 bytes) Collecting grpcio~=1.60.1 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl.metadata (4.2 kB) Collecting dill~=0.3 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading dill-0.3.8-py3-none-any.whl.metadata (10 kB) Collecting six~=1.12 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB) Collecting semver~=2.13 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Downloading semver-2.13.0-py2.py3-none-any.whl.metadata (5.0 kB) Collecting pyyaml~=6.0 (from pulumi<4.0.0,>=3.0.0->-r requirements.txt (line 1)) Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl.metadata (2.1 kB) Collecting parver>=0.2.1 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading parver-0.5-py3-none-any.whl.metadata (2.7 kB) Collecting typing-extensions>=4.11 (from pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB) Collecting arpeggio>=1.7 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading Arpeggio-2.0.2-py2.py3-none-any.whl.metadata (2.4 kB) Collecting attrs>=19.2 (from parver>=0.2.1->pulumi-aws<7.0.0,>=6.0.2->-r requirements.txt (line 2)) Downloading attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB) Downloading pulumi-3.121.0-py3-none-any.whl (263 kB) ---------------------------------------- 263.4/263.4 kB 5.5 MB/s eta 0:00:00 Downloading pulumi_aws-6.42.1-py3-none-any.whl (9.3 MB) ---------------------------------------- 9.3/9.3 MB 14.8 MB/s eta 0:00:00 Downloading dill-0.3.8-py3-none-any.whl (116 kB) ---------------------------------------- 116.3/116.3 kB 6.6 MB/s eta 0:00:00 Downloading grpcio-1.60.1-cp310-cp310-win_amd64.whl (3.7 MB) ---------------------------------------- 3.7/3.7 MB 3.2 MB/s eta 0:00:00 Downloading parver-0.5-py3-none-any.whl (15 kB) Downloading protobuf-4.25.3-cp310-abi3-win_amd64.whl (413 kB) ---------------------------------------- 413.4/413.4 kB ? eta 0:00:00 Using cached PyYAML-6.0.1-cp310-cp310-win_amd64.whl (145 kB) Downloading semver-2.13.0-py2.py3-none-any.whl (12 kB) Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) Downloading Arpeggio-2.0.2-py2.py3-none-any.whl (55 kB) ---------------------------------------- 55.3/55.3 kB ? eta 0:00:00 Downloading attrs-23.2.0-py3-none-any.whl (60 kB) ---------------------------------------- 60.8/60.8 kB ? eta 0:00:00 Installing collected packages: arpeggio, typing-extensions, six, semver, pyyaml, protobuf, grpcio, dill, attrs, pulumi, parver, pulumi-aws Successfully installed arpeggio-2.0.2 attrs-23.2.0 dill-0.3.8 grpcio-1.60.1 parver-0.5 protobuf-4.25.3 pulumi-3.121.0 pulumi-aws-6.42.1 pyyaml-6.0.1 semver-2.13.0 six-1.16.0 typing-extensions-4.12.2 Finished installing dependencies Finished installing dependencies Your new project is ready to go! To perform an initial deployment, run `pulumi up`
Enter fullscreen mode Exit fullscreen mode
As we can see, it created a virtual environment “.venv”.
Note: I have used pip as the package installer as finding error while using poetry.
How project structure looks like?
Mode LastWriteTime Length Name---- ------------- ------ ----d----- 01-07-2024 14:29 venv-a---- 01-07-2024 14:29 14 .gitignore-a---- 01-07-2024 14:29 117 Pulumi.dev.yaml-a---- 01-07-2024 14:29 206 Pulumi.yaml-a---- 01-07-2024 14:29 48 requirements.txt-a---- 01-07-2024 14:29 229 __main__.pyMode LastWriteTime Length Name ---- ------------- ------ ---- d----- 01-07-2024 14:29 venv -a---- 01-07-2024 14:29 14 .gitignore -a---- 01-07-2024 14:29 117 Pulumi.dev.yaml -a---- 01-07-2024 14:29 206 Pulumi.yaml -a---- 01-07-2024 14:29 48 requirements.txt -a---- 01-07-2024 14:29 229 __main__.pyMode LastWriteTime Length Name ---- ------------- ------ ---- d----- 01-07-2024 14:29 venv -a---- 01-07-2024 14:29 14 .gitignore -a---- 01-07-2024 14:29 117 Pulumi.dev.yaml -a---- 01-07-2024 14:29 206 Pulumi.yaml -a---- 01-07-2024 14:29 48 requirements.txt -a---- 01-07-2024 14:29 229 __main__.py
Enter fullscreen mode Exit fullscreen mode
Contents inside requirements.txt
pulumi>=3.0.0,<4.0.0pulumi-aws>=6.0.2,<7.0.0pulumi>=3.0.0,<4.0.0 pulumi-aws>=6.0.2,<7.0.0pulumi>=3.0.0,<4.0.0 pulumi-aws>=6.0.2,<7.0.0
Enter fullscreen mode Exit fullscreen mode
Activate the Virtual Environment
To activate the virtual environment
.\venv\Scripts\activate.\venv\Scripts\activate.\venv\Scripts\activate
Enter fullscreen mode Exit fullscreen mode
Check pip dependencies
pip freezeArpeggio==2.0.2attrs==23.2.0dill==0.3.8grpcio==1.60.1parver==0.5protobuf==4.25.3pulumi==3.121.0pulumi_aws==6.42.1PyYAML==6.0.1semver==2.13.0six==1.16.0typing_extensions==4.12.2pip freeze Arpeggio==2.0.2 attrs==23.2.0 dill==0.3.8 grpcio==1.60.1 parver==0.5 protobuf==4.25.3 pulumi==3.121.0 pulumi_aws==6.42.1 PyYAML==6.0.1 semver==2.13.0 six==1.16.0 typing_extensions==4.12.2pip freeze Arpeggio==2.0.2 attrs==23.2.0 dill==0.3.8 grpcio==1.60.1 parver==0.5 protobuf==4.25.3 pulumi==3.121.0 pulumi_aws==6.42.1 PyYAML==6.0.1 semver==2.13.0 six==1.16.0 typing_extensions==4.12.2
Enter fullscreen mode Exit fullscreen mode
Running a Pulumi Project
When you create a pulumi project, it generates a main.py by default.
Content of main.py
"""An AWS Python Pulumi program"""import pulumifrom pulumi_aws import s3# Create an AWS resource (S3 Bucket)bucket = s3.Bucket('my-bucket')# Export the name of the bucketpulumi.export('bucket_name', bucket.id)"""An AWS Python Pulumi program""" import pulumi from pulumi_aws import s3 # Create an AWS resource (S3 Bucket) bucket = s3.Bucket('my-bucket') # Export the name of the bucket pulumi.export('bucket_name', bucket.id)"""An AWS Python Pulumi program""" import pulumi from pulumi_aws import s3 # Create an AWS resource (S3 Bucket) bucket = s3.Bucket('my-bucket') # Export the name of the bucket pulumi.export('bucket_name', bucket.id)
Enter fullscreen mode Exit fullscreen mode
It means if we run this script, it should create an S3 bucket with the prefix “my-bucket”.
Lets run it
command:
pulumi uppulumi uppulumi up
Enter fullscreen mode Exit fullscreen mode
Screenshot of the run
As you can see, it created an S3 bucket
Destroying Resources
command
pulumi destroypulumi destroypulumi destroy
Enter fullscreen mode Exit fullscreen mode
As you can see bucket got destroyed.
暂无评论内容