⭐ AWS CloudFormation deployment for human, Enable terraform plan, terraform apply styled deployment.
Project description
Welcome to aws_cloudformation Documentation
Enable terraform plan, terraform apply styled deployment.
Talk is cheap, show me the code
⭐ CloudFormation declaration, see cottonformation:
# -*- coding: utf-8 -*-
import cottonformation as cf
from cottonformation.res import secretsmanager
def make_tpl_1() -> cf.Template:
"""
Create Secret1
"""
tpl = cf.Template()
secret1 = secretsmanager.Secret(
"Secret1",
p_Name="aws_cft_secret1",
p_Description="This is Secret 1",
p_Tags=[
cf.Tag(p_Key="Creator", p_Value="Alice"),
cf.Tag(p_Key="Description", p_Value="Hello"),
]
)
tpl.add(secret1)
return tpl
def make_tpl_2() -> cf.Template:
"""
Modify Secret1
Create Secret222
"""
tpl = make_tpl_1()
secret1: secretsmanager.Secret = tpl.Resources["Secret1"]
secret1.p_Description = "This must be Secret 1"
secret1.p_Tags = [
cf.Tag(p_Key="Creator", p_Value="Bob"),
cf.Tag(p_Key="Env", p_Value="Dev"),
]
secret2 = secretsmanager.Secret(
"Secret222",
p_Name="aws_cft_secret2",
p_Description="This is Secret 2",
)
tpl.add(secret2)
output_secret2_arn = cf.Output(
"Secret222Arn",
Value=secret2.ref(),
)
tpl.add(output_secret2_arn)
return tpl
def make_tpl_3() -> cf.Template:
"""
Delete Secret1
Modify Secret222
Create Secret33333
"""
tpl = make_tpl_2()
tpl.remove(tpl.Resources["Secret1"])
secret2: secretsmanager.Secret = tpl.Resources["Secret222"]
secret2.p_Description = "This definitely be Secret 2"
secret2.p_Tags = [
cf.Tag(p_Key="Creator", p_Value="Cathy"),
cf.Tag(p_Key="Env", p_Value="QA"),
]
secret2.ra_Metadata = {"email": "cathy@email.com"}
secret3 = secretsmanager.Secret(
"Secret33333",
p_Name="aws_cft_secret3",
p_Description="This is Secret 3",
)
tpl.add(secret3)
return tpl
⭐ Deployment Script:
# -*- coding: utf-8 -*-
from aws_cloudformation.deploy import deploy_stack, remove_stack
from aws_cloudformation.tests import bsm
from aws_cloudformation.tests.stacks.secretmanager_stack import (
make_tpl_1,
make_tpl_2,
make_tpl_3,
)
stack_name = "cottonformation-deploy-stack-test"
deploy_stack(
bsm,
stack_name=stack_name,
template=make_tpl_1().to_json(),
skip_prompt=True,
)
deploy_stack(
bsm,
stack_name=stack_name,
template=make_tpl_2().to_json(),
skip_prompt=True,
)
deploy_stack(
bsm,
stack_name=stack_name,
template=make_tpl_3().to_json(),
skip_prompt=True,
)
remove_stack(
bsm,
stack_name=stack_name,
skip_prompt=True,
)
⭐ Console Output:
============== Deploy stack: 'cottonformation-deploy-stack-test' ===============
preview stack in AWS CloudFormation console: https://console.aws.amazon.com/cloudformation/home?#/stacks?filteringStatus=active&filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false
preview **change set details** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/changesets/changes?stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&changeSetId=arn:aws:cloudformation:us-east-1:111122223333:changeSet/cottonformation-deploy-stack-test-2022-12-08-04-51-58-892/8c88d0c1-d5c7-495b-820e-29e5752a04d4
wait for change set creation to finish ...
on 1 th attempt, elapsed 5 seconds, remain 55 seconds ...
reached status CREATE_COMPLETE
+---------------------------- Change Set Statistics -----------------------------
| 🟢 Add 1 Resource
|
+--------------------------------------------------------------------------------
+----------------------------------- Changes ------------------------------------
| 🟢 📦 Add Resource: Secret1 AWS::SecretsManager::Secret
|
+--------------------------------------------------------------------------------
need to execute the change set to apply those changes.
preview **create stack progress** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/stackinfo?filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false&stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&filteringStatus=active
wait for deploy to finish ...
on 2 th attempt, elapsed 10 seconds, remain 50 seconds ...
reached status 🟢 'CREATE_COMPLETE'
done
============== Deploy stack: 'cottonformation-deploy-stack-test' ===============
preview stack in AWS CloudFormation console: https://console.aws.amazon.com/cloudformation/home?#/stacks?filteringStatus=active&filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false
preview **change set details** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/changesets/changes?stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&changeSetId=arn:aws:cloudformation:us-east-1:111122223333:changeSet/cottonformation-deploy-stack-test-2022-12-08-04-52-39-134/8e1fd139-7a37-43dd-9378-40a328970036
wait for change set creation to finish ...
on 1 th attempt, elapsed 5 seconds, remain 55 seconds ...
reached status CREATE_COMPLETE
+---------------------------- Change Set Statistics -----------------------------
| 🟢 Add 1 Resource
| 🔵 Modify 1 Resource
|
+--------------------------------------------------------------------------------
+----------------------------------- Changes ------------------------------------
| 🟢 📦 Add Resource: Secret222 AWS::SecretsManager::Secret
| 🔵 📦 Modify Resource: Secret1 AWS::SecretsManager::Secret
| 🔵 💡 Properties: Secret1 AWS::SecretsManager::Secret.Description
| 🔵 💡 Tags: Secret1 AWS::SecretsManager::Secret
|
+--------------------------------------------------------------------------------
need to execute the change set to apply those changes.
preview **update stack progress** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/stackinfo?filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false&stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&filteringStatus=active
wait for deploy to finish ...
on 3 th attempt, elapsed 15 seconds, remain 45 seconds ...
reached status 🟢 'UPDATE_COMPLETE'
done
============== Deploy stack: 'cottonformation-deploy-stack-test' ===============
preview stack in AWS CloudFormation console: https://console.aws.amazon.com/cloudformation/home?#/stacks?filteringStatus=active&filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false
preview **change set details** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/changesets/changes?stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&changeSetId=arn:aws:cloudformation:us-east-1:111122223333:changeSet/cottonformation-deploy-stack-test-2022-12-08-04-53-07-499/6edbcdf2-8e27-463f-bc5f-35587463fceb
wait for change set creation to finish ...
on 2 th attempt, elapsed 10 seconds, remain 50 seconds ...
reached status CREATE_COMPLETE
+---------------------------- Change Set Statistics -----------------------------
| 🟢 Add 1 Resource
| 🔵 Modify 1 Resource
| 🔴 Remove 1 Resource
|
+--------------------------------------------------------------------------------
+----------------------------------- Changes ------------------------------------
| 🟢 📦 Add Resource: Secret33333 AWS::SecretsManager::Secret
| 🔵 📦 Modify Resource: Secret222 AWS::SecretsManager::Secret
| 🔵 💡 Properties: Secret222 AWS::SecretsManager::Secret.Description
| 🔵 💡 Metadata: Secret222 AWS::SecretsManager::Secret
| 🔵 💡 CreationPolicy: Secret222 AWS::SecretsManager::Secret
| 🔵 💡 UpdatePolicy: Secret222 AWS::SecretsManager::Secret
| 🔵 💡 Tags: Secret222 AWS::SecretsManager::Secret
| 🔴 📦 Remove Resource: Secret1 AWS::SecretsManager::Secret
|
+--------------------------------------------------------------------------------
need to execute the change set to apply those changes.
preview **update stack progress** at: https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/stackinfo?filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false&stackId=arn:aws:cloudformation:us-east-1:111122223333:stack/cottonformation-deploy-stack-test/0c5596c0-76b4-11ed-92b1-0a0bcad48579&filteringStatus=active
wait for deploy to finish ...
on 3 th attempt, elapsed 15 seconds, remain 45 seconds ...
reached status 🟢 'UPDATE_COMPLETE'
done
=============== Remove stack 'cottonformation-deploy-stack-test' ===============
preview stack in AWS CloudFormation console: https://console.aws.amazon.com/cloudformation/home?#/stacks?filteringStatus=active&filteringText=cottonformation-deploy-stack-test&viewNested=true&hideStacks=false
wait for delete to finish ...
on 1 th attempt, elapsed 5 seconds, remain 55 seconds ...
already deleted.
done
Install
aws_cloudformation is released on PyPI, so all you need is:
$ pip install aws_cloudformation
To upgrade to latest version:
$ pip install --upgrade aws_cloudformation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aws_cloudformation-0.1.1.tar.gz
(25.7 kB
view hashes)
Built Distribution
Close
Hashes for aws_cloudformation-0.1.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 391787f504124e065fa62b909297ba57111e18dfa7881fd0623f1ab4ad8d58cd |
|
MD5 | ddc496b866a5a6399c56eaa92dc1d91d |
|
BLAKE2b-256 | 4e9170c2ba05dd3363cae2bc8ffec028cdedf3b38f392d361c9f427ae0cb6680 |