stackql-deploy 2.2.0

Infrastructure-as-code framework for declarative cloud resource management using StackQL
/*+ exists */
SELECT count(*) as count
FROM awscc.s3.buckets
WHERE region = '{{ region }}' AND
Identifier = '{{ bucket_name }}';

/*+ create */
INSERT INTO awscc.s3.buckets (
 BucketEncryption,
 BucketName,
 OwnershipControls,
 PublicAccessBlockConfiguration,
 Tags,
 VersioningConfiguration,
 region
)
SELECT
 '{{ bucket_encryption }}',
 '{{ bucket_name }}',
 '{{ ownership_controls }}',
 '{{ public_access_block_configuration }}',
 '{{ tags }}',
 '{{ versioning_configuration }}',
 '{{ region }}';

/*+ update */
UPDATE awscc.s3.buckets
SET PatchDocument = string('{{ {
    "BucketEncryption": bucket_encryption,
    "OwnershipControls": ownership_controls,
    "PublicAccessBlockConfiguration": public_access_block_configuration,
    "Tags": tags,
    "VersioningConfiguration": versioning_configuration
} | generate_patch_document }}')
WHERE region = '{{ region }}'
AND Identifier = '{{ bucket_name }}';

/*+ exports, retries=3, retry_delay=5 */
SELECT 
arn,
bucket_name
FROM (
    SELECT 
        arn,
        bucket_name,
        JSON_EQUAL(ownership_controls, '{{ ownership_controls }}') as test_ownership_controls,
        JSON_EQUAL(bucket_encryption, '{{ bucket_encryption }}') as test_bucket_encryption,
        JSON_EQUAL(public_access_block_configuration, '{{ public_access_block_configuration }}') as test_public_access_block_configuration,
        JSON_EQUAL(versioning_configuration, '{{ versioning_configuration }}') as test_versioning_configuration,
        AWS_POLICY_EQUAL(tags, '{{ tags }}') as test_tags
    FROM awscc.s3.buckets 
    WHERE region = '{{ region }}' 
    AND Identifier = '{{ bucket_name }}'
)t
WHERE test_ownership_controls = 1
AND test_bucket_encryption = 1
AND test_public_access_block_configuration = 1
AND test_versioning_configuration = 1
AND test_tags = 1;

/*+ delete */
DELETE FROM awscc.s3.buckets
WHERE Identifier = '{{ bucket_name }}'
AND region = '{{ region }}';