Пример #1
0
def already_exists_overwrite(cfn_params, outputs, stack_id):
    cfn_client = boto3.client('cloudformation')
    cfn_params['Table'] = "1"
    cfn_params['Overwrite'] = "true"
    cfn_client.update_stack(
        StackName=stack_id,
        UsePreviousTemplate=True,
        Parameters=dict_to_param_array(cfn_params),
    )
    assert CloudFormationStates.UPDATE_COMPLETE == wait_until_stack_stable(stack_id)

    ddb_client = boto3.client('dynamodb')
    item = ddb_client.get_item(
        TableName=outputs['Table1Name'],
        Key={"key": {"S": "foo"}},
    )
    assert {
               "key": {"S": "foo"},
               "value": {"S": "42"},
           } == item['Item']

    item = ddb_client.get_item(
        TableName=outputs['Table2Name'],
        Key={"key": {"S": "foo"}},
    )
    assert 'Item' not in item
Пример #2
0
def create_stack(cfn_params, stack_name):
    cfn_client = boto3.client('cloudformation')

    stack_id = cfn_client.create_stack(
        StackName=stack_name,
        TemplateBody=template.to_json(),
        Parameters=dict_to_param_array(cfn_params),
    )
    stack_id = stack_id['StackId']
    assert CloudFormationStates.CREATE_COMPLETE == wait_until_stack_stable(stack_id)
    stack_info = cfn_client.describe_stacks(
        StackName=stack_id,
    )
    outputs = {
        _['OutputKey']: _['OutputValue']
        for _ in stack_info['Stacks'][0]['Outputs']
    }
    ddb_client = boto3.client('dynamodb')
    item = ddb_client.get_item(
        TableName=outputs['Table1Name'],
        Key={"key": {"S": "foo"}},
    )
    assert {
               "key": {"S": "foo"},
               "value": {"S": "bar"},
           } == item['Item']

    return outputs, stack_id
Пример #3
0
def delete_stack(cfn_params, outputs, stack_id):
    cfn_client = boto3.client('cloudformation')
    cfn_client.delete_stack(
        StackName=stack_id,
    )
    assert CloudFormationStates.DELETE_COMPLETE == wait_until_stack_stable(stack_id)