Last updated:
0 purchases
awscloudformation 1.5.1
Welcome to aws_cloudformation Documentation
AWS CloudFormation deployment for human, Enable terraform plan, terraform apply styled deployment.
Features:
Preview the change set details before deployment.
Automatically upload big template to S3 before deployment, even for nested template.
Support SYNC call for deployment and deletion, wait until it success or fail (the original API is ASYNC call).
Allow prompt for user to enter βYESβ to proceed.
Provide hyperlink for one-click to jump to the Console to preview.
Table of Content
Talk is cheap, show me the code
Install
Talk is cheap, show me the code
β 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
β 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": "[email protected]"}
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.api 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, # by default, it prompt user input for YES / NO to proceed
# skip_plan=False, # by default, it does plan first
# wait=True, # by default, it waits the update to finish
)
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,
)
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
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.