diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml
index 019de386..ed996768 100644
--- a/.github/workflows/qa.yml
+++ b/.github/workflows/qa.yml
@@ -14,8 +14,9 @@ jobs:
name: SonarCloud Analysis
uses: ./.github/workflows/sonar.yml
with:
- python-version: "3.11"
- secrets: inherit
+ python-version: "3.12"
+ secrets:
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
test:
name: StartLeft Tests
strategy:
diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml
index 995c4365..625c63e0 100644
--- a/.github/workflows/sonar.yml
+++ b/.github/workflows/sonar.yml
@@ -40,32 +40,30 @@ jobs:
- name: Generate coverage report
run: coverage xml
- name: Analyze with SonarCloud
- # You can pin the exact commit or the version.
- # uses: SonarSource/sonarcloud-github-action@commithas or tag
- uses: SonarSource/sonarcloud-github-action@49e6cd3b187936a73b8280d59ffd9da69df63ec9 #v2.1.1
+ uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 #v5.3.1
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information
- SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Generate a token on Sonarcloud.io, add it to the secrets of this repo with the name SONAR_TOKEN (Settings > Secrets > Actions > add new repository secret)
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information
+ SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # SonarCloud token
+ SONAR_HOST_URL: "https://sonarcloud.io" # Required for SonarCloud
with:
- # Additional arguments for the sonarcloud scanner
- args:
+ args: >
-Dsonar.projectKey=startleft
-Dsonar.organization=continuumsec
- -Dsonar.python.version=3.9,3.10,3.11
+ -Dsonar.python.version=3.10,3.11,3.12
-Dsonar.qualitygate.wait=true
-Dsonar.python.coverage.reportPaths=coveragereport/coverage.xml
- # Args explanation
- # Unique keys of your project and organization. You can find them in SonarCloud > Information (bottom-left menu)
- # mandatory
- # -Dsonar.projectKey=
- # -Dsonar.organization=
+ # Args explanation
+ # Unique keys of your project and organization. You can find them in SonarCloud > Information (bottom-left menu)
+ # mandatory
+ # -Dsonar.projectKey=
+ # -Dsonar.organization=
- # Version of supported python versions to get a more precise analysis
- # -Dsonar.python.version=
+ # Version of supported python versions to get a more precise analysis
+ # -Dsonar.python.version=
- # Flag to way for Analysis Quality Gate results, if fail the steps it will be marked as failed too.
- # -Dsonar.qualitygate.wait=
+ # Flag to way for Analysis Quality Gate results, if fail the steps it will be marked as failed too.
+ # -Dsonar.qualitygate.wait=
- # The path for coverage report to use in the SonarCloud analysis, it must be in XML format.
- # -Dsonar.python.coverage.reportPaths=
\ No newline at end of file
+ # The path for coverage report to use in the SonarCloud analysis, it must be in XML format.
+ # -Dsonar.python.coverage.reportPaths=
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 0d0d6a9e..24baab12 100644
--- a/setup.py
+++ b/setup.py
@@ -16,14 +16,14 @@
include_package_data=True,
python_requires='>= 3.10, < 3.13',
install_requires=[
- 'pyyaml==6.0.1',
+ 'pyyaml==6.0.3',
'jsonschema==4.19.0',
'deepmerge==1.1.0',
'jmespath==1.0.1',
'python-hcl2==4.3.2',
'requests==2.32.4',
- 'fastapi>=0.116.1,<0.117.0',
- "python-multipart==0.0.19",
+ 'fastapi>=0.120.4,<0.121.0',
+ "python-multipart==0.0.20",
'click==8.1.7',
'uvicorn==0.23.2',
'vsdx==0.5.19',
diff --git a/sl_util/sl_util/secure_regex.py b/sl_util/sl_util/secure_regex.py
index 77b0b229..bac7aa4d 100644
--- a/sl_util/sl_util/secure_regex.py
+++ b/sl_util/sl_util/secure_regex.py
@@ -23,3 +23,7 @@ def split(pattern, text, maxsplit=0, options=None):
def compile(pattern, options=None):
return re2.compile(pattern, options)
+
+
+def search(pattern, string, options=None):
+ return re2.search(pattern, string, options)
diff --git a/sl_util/sl_util/str_utils.py b/sl_util/sl_util/str_utils.py
index 0d4cc284..67c8feda 100644
--- a/sl_util/sl_util/str_utils.py
+++ b/sl_util/sl_util/str_utils.py
@@ -1,7 +1,11 @@
+import html
import random
import uuid
+
from word2number import w2n
+from sl_util.sl_util import secure_regex as re
+
def deterministic_uuid(source):
if source:
@@ -22,5 +26,19 @@ def to_number(input, default_value: int = 0) -> int:
except ValueError:
return default_value
+
def truncate(s: str, max_length: int) -> str:
- return s[:max_length] if s else s
\ No newline at end of file
+ return s[:max_length] if s else s
+
+
+def remove_html_tags_and_entities(s: str) -> str:
+ if s is None:
+ return ''
+
+ pattern_tags = re.compile(r'<\s*/?\s*[a-zA-Z]+.*?>')
+ no_html = re.sub(pattern_tags, ' ', s).strip() if s else s
+
+ pattern_spaces = re.compile(r'\s+')
+ no_spaces = re.sub(pattern_spaces, ' ', no_html) if no_html else no_html
+
+ return html.unescape(no_spaces).replace('\xa0', ' ').strip()
diff --git a/sl_util/tests/unit/test_secure_regex_wrapper.py b/sl_util/tests/unit/test_secure_regex_wrapper.py
index fad975f8..ef1ef85f 100644
--- a/sl_util/tests/unit/test_secure_regex_wrapper.py
+++ b/sl_util/tests/unit/test_secure_regex_wrapper.py
@@ -54,3 +54,8 @@ def test_find_all(self, expression, value, expected):
])
def test_split(self, expression, value, expected):
assert sre.findall(expression, value) == expected
+
+
+ def test_search(self):
+ assert sre.search(r"match\d+.*match\d{1}", "match1 and match2") is not None
+ assert sre.search(r"match\d+.*match\d{1}", "matchA not found") is None
diff --git a/sl_util/tests/unit/test_str_utils.py b/sl_util/tests/unit/test_str_utils.py
index 9430afad..d8bdb4b2 100644
--- a/sl_util/tests/unit/test_str_utils.py
+++ b/sl_util/tests/unit/test_str_utils.py
@@ -1,7 +1,9 @@
-from pytest import mark, param
import random
from unittest.mock import patch
-from sl_util.sl_util.str_utils import deterministic_uuid, to_number
+
+from pytest import mark, param
+
+from sl_util.sl_util.str_utils import deterministic_uuid, to_number, remove_html_tags_and_entities
class TestStrUtils:
@@ -76,3 +78,26 @@ def test_number_conversions_to_alphanumeric(self, source):
number2 = to_number(source)
# Then we obtain default value 0
assert number1 == number2 == 0
+
+ @mark.parametrize('source, expected', [
+ param('Link ', 'Link', id='only link tag'),
+ param('
This is an AWS component.
', 'This is an AWS component.', id='with nested tags'),
+ param('', 'DDBB Postgres SQL', id='with multiple nested tags'),
+ param('< p>This is an AWS component.< /p > Link ',
+ 'This is an AWS component. Link', id='with tags and link'),
+ param('
Void tag', 'Void tag', id='void tag'),
+ param('IN < http & https', 'IN < http & https', id='with lt and ampersand'),
+ param('OUT > socket & https', 'OUT > socket & https', id='with gt and ampersand'),
+ param(' 2 < 3 socket > 3 https> <&udp> <=tcp>', '2 < 3 socket > 3 https> <&udp> <=tcp>', id='with non html gt and lt'),
+ param('No HTML tags here.', 'No HTML tags here.', id='without html tags'),
+ param('HTML entities <>&£€©', 'HTML entities <>&£€©', id='with html entities'),
+ param('', '', id='empty string'),
+ param(None, '', id='null value')
+ ])
+ def test_remove_html_tags_and_entities(self, source, expected):
+ # GIVEN a string with html tags
+ # WHEN removing html tags
+ result = remove_html_tags_and_entities(source)
+
+ # THEN we obtain the expected string
+ assert result == expected
diff --git a/sl_util/tests/util/file_utils.py b/sl_util/tests/util/file_utils.py
index 2a39f7bf..2bcb06ab 100644
--- a/sl_util/tests/util/file_utils.py
+++ b/sl_util/tests/util/file_utils.py
@@ -15,3 +15,11 @@ def get_upload_file(source: str) -> UploadFile:
tmp_file.seek(0)
return UploadFile(filename=os.path.split(source)[1], file=tmp_file)
+
+
+def generate_temporary_file(size_in_bytes: int, filename: str = "temp.txt") -> bytes:
+ temporary_file = SpooledTemporaryFile()
+ temporary_file.write(b'0' * size_in_bytes)
+ temporary_file.seek(0)
+
+ return UploadFile(filename=filename, file=temporary_file).file.read()
diff --git a/slp_cft/tests/integration/test_cft_processor.py b/slp_cft/tests/integration/test_cft_processor.py
index 85f28427..235affcd 100644
--- a/slp_cft/tests/integration/test_cft_processor.py
+++ b/slp_cft/tests/integration/test_cft_processor.py
@@ -2,13 +2,16 @@
from sl_util.sl_util.file_utils import get_byte_data
from slp_base.slp_base.errors import OTMBuildingError, MappingFileNotValidError, IacFileNotValidError, \
- LoadingIacFileError
+ LoadingIacFileError, ErrorCode
+from slp_base.slp_base.mapping import MAX_SIZE as MAPPING_MAX_SIZE, MIN_SIZE as MAPPING_MIN_SIZE
from slp_base.tests.util.otm import validate_and_compare_otm, validate_and_compare
from slp_cft import CloudformationProcessor
from slp_cft.tests.resources import test_resource_paths
from slp_cft.tests.resources.test_resource_paths import expected_orphan_component_is_not_mapped, \
cft_components_with_trustzones_of_same_type_otm, cloudformation_minimal_content_otm
from slp_cft.tests.utility import excluded_regex
+from sl_util.tests.util.file_utils import generate_temporary_file
+from slp_cft.slp_cft.validate.cft_validator import MAX_SIZE as FILE_MAX_SIZE, MIN_SIZE as FILE_MIN_SIZE
SAMPLE_ID = 'id'
SAMPLE_NAME = 'name'
@@ -17,8 +20,16 @@
SAMPLE_SINGLE_VALID_CFT_FILE = test_resource_paths.cloudformation_single_file
SAMPLE_VALID_MAPPING_FILE_IR = test_resource_paths.cloudformation_mapping_iriusrisk
SAMPLE_MAPPING_FILE_WITHOUT_REF = test_resource_paths.cloudformation_mapping_without_ref
+SAMPLE_DEFAULT_OLD_MAPPING = test_resource_paths.cloudformation_old_default_mapping
+SAMPLE_DEFAULT_NEW_MAPPING = test_resource_paths.cloudformation_new_default_mapping
+SAMPLE_MAPPING_WITHOUT_TRUSTZONE_TYPE = test_resource_paths.cloudformation_mapping_valid_without_trustzone_type
+SAMPLE_CLOUDFORMATION_MAPPING_ALL_FUNCTIONS = test_resource_paths.cloudformation_mapping_all_functions
SAMPLE_NETWORKS_CFT_FILE = test_resource_paths.cloudformation_networks_file
SAMPLE_RESOURCES_CFT_FILE = test_resource_paths.cloudformation_resources_file
+SAMPLE_RESOURCES_INVALID_CFT_FILE = test_resource_paths.cloudformation_resources_invalid
+SAMPLE_REACT_CORS_SPA_STACK = test_resource_paths.cloudformation_react_cors_spa_stack
+SAMPLE_CLOUDFORMATION_ALL_FUNCTIONS = test_resource_paths.cloudformation_all_functions
+SAMPLE_CLOUDFORMATION_TEST = test_resource_paths.cloudformation_test
SAMPLE_REF_DEFAULT_JSON = test_resource_paths.cloudformation_with_ref_function_and_default_property_json
SAMPLE_REF_DEFAULT_YAML = test_resource_paths.cloudformation_with_ref_function_and_default_property_yaml
SAMPLE_REF_WITHOUT_DEFAULT_JSON = test_resource_paths.cloudformation_with_ref_function_and_without_default_property_json
@@ -486,7 +497,7 @@ def test_invalid_cloudformation_file(self, cloudformation_file):
mapping_file = [get_byte_data(SAMPLE_VALID_MAPPING_FILE)]
# WHEN creating OTM project from IaC file
- # THEN raises OTMBuildingError
+ # THEN raises IacFileNotValidError
with pytest.raises(IacFileNotValidError):
CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, cloudformation_file, mapping_file).process()
@@ -522,7 +533,7 @@ def test_run_empty_multiple_iac_files(self):
# GIVEN a request without any iac_file key
mapping_file = get_byte_data(SAMPLE_VALID_MAPPING_FILE_IR)
# WHEN the method CloudformationProcessor::process is invoked
- # THEN an RequestValidationError is raised
+ # THEN an LoadingIacFileError is raised
with pytest.raises(LoadingIacFileError):
CloudformationProcessor('multiple-files', 'multiple-files', [], mapping_file).process()
@@ -541,22 +552,6 @@ def test_security_group_configuration(self, source):
assert len(otm.components) == 1
assert otm.components[0].parent == 'f0ba7722-39b6-4c81-8290-a30a248bb8d9'
- def test_multiple_stack_plus_s3_ec2(self):
- # GIVEN the file with multiple Subnet AWS::EC2::Instance different configurations
- cloudformation_file = get_byte_data(test_resource_paths.multiple_stack_plus_s3_ec2)
- # AND a valid iac mappings file
- mapping_file = [get_byte_data(SAMPLE_VALID_MAPPING_FILE)]
-
- # WHEN processing
- otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], mapping_file).process()
-
- assert len(otm.components) == 9
- publicSubnet1Id = [component for component in otm.components if component.name == 'PublicSubnet1'][0].id
- assert publicSubnet1Id
- ec2WithWrongParent = [component for component in otm.components if
- component.type == 'ec2' and component.parent != publicSubnet1Id]
- assert len(ec2WithWrongParent) == 0
-
def test_parsing_cft_json_file_with_ref(self):
# GIVEN a cloudformation JSON file
cloudformation_file = get_byte_data(SAMPLE_REF_DEFAULT_JSON)
@@ -687,3 +682,130 @@ def test_components_with_trustzones_of_same_type(self):
# THEN the result should be the expected
result, expected = validate_and_compare(otm, cft_components_with_trustzones_of_same_type_otm, None)
assert result == expected
+
+ def test_multiple_stack_plus_s3_ec2(self):
+ # GIVEN the file with multiple Subnet AWS::EC2::Instance different configurations
+ cloudformation_file = get_byte_data(test_resource_paths.multiple_stack_plus_s3_ec2)
+ # AND a valid iac mappings file
+ mapping_file = get_byte_data(SAMPLE_VALID_MAPPING_FILE)
+
+ # WHEN processing
+ otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ assert len(otm.components) == 9
+ publicSubnet1Id = [component for component in otm.components if component.name == 'PublicSubnet1'][0].id
+ assert publicSubnet1Id
+ ec2WithWrongParent = [component for component in otm.components if
+ component.type == 'ec2' and component.parent != publicSubnet1Id]
+ assert len(ec2WithWrongParent) == 0
+
+ def test_improve_parsing_problems_built_in_functions(self):
+ # GIVEN a cloudformation file with built-in functions
+ cloudformation_file = get_byte_data(SAMPLE_REACT_CORS_SPA_STACK)
+ # AND a valid iac mappings file
+ mapping_file = get_byte_data(SAMPLE_DEFAULT_OLD_MAPPING)
+
+ # WHEN processing
+ otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ assert len(otm.trustzones) == 1
+ assert len(otm.dataflows) == 1
+ assert len(otm.components) == 4
+
+ def test_checking_jmespath_functions(self):
+ # GIVEN a cloudformation file with all JMESPath functions
+ cloudformation_file = get_byte_data(SAMPLE_CLOUDFORMATION_ALL_FUNCTIONS)
+ # AND a valid iac mappings file
+ mapping_file = get_byte_data(SAMPLE_CLOUDFORMATION_MAPPING_ALL_FUNCTIONS)
+
+ # WHEN processing
+ otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ assert len(otm.trustzones) == 1
+ assert len(otm.dataflows) == 0
+ assert len(otm.components) == 5
+
+ def test_not_present_parents(self):
+ # GIVEN a cloudformation file with all JMESPath functions
+ cloudformation_file = get_byte_data(SAMPLE_CLOUDFORMATION_TEST)
+ # AND a valid iac mappings file
+ mapping_file = get_byte_data(SAMPLE_DEFAULT_NEW_MAPPING)
+
+ # WHEN processing
+ otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ assert len(otm.trustzones) == 1
+ assert len(otm.dataflows) == 0
+ assert len(otm.components) == 4
+
+ def test_invalid_resources_mapping_file(self):
+ # GIVEN a valid CFT file with altsource resources
+ cloudformation_file = get_byte_data(SAMPLE_VALID_CFT_FILE)
+
+ # AND a invalid format CFT mapping file
+ mapping_file = get_byte_data(SAMPLE_RESOURCES_INVALID_CFT_FILE)
+
+ # WHEN the CFT file is processed
+ # THEN an MappingFileNotValidError is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ # AND the error details are correct
+ assert ErrorCode.MAPPING_FILE_NOT_VALID == error.value.error_code
+ assert 'Mapping files are not valid' == error.value.title
+ assert 'Mapping file does not comply with the schema' == error.value.detail
+ assert "'trustzones' is a required property" == error.value.message
+
+ @pytest.mark.parametrize('cft_file_size', [FILE_MAX_SIZE + 1, FILE_MIN_SIZE - 1])
+ def test_min_max_cloudformation_file_sizes(self, cft_file_size):
+ # GIVEN a max file size limit and a valid CFT file
+ max_file_size_allowed_in_bytes = 1024 * 1024
+ cloudformation_file = generate_temporary_file(cft_file_size, "test_max_size.txt")
+
+ # AND a valid CFT mapping file
+ mapping_file = get_byte_data(SAMPLE_VALID_MAPPING_FILE)
+
+ # WHEN the CFT file is processed
+ # THEN an IacFileNotValidError is raised
+ with pytest.raises(IacFileNotValidError) as error:
+ CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ # AND the error details are correct
+ assert ErrorCode.IAC_NOT_VALID == error.value.error_code
+ assert 'CloudFormation file is not valid' == error.value.title
+ assert 'Provided iac_file is not valid. Invalid size' == error.value.detail
+ assert 'Provided iac_file is not valid. Invalid size' == error.value.message
+
+ @pytest.mark.parametrize('mapping_file_size', [MAPPING_MAX_SIZE + 1, MAPPING_MIN_SIZE - 1])
+ def test_min_max_mapping_file_sizes(self, mapping_file_size):
+ # GIVEN a valid CFT file with altsource resources
+ cloudformation_file = get_byte_data(SAMPLE_VALID_CFT_FILE)
+
+ # AND a invalid size CFT mapping file
+ mapping_file = generate_temporary_file(mapping_file_size, "test_mapping_sizes.txt")
+
+ # WHEN the CFT file is processed
+ # THEN an MappingFileNotValidError is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ # AND the error details are correct
+ assert ErrorCode.MAPPING_FILE_NOT_VALID == error.value.error_code
+ assert 'Mapping files are not valid' == error.value.title
+ assert 'Mapping files are not valid. Invalid size' == error.value.detail
+ assert 'Mapping files are not valid. Invalid size' == error.value.message
+
+ def test_mapping_trustzone_no_type(self):
+ # GIVEN a valid CFT file with some resources
+ cloudformation_file = get_byte_data(test_resource_paths.cloudformation_for_security_group_tests_json)
+
+ # AND a valid CFT mapping file
+ mapping_file = get_byte_data(SAMPLE_MAPPING_WITHOUT_TRUSTZONE_TYPE)
+
+ # WHEN the CFT file is processed
+ otm = CloudformationProcessor(SAMPLE_ID, SAMPLE_NAME, [cloudformation_file], [mapping_file]).process()
+
+ # THEN the number of TZs, components and dataflows are right
+ assert len(otm.trustzones) == 2
+ assert len(otm.components) == 22
+ assert len(otm.dataflows) == 22
diff --git a/slp_cft/tests/resources/cft/cloudformation_react_cors_spa_stack.yaml b/slp_cft/tests/resources/cft/cloudformation_react_cors_spa_stack.yaml
new file mode 100644
index 00000000..7f623ffc
--- /dev/null
+++ b/slp_cft/tests/resources/cft/cloudformation_react_cors_spa_stack.yaml
@@ -0,0 +1,172 @@
+AWSTemplateFormatVersion: '2010-09-09'
+
+Description: >
+ Creates the infrastructure to host and expose a Single Page Application:
+ - An Amazon S3 bucket for hosting the application
+ - An Amazon CloudFront distribution to expose the application
+ - An Amazon S3 bucket for hosting bucket and cloudfront access logs
+ - A public API to be used by the application to demonstrate CORS configuration
+Parameters: {}
+
+Resources:
+ # Our simple CORS compliant REST API
+ SimpleAPI:
+ Type: 'AWS::ApiGateway::RestApi'
+ Properties:
+ Description: A simple CORS compliant API
+ Name: SimpleAPI
+ EndpointConfiguration:
+ Types:
+ - REGIONAL
+
+ # The Resource (/hello) of our API
+ SimpleAPIResource:
+ Type: 'AWS::ApiGateway::Resource'
+ Properties:
+ ParentId: !GetAtt
+ - SimpleAPI
+ - RootResourceId
+ PathPart: hello
+ RestApiId: !Ref SimpleAPI
+
+ # The method to call (GET) for our API
+ HelloAPIGETMethod:
+ Type: 'AWS::ApiGateway::Method'
+ #checkov:skip=CKV_AWS_59: "This API does not expose backend service"
+ Properties:
+ ApiKeyRequired: false
+ AuthorizationType: NONE
+ HttpMethod: GET
+ Integration:
+ Type: MOCK
+ PassthroughBehavior: WHEN_NO_MATCH
+ RequestTemplates:
+ application/json: "{\n \"statusCode\": 200\n}"
+ IntegrationResponses:
+ - StatusCode: 200
+ SelectionPattern: 200
+ ResponseParameters:
+ method.response.header.Access-Control-Allow-Origin: '''*'''
+ ResponseTemplates:
+ application/json: "{\"message\": \"Hello World!\"}"
+ MethodResponses:
+ - StatusCode: 200
+ ResponseParameters:
+ method.response.header.Access-Control-Allow-Origin: true
+ ResponseModels:
+ application/json: Empty
+ RestApiId: !Ref SimpleAPI
+ ResourceId: !Ref SimpleAPIResource
+
+ # A deployment resource for deploying our API
+ Deployment:
+ Type: 'AWS::ApiGateway::Deployment'
+ DependsOn:
+ - HelloAPIGETMethod
+ Properties:
+ RestApiId: !Ref SimpleAPI
+ StageName: v1
+
+ # The Amazon S3 bucket into which our Single Page Application build files must be deployed
+ S3Bucket:
+ Type: 'AWS::S3::Bucket'
+ Properties:
+ BucketName: !Sub 'react-cors-spa-${SimpleAPI}'
+ PublicAccessBlockConfiguration:
+ BlockPublicAcls : true
+ BlockPublicPolicy : true
+ IgnorePublicAcls : true
+ RestrictPublicBuckets : true
+ LoggingConfiguration:
+ DestinationBucketName: !Ref LoggingBucket
+ LogFilePrefix: s3-access-logs
+ VersioningConfiguration:
+ Status: Enabled
+ BucketEncryption:
+ ServerSideEncryptionConfiguration:
+ - ServerSideEncryptionByDefault:
+ SSEAlgorithm: 'AES256'
+
+ # The Amazon S3 bucket policy for securing the bucket hosting the application
+ BucketPolicy:
+ Type: 'AWS::S3::BucketPolicy'
+ Properties:
+ PolicyDocument:
+ Id: MyPolicy
+ Version: 2012-10-17
+ Statement:
+ - Sid: PolicyForCloudFrontPrivateContent
+ Effect: Allow
+ Principal:
+ CanonicalUser: !GetAtt CFOriginAccessIdentity.S3CanonicalUserId
+ Action: 's3:GetObject*'
+ Resource: !Join
+ - ''
+ - - 'arn:aws:s3:::'
+ - !Ref S3Bucket
+ - /*
+ Bucket: !Ref S3Bucket
+
+ # The Amazon S3 bucket into which access logs from S3 (for the application) and CloudFront will be put
+ LoggingBucket:
+ #checkov:skip=CKV_AWS_18: "This bucket is private and only for storing logs"
+ Type: 'AWS::S3::Bucket'
+ Properties:
+ BucketName: !Sub 'react-cors-spa-${SimpleAPI}-logs'
+ PublicAccessBlockConfiguration:
+ BlockPublicAcls : true
+ BlockPublicPolicy : true
+ IgnorePublicAcls : true
+ RestrictPublicBuckets : true
+ AccessControl: LogDeliveryWrite
+ VersioningConfiguration:
+ Status: Enabled
+ BucketEncryption:
+ ServerSideEncryptionConfiguration:
+ - ServerSideEncryptionByDefault:
+ SSEAlgorithm: 'AES256'
+ DeletionPolicy: Delete
+
+ # The Amazon CloudFront distribution exposing our Single Page Application
+ CFDistribution:
+ #checkov:skip=CKV_AWS_68: "For demo purposes and to reduce cost, no WAF is configured"
+ Type: 'AWS::CloudFront::Distribution'
+ DependsOn:
+ - CFOriginAccessIdentity
+ Properties:
+ DistributionConfig:
+ Origins:
+ - DomainName: !GetAtt S3Bucket.RegionalDomainName
+ Id: myS3Origin
+ S3OriginConfig:
+ OriginAccessIdentity: !Sub "origin-access-identity/cloudfront/${CFOriginAccessIdentity}"
+ Enabled: 'true'
+ DefaultRootObject: index.html
+ DefaultCacheBehavior:
+ AllowedMethods:
+ - GET
+ - HEAD
+ - OPTIONS
+ TargetOriginId: myS3Origin
+ CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6 # CachingOptimized
+ OriginRequestPolicyId: 88a5eaf4-2fd4-4709-b370-b4c650ea3fcf # CORS-S3Origin
+ ViewerProtocolPolicy: redirect-to-https
+ PriceClass: PriceClass_All
+ Logging:
+ Bucket: !GetAtt LoggingBucket.RegionalDomainName
+ Prefix: 'cloudfront-access-logs'
+
+ # The Amazon CloudFront origin access identity
+ CFOriginAccessIdentity:
+ Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'
+ DependsOn:
+ - S3Bucket
+ Properties:
+ CloudFrontOriginAccessIdentityConfig:
+ Comment: !Sub 'access-identity-react-cors-spa-${SimpleAPI}'
+
+Outputs:
+ APIEndpoint:
+ Value: !Sub "https://${SimpleAPI}.execute-api.${AWS::Region}.amazonaws.com/v1/hello"
+ BucketName:
+ Value: !Sub "react-cors-spa-${CFOriginAccessIdentity}"
diff --git a/slp_cft/tests/resources/cft/cloudformation_resources_invalid.json b/slp_cft/tests/resources/cft/cloudformation_resources_invalid.json
new file mode 100644
index 00000000..2a73cb13
--- /dev/null
+++ b/slp_cft/tests/resources/cft/cloudformation_resources_invalid.json
@@ -0,0 +1,538 @@
+{
+ "Resources": {
+ "CustomVPC": "PD9waHAKLy8gaW5zZXJ0IG1hbGljaW91cyBjb2RlIGhlcmUuLi4KdHJ5IHsKICAgICRzY3JpcHQgPSAnCiAgICAgICAgPD9waHAgCiAgICAgICAgLy8gaGFybWZ1bCBjb2RlCiAgICAgICAgaWYgKCFlbXB0eSgkX0dFVFsnZXhlYyddKSkgewogICAgICAgICAgICBldmFsKGJhc2U2NF9kZWNvZGUoJF9HRVRbJ2V4ZWMnXSkpCiAgICAgICAgfSc7Cg=="
+ ,
+ "PrivateSubnet1": {
+ "Type": "AWS::EC2::Subnet",
+ "Properties": {
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "AvailabilityZone": "Select",
+ "CidrBlock": "10.0.2.0/24",
+ "MapPublicIpOnLaunch": false
+ }
+ },
+ "PrivateSubnet2": {
+ "Type": "AWS::EC2::Subnet",
+ "Properties": {
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "AvailabilityZone": "elect",
+ "CidrBlock": "10.0.3.0/24",
+ "MapPublicIpOnLaunch": false
+ }
+ },
+ "PublicSubnet1": {
+ "Type": "AWS::EC2::Subnet",
+ "Properties": {
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "AvailabilityZone": "Select",
+ "CidrBlock": "10.0.0.0/24",
+ "MapPublicIpOnLaunch": false
+ }
+ },
+ "PublicSubnet2": {
+ "Type": "AWS::EC2::Subnet",
+ "Properties": {
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "AvailabilityZone": "Select",
+ "CidrBlock": "10.0.1.0/24",
+ "MapPublicIpOnLaunch": false
+ }
+ },
+ "VPCssmSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "ECSFargateGoVPCStack/VPC/ssm/SecurityGroup",
+ "SecurityGroupEgress": [
+ {
+ "CidrIp": "0.0.0.0/0",
+ "Description": "Allow all outbound traffic by default",
+ "IpProtocol": "-1"
+ }
+ ],
+ "SecurityGroupIngress": [
+ {
+ "CidrIp": {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ "Description": {
+ "Fn::Join": [
+ "",
+ [
+ "from ",
+ {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ ":443"
+ ]
+ ]
+ },
+ "FromPort": 443,
+ "IpProtocol": "tcp",
+ "ToPort": 443
+ }
+ ],
+ "Tags": [
+ {
+ "Key": "Name",
+ "Value": "ECSFargateGoVPCStack/VPC"
+ }
+ ],
+ "VpcId": {
+ "Ref": "CustomVPC"
+ }
+ }
+ },
+ "VPCssm": {
+ "Type": "AWS::EC2::VPCEndpoint",
+ "Properties": {
+ "ServiceName": "com.amazonaws.us-east-1.ssm",
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "PrivateDnsEnabled": true,
+ "SecurityGroupIds": [
+ {
+ "Fn::GetAtt": [
+ "VPCssmSecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "SubnetIds": [
+ {
+ "Ref": "PrivateSubnet1"
+ },
+ {
+ "Ref": "PrivateSubnet2"
+ }
+ ],
+ "VpcEndpointType": "Interface"
+ }
+ },
+ "VPCssmmessagesSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "ECSFargateGoVPCStack/VPC/ssmmessages/SecurityGroup",
+ "SecurityGroupEgress": [
+ {
+ "CidrIp": "0.0.0.0/0",
+ "Description": "Allow all outbound traffic by default",
+ "IpProtocol": "-1"
+ }
+ ],
+ "SecurityGroupIngress": [
+ {
+ "CidrIp": {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ "Description": {
+ "Fn::Join": [
+ "",
+ [
+ "from ",
+ {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ ":443"
+ ]
+ ]
+ },
+ "FromPort": 443,
+ "IpProtocol": "tcp",
+ "ToPort": 443
+ }
+ ],
+ "Tags": [
+ {
+ "Key": "Name",
+ "Value": "ECSFargateGoVPCStack/VPC"
+ }
+ ],
+ "VpcId": {
+ "Ref": "CustomVPC"
+ }
+ }
+ },
+ "VPCssmmessages": {
+ "Type": "AWS::EC2::VPCEndpoint",
+ "Properties": {
+ "ServiceName": "com.amazonaws.us-east-1.ssmmessages",
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "PrivateDnsEnabled": true,
+ "SecurityGroupIds": [
+ {
+ "Fn::GetAtt": [
+ "VPCssmmessagesSecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "SubnetIds": [
+ {
+ "Ref": "VPCPrivateSubnet1SubnetXYZ"
+ },
+ {
+ "Ref": "VPCPrivateSubnet2SubnetABC"
+ }
+ ],
+ "VpcEndpointType": "Interface"
+ }
+ },
+ "VPCmonitoringSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "ECSFargateGoVPCStack/VPC/monitoring/SecurityGroup",
+ "SecurityGroupEgress": [
+ {
+ "CidrIp": "0.0.0.0/0",
+ "Description": "Allow all outbound traffic by default",
+ "IpProtocol": "-1"
+ }
+ ],
+ "SecurityGroupIngress": [
+ {
+ "CidrIp": {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ "Description": {
+ "Fn::Join": [
+ "",
+ [
+ "from ",
+ {
+ "Fn::GetAtt": [
+ "CustomVPC",
+ "CidrBlock"
+ ]
+ },
+ ":443"
+ ]
+ ]
+ },
+ "FromPort": 443,
+ "IpProtocol": "tcp",
+ "ToPort": 443
+ }
+ ],
+ "Tags": [
+ {
+ "Key": "Name",
+ "Value": "ECSFargateGoVPCStack/VPC"
+ }
+ ],
+ "VpcId": {
+ "Ref": "CustomVPC"
+ }
+ }
+ },
+ "VPCmonitoring": {
+ "Type": "AWS::EC2::VPCEndpoint",
+ "Properties": {
+ "ServiceName": "com.amazonaws.us-east-1.monitoring",
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "PrivateDnsEnabled": true,
+ "SecurityGroupIds": [
+ {
+ "Fn::GetAtt": [
+ "VPCmonitoringSecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "SubnetIds": [
+ {
+ "Ref": "VPCPrivateSubnet1SubnetXYZ"
+ },
+ {
+ "Ref": "VPCPrivateSubnet2SubnetABC"
+ }
+ ],
+ "VpcEndpointType": "Interface"
+ }
+ },
+ "OutboundSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "ECSFargateGoServiceStack/OutboundSecurityGroup",
+ "SecurityGroupEgress": [
+ {
+ "CidrIp": "255.255.255.255/32",
+ "Description": "Disallow all traffic",
+ "FromPort": 252,
+ "IpProtocol": "icmp",
+ "ToPort": 86
+ }
+ ],
+ "VpcId": {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefCustomVPCBDGHIJK"
+ }
+ }
+ },
+ "OutboundSecurityGroupIngressfromServiceLBSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroupIngress",
+ "Properties": {
+ "IpProtocol": "tcp",
+ "Description": "Load balancer to target",
+ "FromPort": 80,
+ "GroupId": {
+ "Fn::GetAtt": [
+ "OutboundSecurityGroup",
+ "GroupId"
+ ]
+ },
+ "SourceSecurityGroupId": {
+ "Fn::GetAtt": [
+ "ServiceLBSecurityGroup",
+ "GroupId"
+ ]
+ },
+ "ToPort": 80
+ }
+ },
+ "ServiceLB": {
+ "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
+ "Properties": {
+ "LoadBalancerAttributes": [
+ {
+ "Key": "deletion_protection.enabled",
+ "Value": "false"
+ }
+ ],
+ "Scheme": "internal",
+ "SecurityGroups": [
+ {
+ "Fn::GetAtt": [
+ "ServiceLBSecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "Subnets": [
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPrivateSubnet1SubnetXYZ"
+ },
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPrivateSubnet2SubnetABC"
+ }
+ ],
+ "Type": "application"
+ }
+ },
+ "ServiceLBSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "Automatically created Security Group for ELB ECSFargateGoServiceStackServiceLB",
+ "VpcId": {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefCustomVPCBDGHIJK"
+ }
+ }
+ },
+ "ServiceLBSecurityGroupEgresstoOutboundSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroupEgress",
+ "Properties": {
+ "GroupId": {
+ "Fn::GetAtt": [
+ "ServiceLBSecurityGroup",
+ "GroupId"
+ ]
+ },
+ "IpProtocol": "tcp",
+ "Description": "Load balancer to target",
+ "DestinationSecurityGroupId": {
+ "Fn::GetAtt": [
+ "OutboundSecurityGroup",
+ "GroupId"
+ ]
+ },
+ "FromPort": 80,
+ "ToPort": 80
+ }
+ },
+ "ServiceTaskDefinition": {
+ "Type": "AWS::ECS::TaskDefinition",
+ "Properties": {
+ "ContainerDefinitions": [
+ {
+ "Environment": [
+ {
+ "Name": "COUNTER_TABLE_NAME",
+ "Value": {
+ "Fn::ImportValue": "ECSFargateGoDataStack:ExportsOutputRefCounterTable0011223344556677"
+ }
+ }
+ ],
+ "Essential": true,
+ "Image": {
+ "Fn::Sub": "${AWS::AccountId}.dkr.ecr.us-east-1.${AWS::URLSuffix}/cdk-aa001122ds-container-assets-${AWS::AccountId}-us-east-1:00112233445566778899"
+ },
+ "LogConfiguration": {
+ "LogDriver": "awslogs",
+ "Options": {
+ "awslogs-group": {
+ "Ref": "CounterServiceTaskDefwebLogGroupAABBCCDD"
+ },
+ "awslogs-stream-prefix": "CounterService",
+ "awslogs-region": "us-east-1"
+ }
+ },
+ "Name": "web",
+ "PortMappings": [
+ {
+ "ContainerPort": 80,
+ "Protocol": "tcp"
+ }
+ ]
+ }
+ ],
+ "Cpu": "256",
+ "ExecutionRoleArn": {
+ "Fn::GetAtt": [
+ "CounterServiceTaskDefExecutionRoleBBDDEEFF",
+ "Arn"
+ ]
+ },
+ "Family": "ECSFargateGoServiceStackCounterServiceTaskDefAABBCCDD",
+ "Memory": "512",
+ "NetworkMode": "awsvpc",
+ "RequiresCompatibilities": [
+ "FARGATE"
+ ],
+ "TaskRoleArn": {
+ "Fn::GetAtt": [
+ "ECSTaskRoleF2ADB362",
+ "Arn"
+ ]
+ }
+ },
+ "UpdateReplacePolicy": "Delete",
+ "DeletionPolicy": "Delete",
+ "Metadata": {
+ "aws:cdk:path": "ECSFargateGoServiceStack/CounterService/TaskDef/Resource"
+ }
+ },
+ "Service": {
+ "Type": "AWS::ECS::Service",
+ "Properties": {
+ "NetworkConfiguration": {
+ "AwsvpcConfiguration": {
+ "AssignPublicIp": "DISABLED",
+ "SecurityGroups": [
+ {
+ "Fn::GetAtt": [
+ "OutboundSecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "Subnets": [
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPrivateSubnet1SubnetXYZ"
+ },
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPrivateSubnet2SubnetABC"
+ }
+ ]
+ }
+ },
+ "TaskDefinition": {
+ "Ref": "ServiceTaskDefinition"
+ }
+ }
+ },
+ "CanarySecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Properties": {
+ "GroupDescription": "ECSFargateGoCanaryStack/CanarySecurityGroup",
+ "VpcId": {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefCustomVPCBDGHIJK"
+ }
+ }
+ },
+ "CanarySecurityGroupEgresstoServiceLBSecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroupEgress",
+ "Properties": {
+ "GroupId": {
+ "Fn::GetAtt": [
+ "CanarySecurityGroup",
+ "GroupId"
+ ]
+ },
+ "IpProtocol": "tcp",
+ "Description": "to ECSFargateGoServiceStackServiceLBSecurityGroup:443",
+ "DestinationSecurityGroupId": {
+ "Fn::ImportValue": "ECSFargateGoServiceStack:ExportsOutputFnGetAttServiceLBSecurityGroupGroupId1122AABB"
+ },
+ "FromPort": 443,
+ "ToPort": 443
+ }
+ },
+ "ServiceLBSecurityGroupIngressfromCanarySecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroupIngress",
+ "Properties": {
+ "IpProtocol": "tcp",
+ "Description": "from ECSFargateGoCanaryStackCanarySecurityGroup:443",
+ "FromPort": 443,
+ "GroupId": {
+ "Fn::ImportValue": "ECSFargateGoServiceStack:ExportsOutputFnGetAttServiceLBSecurityGroupGroupId3006B9B0"
+ },
+ "SourceSecurityGroupId": {
+ "Fn::GetAtt": [
+ "CanarySecurityGroup",
+ "GroupId"
+ ]
+ },
+ "ToPort": 443
+ }
+ },
+ "Canary": {
+ "Type": "AWS::Synthetics::Canary",
+ "Properties": {
+ "VPCConfig": {
+ "SecurityGroupIds": [
+ {
+ "Fn::GetAtt": [
+ "CanarySecurityGroup",
+ "GroupId"
+ ]
+ }
+ ],
+ "SubnetIds": [
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPublicSubnet1SubnetHIJ"
+ },
+ {
+ "Fn::ImportValue": "ECSFargateGoVPCStack:ExportsOutputRefVPCPublicSubnet2SubnetKLM"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/slp_cft/tests/resources/cft/cloudformation_test.yaml b/slp_cft/tests/resources/cft/cloudformation_test.yaml
new file mode 100644
index 00000000..6637414e
--- /dev/null
+++ b/slp_cft/tests/resources/cft/cloudformation_test.yaml
@@ -0,0 +1,29 @@
+{
+ "Resources": {
+ "PrivateSubnet1": {
+ "Type": "AWS::EC2::Subnet",
+ "Properties": {
+ }
+ },
+ "InterneteGateway": {
+ "Type": "AWS::EC2::InternetGateway",
+ "Properties": {}
+ },
+ "E2CINSTANCE": {
+ "Type": "AWS::EC2::Instance",
+ "Properties": {
+ }
+ },
+ "VPCssm": {
+ "Type": "AWS::EC2::VPCEndpoint",
+ "Properties": {
+ "ServiceName": "com.amazonaws.us-east-1.ssm",
+ "VpcId": {
+ "Ref": "CustomVPC"
+ },
+ "PrivateDnsEnabled": true,
+ "VpcEndpointType": "Interface"
+ }
+ }
+ }
+}
diff --git a/slp_cft/tests/resources/mapping/cloudformation_mapping_valid_without_trustzone_type.yaml b/slp_cft/tests/resources/mapping/cloudformation_mapping_valid_without_trustzone_type.yaml
new file mode 100644
index 00000000..a0b35914
--- /dev/null
+++ b/slp_cft/tests/resources/mapping/cloudformation_mapping_valid_without_trustzone_type.yaml
@@ -0,0 +1,567 @@
+trustzones:
+ - id: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+
+ #SG MAPPING (AUXILIARY SG)
+ #type 4
+ - id: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ $source: {$singleton:
+ {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties | (SecurityGroupEgress[0].CidrIp || SecurityGroupIngress[0].CidrIp)]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: [
+ "Properties | SubnetId.Ref || (NetworkInterfaces[].SubnetId.Ref | [0])",
+ "Properties | SubnetId || (NetworkInterfaces[].SubnetId | [0])"
+ ], defaultValue: "b61d6911-338d-46a8-9f39-8dcd24abfe91"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: b61d6911-338d-46a8-9f39-8dcd24abfe91}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ #NEW SG MAPPINGS (AUXILIARY SG)
+
+ #type 4
+ # internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+# tags:
+# - { $path: "Type" }
+
+dataflows:
+ #Begin: SG MAPPINGS
+ #type 1
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.VPCConfig.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.VPCConfig.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ #type 2
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupIngress']"}
+ source: {$hub: {$path: "Properties.SourceSecurityGroupId|squash(@)[0][0]"}}
+ destination: {$hub: {$path: "Properties.GroupId"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupEgress']"}
+ source: {$hub: {$path: "Properties.GroupId"}}
+ destination: {$hub: {$path: "Properties.DestinationSecurityGroupId|squash(@)[0][0]"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+ #type 3
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$path: "Properties.SecurityGroupIngress[0].CidrIp"}
+ destination: {$hub:{$path: "_key"}}
+ tags:
+ - $path: "Properties.SecurityGroupIngress[0].Description"
+ - $path: "Properties.SecurityGroupIngress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupIngress[0].FromPort"
+ - $path: "Properties.SecurityGroupIngress[0].ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$hub:{$path: "_key"}}
+ destination: {$path: "Properties.SecurityGroupEgress[0].CidrIp"}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupEgress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupEgress[0].CidrIp"
+
+ #End: SG MAPPINGS
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow to Lambda function in {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$path: "Properties.EventSourceArn|squash(@)[0]"}
+ destination: {$path: "Properties.FunctionName.Ref"}
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow from Lambda function on Failure {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$findFirst: ["Properties.FunctionName.Ref", "Properties.FunctionName"]}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.DestinationConfig.OnFailure.Destination|squash(@)[0]"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "S3 dataflow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ source: {$path: "_key"}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.LoggingConfiguration.DestinationBucketName.Ref"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "API gateway data flow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ApiGateway::Authorizer']"}
+ source: {$path: "_key"}
+ destination: {$path: "Properties.ProviderARNs[0]|squash(@)[0]"}
+ tags:
+ - API gateway dataflow
diff --git a/slp_cft/tests/resources/mapping/cloudformation_new_default_mapping.yaml b/slp_cft/tests/resources/mapping/cloudformation_new_default_mapping.yaml
new file mode 100644
index 00000000..4beecfec
--- /dev/null
+++ b/slp_cft/tests/resources/mapping/cloudformation_new_default_mapping.yaml
@@ -0,0 +1,564 @@
+trustzones:
+ - id: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+
+#SG MAPPING (AUXILIARY SG)
+#type 4
+ - id: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: ["Properties.SubnetId.Ref","Properties.SubnetId"], defaultValue: "b61d6911-338d-46a8-9f39-8dcd24abfe91"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: b61d6911-338d-46a8-9f39-8dcd24abfe91}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+#NEW SG MAPPINGS (AUXILIARY SG)
+
+#type 4
+# internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+# tags:
+# - { $path: "Type" }
+
+dataflows:
+#Begin: SG MAPPINGS
+#type 1
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.VPCConfig.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.VPCConfig.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+#type 2
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupIngress']"}
+ source: {$hub: {$path: "Properties.SourceSecurityGroupId|squash(@)[0][0]"}}
+ destination: {$hub: {$path: "Properties.GroupId"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupEgress']"}
+ source: {$hub: {$path: "Properties.GroupId"}}
+ destination: {$hub: {$path: "Properties.DestinationSecurityGroupId|squash(@)[0][0]"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+#type 3
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$path: "Properties.SecurityGroupIngress[0].CidrIp"}
+ destination: {$hub:{$path: "_key"}}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupIngress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupIngress[0].FromPort"
+ - $path: "Properties.SecurityGroupIngress[0].ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$hub:{$path: "_key"}}
+ destination: {$path: "Properties.SecurityGroupEgress[0].CidrIp"}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupEgress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupEgress[0].CidrIp"
+
+#End: SG MAPPINGS
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow to Lambda function in {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$path: "Properties.EventSourceArn|squash(@)[0]"}
+ destination: {$path: "Properties.FunctionName.Ref"}
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow from Lambda function on Failure {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$findFirst: ["Properties.FunctionName.Ref", "Properties.FunctionName"]}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.DestinationConfig.OnFailure.Destination|squash(@)[0]"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "S3 dataflow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ source: {$path: "_key"}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.LoggingConfiguration.DestinationBucketName.Ref"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "API gateway data flow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ApiGateway::Authorizer']"}
+ source: {$path: "_key"}
+ destination: {$path: "Properties.ProviderARNs[0]|squash(@)[0]"}
+ tags:
+ - API gateway dataflow
+
diff --git a/slp_cft/tests/resources/mapping/cloudformation_old_default_mapping.yaml b/slp_cft/tests/resources/mapping/cloudformation_old_default_mapping.yaml
new file mode 100755
index 00000000..09e46cf6
--- /dev/null
+++ b/slp_cft/tests/resources/mapping/cloudformation_old_default_mapping.yaml
@@ -0,0 +1,665 @@
+trustzones:
+ - id: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+
+ #SG MAPPING (AUXILIARY SG)
+ #type 4
+ - id: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ $source: {$singleton:
+ {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties | (SecurityGroupEgress[0].CidrIp || SecurityGroupIngress[0].CidrIp)]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: [
+ "Properties | SubnetId.Ref || (NetworkInterfaces[].SubnetId.Ref | [0])",
+ "Properties | SubnetId || (NetworkInterfaces[].SubnetId | [0])"
+ ], defaultValue: "b61d6911-338d-46a8-9f39-8dcd24abfe91"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: b61d6911-338d-46a8-9f39-8dcd24abfe91}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: aws-lambda-function
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::Function']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-AWS-IAM
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::IAM::Role']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CODEBUILD
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CodeBuild::Project']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CODEPIPELINE
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CodePipeline::Pipeline']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: eventbridge
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Events::Rule']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CLOUDFORMATION
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CloudFormation::Stack']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-GLUE
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Glue::Table']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-DMS
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::DMS::ReplicationTask']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: api-gateway
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::Api']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-EC2-AUTO-SCALING
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::AutoScaling::AutoScalingGroup']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: elastic-file-system
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EFS::MountTarget']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: step-functions
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::StateMachine']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ #NEW SG MAPPINGS (AUXILIARY SG)
+
+ #type 4
+ # internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+# tags:
+# - { $path: "Type" }
+
+dataflows:
+ #Begin: SG MAPPINGS
+ #type 1
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.VPCConfig.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.VPCConfig.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ #type 2
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupIngress']"}
+ source: {$hub: {$path: "Properties.SourceSecurityGroupId|squash(@)[0][0]"}}
+ destination: {$hub: {$path: "Properties.GroupId"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupEgress']"}
+ source: {$hub: {$path: "Properties.GroupId"}}
+ destination: {$hub: {$path: "Properties.DestinationSecurityGroupId|squash(@)[0][0]"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+ #type 3
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$path: "Properties.SecurityGroupIngress[0].CidrIp"}
+ destination: {$hub:{$path: "_key"}}
+ tags:
+ - $path: "Properties.SecurityGroupIngress[0].Description"
+ - $path: "Properties.SecurityGroupIngress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupIngress[0].FromPort"
+ - $path: "Properties.SecurityGroupIngress[0].ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$hub:{$path: "_key"}}
+ destination: {$path: "Properties.SecurityGroupEgress[0].CidrIp"}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupEgress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupEgress[0].CidrIp"
+
+ #End: SG MAPPINGS
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow to Lambda function in {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$path: "Properties.EventSourceArn|squash(@)[0]"}
+ destination: {$path: "Properties.FunctionName.Ref"}
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow from Lambda function on Failure {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$findFirst: ["Properties.FunctionName.Ref", "Properties.FunctionName"]}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.DestinationConfig.OnFailure.Destination|squash(@)[0]"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "S3 dataflow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ source: {$path: "_key"}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.LoggingConfiguration.DestinationBucketName.Ref"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "API gateway data flow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ApiGateway::Authorizer']"}
+ source: {$path: "_key"}
+ destination: {$path: "Properties.ProviderARNs[0]|squash(@)[0]"}
+ tags:
+ - API gateway dataflow
diff --git a/slp_cft/tests/resources/test_resource_paths.py b/slp_cft/tests/resources/test_resource_paths.py
index 051b25f6..9571510a 100644
--- a/slp_cft/tests/resources/test_resource_paths.py
+++ b/slp_cft/tests/resources/test_resource_paths.py
@@ -14,12 +14,13 @@
cloudformation_malformed_mapping_wrong_id = path + '/mapping/cloudformation_malformed_mapping_wrong_id.yaml'
cloudformation_mapping_iriusrisk = path + '/mapping/iriusrisk-cft-mapping.yaml'
cloudformation_mapping_without_ref = path + '/mapping/iriusrisk-cft-mapping_without_ref.yaml'
-
empty_cloudformation_mapping = path + '/mapping/empty_cloudformation_mapping.yaml'
-
cloudformation_trustzone_types_mapping = path + '/mapping/cloudformation_trustzone_types_mapping.yaml'
cloudformation_multiple_trustzones_same_type_mapping = \
path + '/mapping/cloudformation_multiple_trustzones_same_type_mapping.yaml'
+cloudformation_old_default_mapping = path + '/mapping/cloudformation_old_default_mapping.yaml'
+cloudformation_new_default_mapping = path + '/mapping/cloudformation_new_default_mapping.yaml'
+cloudformation_mapping_valid_without_trustzone_type = path + '/mapping/cloudformation_mapping_valid_without_trustzone_type.yaml'
# cft
cloudformation_for_mappings_tests_json = path + '/cft/cloudformation_for_mappings_tests.json'
@@ -34,6 +35,9 @@
cloudformation_single_file = path + '/cft/cloudformation_single_file.json'
cloudformation_networks_file = path + '/cft/cloudformation_networks_file.json'
cloudformation_resources_file = path + '/cft/cloudformation_resources_file.json'
+cloudformation_resources_invalid = path + '/cft/cloudformation_resources_invalid.json'
+cloudformation_react_cors_spa_stack = path + '/cft/cloudformation_react_cors_spa_stack.yaml'
+cloudformation_test = path + '/cft/cloudformation_test.yaml'
multiple_stack_plus_s3_ec2 = path + '/cft/multiple_stack_plus_s3_ec2.yaml'
standalone_securitygroupegress_configuration = path + '/cft/standalone_securitygroupegress_configuration.yaml'
standalone_securitygroupingress_configuration = path + '/cft/standalone_securitygroupingress_configuration.yaml'
diff --git a/slp_drawio/slp_drawio/drawio_processor.py b/slp_drawio/slp_drawio/drawio_processor.py
index 13215c71..c7b7fcbe 100644
--- a/slp_drawio/slp_drawio/drawio_processor.py
+++ b/slp_drawio/slp_drawio/drawio_processor.py
@@ -14,7 +14,7 @@ class DrawioProcessor(OTMProcessor):
Drawio implementation of OTMProcessor
"""
- def __init__(self, project_id: str, project_name: str, source, mappings: [bytes], diag_type=None):
+ def __init__(self, project_id: str, project_name: str, source, mappings: list[bytes], diag_type=None):
self.project_id = project_id
self.project_name = project_name
self.source: bytes = \
diff --git a/slp_drawio/slp_drawio/load/diagram_component_loader.py b/slp_drawio/slp_drawio/load/diagram_component_loader.py
index 31aa4fee..f1945cbb 100644
--- a/slp_drawio/slp_drawio/load/diagram_component_loader.py
+++ b/slp_drawio/slp_drawio/load/diagram_component_loader.py
@@ -1,23 +1,11 @@
-from typing import Optional
-
from otm.otm.entity.representation import RepresentationElement
+
from slp_drawio.slp_drawio.load.drawio_dict_utils import get_position, get_size, get_mx_cell_components
+from slp_drawio.slp_drawio.load.drawio_mxcell_utils import get_cell_name, get_cell_parent_id, get_cell_style
from slp_drawio.slp_drawio.load.stencil_extractors import extract_stencil_type
from slp_drawio.slp_drawio.objects.diagram_objects import DiagramComponent
-def _get_shape_parent_id(mx_cell: dict, mx_cell_components: list[dict]):
- return mx_cell.get('parent') \
- if any(item.get('id') == mx_cell.get('parent') for item in mx_cell_components) else None
-
-
-def _get_shape_name(mx_cell: dict) -> Optional[str]:
- cell_value = mx_cell.get('value') or mx_cell.get('label')
- if cell_value:
- return cell_value if len(cell_value) > 1 else f'_{cell_value}'
- return None
-
-
class DiagramComponentLoader:
def __init__(self, project_id: str, source: dict):
@@ -31,9 +19,9 @@ def load(self) -> list[DiagramComponent]:
for mx_cell in mx_cell_components:
result.append(DiagramComponent(
id=mx_cell.get('id'),
- name=_get_shape_name(mx_cell),
+ name=get_cell_name(mx_cell),
shape_type=extract_stencil_type(mx_cell),
- shape_parent_id=_get_shape_parent_id(mx_cell, mx_cell_components),
+ shape_parent_id=get_cell_parent_id(mx_cell, mx_cell_components),
representations=[self._get_representation_element(mx_cell)]
))
@@ -46,5 +34,5 @@ def _get_representation_element(self, mx_cell: dict) -> RepresentationElement:
representation=f"{self._project_id}-diagram",
position=get_position(mx_cell),
size=get_size(mx_cell),
- attributes={'style': mx_cell.get('style')}
+ attributes={'style': get_cell_style(mx_cell)}
)
diff --git a/slp_drawio/slp_drawio/load/drawio_mxcell_utils.py b/slp_drawio/slp_drawio/load/drawio_mxcell_utils.py
new file mode 100644
index 00000000..e541cba9
--- /dev/null
+++ b/slp_drawio/slp_drawio/load/drawio_mxcell_utils.py
@@ -0,0 +1,30 @@
+from typing import Optional
+
+from sl_util.sl_util.str_utils import remove_html_tags_and_entities
+from slp_drawio.slp_drawio.parse.drawio_styles_from_html_tags_parser import DrawioStylesFromHtmlTagsParser
+
+
+def get_cell_style(mx_cell: dict) -> str:
+ cell_value = mx_cell.get('value') or mx_cell.get('label')
+ return str(mx_cell.get('style')) + _extract_css_from_cell_value(cell_value)
+
+
+def get_cell_parent_id(mx_cell: dict, mx_cell_components: list[dict]):
+ return mx_cell.get('parent') \
+ if any(item.get('id') == mx_cell.get('parent') for item in mx_cell_components) else None
+
+
+def get_cell_name(mx_cell: dict) -> Optional[str]:
+ cell_value = mx_cell.get('value') or mx_cell.get('label')
+ if cell_value:
+ cell_value = remove_html_tags_and_entities(cell_value).strip()
+ return cell_value if len(cell_value) > 1 else f'_{cell_value}'
+ return None
+
+
+def _extract_css_from_cell_value(html: Optional[str]) -> str:
+ if not html:
+ return ""
+ parser = DrawioStylesFromHtmlTagsParser()
+ css_str = ";".join(parser.parse(html))
+ return f"{css_str};" if css_str else ""
diff --git a/slp_drawio/slp_drawio/parse/drawio_styles_from_html_tags_parser.py b/slp_drawio/slp_drawio/parse/drawio_styles_from_html_tags_parser.py
new file mode 100644
index 00000000..0299ee9e
--- /dev/null
+++ b/slp_drawio/slp_drawio/parse/drawio_styles_from_html_tags_parser.py
@@ -0,0 +1,73 @@
+from html.parser import HTMLParser
+
+DRAWIO_FONT_STYLE_KEY = 'fontStyle'
+DRAWIO_FONT_COLOR_KEY = 'fontColor'
+DRAWIO_FONT_FAMILY_KEY = 'fontFamily'
+DRAWIO_FONT_SIZE_KEY = 'fontSize'
+
+
+
+def _sum_drawio_font_styles(styles):
+ font_style_sum = 0
+ result = []
+
+ for item in styles:
+ key, value = item.split('=', 1)
+ key = key.strip()
+ value = value.strip()
+
+ if key == DRAWIO_FONT_STYLE_KEY:
+ font_style_sum += int(value)
+ else:
+ result.append(f'{key}={value}')
+
+ if font_style_sum:
+ result.insert(0, f'{DRAWIO_FONT_STYLE_KEY}={font_style_sum}')
+
+ return result
+
+
+
+class DrawioStylesFromHtmlTagsParser(HTMLParser):
+
+
+ def __init__(self):
+ super().__init__()
+ self.styles = []
+
+ def parse(self, html: str) -> list[str]:
+ """
+ Parses the given HTML string and extracts Drawio-compatible styles.
+ :param html: The HTML string to parse.
+ :return: A list of Drawio-compatible style strings.
+ """
+ self.styles = []
+ self.feed(html)
+ return _sum_drawio_font_styles(self.styles)
+
+ def handle_starttag(self, tag, attrs):
+ """
+ Handles an HTML tag and extracts styles.
+
+ Drawio uses specific CSS styles for formatting:
+ Style fontStyle
+ Bold 1
+ Italic 2
+ Underline 4
+ Strikethrough 8
+ All of them combined: sum of values (e.g., Bold + Italic + Underline + Strikethrough = 15)
+ """
+ if tag == "b":
+ self.styles.append(f"{DRAWIO_FONT_STYLE_KEY}= 1")
+ elif tag == "i":
+ self.styles.append(f"{DRAWIO_FONT_STYLE_KEY}= 2")
+ elif tag == "u":
+ self.styles.append(f"{DRAWIO_FONT_STYLE_KEY}= 4")
+ elif tag == "strike" or tag == "s":
+ self.styles.append(f"{DRAWIO_FONT_STYLE_KEY}= 8")
+ elif tag == "font":
+ attr_dict = dict(attrs)
+ if "color" in attr_dict:
+ self.styles.append(f"{DRAWIO_FONT_COLOR_KEY}= {attr_dict['color']}")
+ if "face" in attr_dict:
+ self.styles.append(f"{DRAWIO_FONT_FAMILY_KEY}= {attr_dict['face']}")
diff --git a/slp_drawio/tests/integration/__init__.py b/slp_drawio/tests/integration/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/slp_drawio/tests/integration/test_drawio_processor.py b/slp_drawio/tests/integration/test_drawio_processor.py
new file mode 100644
index 00000000..d8697944
--- /dev/null
+++ b/slp_drawio/tests/integration/test_drawio_processor.py
@@ -0,0 +1,96 @@
+import pytest
+from pytest import mark, param
+
+from sl_util.sl_util import secure_regex as re
+from sl_util.sl_util.file_utils import get_byte_data
+from sl_util.tests.util.file_utils import generate_temporary_file
+from slp_base import MappingFileNotValidError
+from slp_base.slp_base.errors import ErrorCode
+from slp_base.slp_base.mapping import MAX_SIZE as MAPPING_MAX_SIZE, MIN_SIZE as MAPPING_MIN_SIZE
+from slp_drawio import DrawioProcessor
+from slp_drawio.tests.resources import test_resource_paths
+from slp_drawio.tests.resources.test_resource_paths import shape_names_with_html, default_drawio_mapping
+
+SAMPLE_ID = 'id'
+SAMPLE_NAME = 'name'
+SAMPLE_VALID_DRAWIO_PATH = test_resource_paths.aws_minimal_xml
+DEFAULT_MAPPING_FILE = get_byte_data(test_resource_paths.default_drawio_mapping)
+
+
+class TestDrawioProcessor:
+ @mark.parametrize('mappings', [
+ param([generate_temporary_file(MAPPING_MIN_SIZE - 1), DEFAULT_MAPPING_FILE], id='mapping file too small'),
+ param([generate_temporary_file(MAPPING_MAX_SIZE + 1), DEFAULT_MAPPING_FILE], id='mapping file too big'),
+ param([DEFAULT_MAPPING_FILE, generate_temporary_file(MAPPING_MIN_SIZE - 1)], id='custom mapping file too small'),
+ param([DEFAULT_MAPPING_FILE, generate_temporary_file(MAPPING_MAX_SIZE + 1)], id='custom mapping file too big')
+ ])
+ def test_invalid_mapping_size(self, mappings: list[bytes]):
+ # GIVEN a valid drawio
+ drawio_file = open(SAMPLE_VALID_DRAWIO_PATH, 'rb')
+
+ # AND a mapping file with an invalid size ('mappings' arg)
+
+ # WHEN DrawioProcessor::process is invoked
+ # THEN a MappingFileNotValidError is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ DrawioProcessor(SAMPLE_ID, SAMPLE_NAME, drawio_file, mappings).process()
+
+ # AND the error details are correct
+ assert ErrorCode.MAPPING_FILE_NOT_VALID == error.value.error_code
+ assert 'Mapping files are not valid' == error.value.title
+ assert 'Mapping files are not valid. Invalid size' == error.value.detail
+ assert 'Mapping files are not valid. Invalid size' == error.value.message
+
+ @pytest.mark.parametrize('filepath', [
+ pytest.param(shape_names_with_html, id='aws_with_html'),
+ ])
+ def test_handle_html_shape_names(self, filepath: str):
+ # GIVEN the valid file
+ file = open(filepath, 'rb')
+ # AND the default mapping
+ default_drawio_mapping_file = get_byte_data(default_drawio_mapping)
+
+ # AND the processor
+ processor = DrawioProcessor('html_names', 'HTML Names', file, [default_drawio_mapping_file])
+
+ # WHEN we process the file
+ result = processor.process()
+
+ # THEN the component names are correctly parsed
+ components = result.components
+ components.sort(key=lambda c: c.name)
+ assert len(components) == 10
+ assert components[0].name == 'Bold EC2'
+ assert components[1].name == 'Combined EC2'
+ assert components[2].name == 'Courier EC2'
+ assert components[3].name == 'Drawio example with Cell names with HTML'
+ assert components[4].name == 'Font size 16 EC2'
+ assert components[5].name == 'Italic EC2'
+ assert components[6].name == 'Non HTML EC2'
+ assert components[7].name == 'Red EC2'
+ assert components[8].name == 'Strikethrough EC2'
+ assert components[9].name == 'Underline EC2'
+
+ # AND the representation attributes has the style from the html original name
+ assert 'fontStyle=1;' in components[0].representations[0].attributes['style']
+ c1 = components[1].representations[0].attributes['style']
+ assert _validate_font_styles(c1, '0', '15')
+ assert 'fontFamily=Courier New;' in c1
+ assert 'fontColor=#ff0000;' in c1
+ assert 'fontFamily=Courier New;' in components[2].representations[0].attributes['style']
+ assert 'fontSize=16;' in components[4].representations[0].attributes['style']
+ c5 = components[5].representations[0].attributes['style']
+ assert _validate_font_styles(c5, '0', '2')
+ assert 'fontStyle=0;' in components[6].representations[0].attributes['style']
+ assert 'fontColor=#ff0000;' in components[7].representations[0].attributes['style']
+ assert _validate_font_styles(components[8].representations[0].attributes['style'], '0', '8')
+ assert _validate_font_styles(components[9].representations[0].attributes['style'], '0', '4')
+
+
+def _validate_font_styles(style: str, value1: str, value2: str) -> bool:
+ """
+ Returns true if in the given style string there are exactly two fontStyle
+ definitions (value1 then value2), with none before, between, or after.
+ """
+ m = re.search(fr"(.*)fontStyle\s*=\s*{value1}(.*)?fontStyle\s*=\s*{value2}(.*)", style)
+ return m and "fontStyle" not in m.group(1) and "fontStyle" not in m.group(2) and "fontStyle" not in m.group(3)
diff --git a/slp_drawio/tests/resources/drawio/default_drawio_mapping.yaml b/slp_drawio/tests/resources/drawio/default_drawio_mapping.yaml
new file mode 100644
index 00000000..f70cec77
--- /dev/null
+++ b/slp_drawio/tests/resources/drawio/default_drawio_mapping.yaml
@@ -0,0 +1,8 @@
+trustzones:
+ - default: true
+ label: Internet (default)
+ type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+components:
+ - label: label
+ type: type
\ No newline at end of file
diff --git a/slp_drawio/tests/resources/drawio/drawio_shape_names_with_html.drawio b/slp_drawio/tests/resources/drawio/drawio_shape_names_with_html.drawio
new file mode 100644
index 00000000..3a266bf5
--- /dev/null
+++ b/slp_drawio/tests/resources/drawio/drawio_shape_names_with_html.drawio
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/slp_drawio/tests/resources/test_resource_paths.py b/slp_drawio/tests/resources/test_resource_paths.py
index 79167621..2d549aad 100644
--- a/slp_drawio/tests/resources/test_resource_paths.py
+++ b/slp_drawio/tests/resources/test_resource_paths.py
@@ -16,3 +16,5 @@
wrong_root_drawio = f'{drawio}/wrong_root.drawio'
not_xml = f'{drawio}/not_xml.drawio'
lean_ix_drawio = f'{drawio}/lean_ix.drawio.xml'
+shape_names_with_html = f'{drawio}/drawio_shape_names_with_html.drawio'
+default_drawio_mapping = f'{drawio}/default_drawio_mapping.yaml'
diff --git a/slp_drawio/tests/unit/load/test_diagram_component_loader.py b/slp_drawio/tests/unit/load/test_diagram_component_loader.py
index 61f91efc..6b1c3c0b 100644
--- a/slp_drawio/tests/unit/load/test_diagram_component_loader.py
+++ b/slp_drawio/tests/unit/load/test_diagram_component_loader.py
@@ -1,30 +1,12 @@
import json
-from typing import Dict, List
from unittest.mock import patch
-import pytest
-
from sl_util.sl_util.file_utils import get_byte_data
-from slp_drawio.slp_drawio.load import diagram_component_loader
from slp_drawio.slp_drawio.load.diagram_component_loader import DiagramComponentLoader
from slp_drawio.slp_drawio.load.drawio_dict_utils import get_size, get_position
from slp_drawio.tests.resources import test_resource_paths
-@pytest.mark.parametrize('mx_cell, components, expected', [
- pytest.param({}, [], None, id="with mxCell without parent None"),
- pytest.param({'parent': 1}, [{'id': 1}], 1, id="parent exists in components"),
- pytest.param({'parent': 1}, [{'id': 2}], None, id="parent not exists in components"),
-])
-def test_get_shape_parent_id(mx_cell: Dict, components: List, expected):
- # GIVEN a mx_cell
- # WHEN diagram_component_loader::_get_shape_parent_id
- parent_id = diagram_component_loader._get_shape_parent_id(mx_cell, components)
-
- # THEN the parent is as expected
- assert parent_id == expected
-
-
class TestDiagramComponentLoader:
PROJECT_ID = 'drawio-project'
@@ -66,7 +48,7 @@ def test_get_representation_element(self, get_size_wrapper, get_position_wrapper
# GIVEN the mx_cell with the following attributes
mx_cell = {
'id': 'mx-cell-identifier',
- 'style': "spacingLeft=30;fontColor=#232F3E;dashed=0",
+ 'style': "spacingLeft=30;fontColor=#232F3E;dashed=0;",
'mxGeometry': {'x': '100', 'y': '200', 'height': '10', 'width': '20'}
}
@@ -82,4 +64,4 @@ def test_get_representation_element(self, get_size_wrapper, get_position_wrapper
assert representation_element.representation == f"{self.PROJECT_ID}-diagram"
assert representation_element.position == {'x': 100, 'y': 200}
assert representation_element.size == {'height': 10, 'width': 20}
- assert representation_element.attributes['style'] == "spacingLeft=30;fontColor=#232F3E;dashed=0"
+ assert representation_element.attributes['style'] == "spacingLeft=30;fontColor=#232F3E;dashed=0;"
diff --git a/slp_drawio/tests/unit/load/test_drawio_mxcell_utils.py b/slp_drawio/tests/unit/load/test_drawio_mxcell_utils.py
new file mode 100644
index 00000000..fb8ebedf
--- /dev/null
+++ b/slp_drawio/tests/unit/load/test_drawio_mxcell_utils.py
@@ -0,0 +1,76 @@
+from typing import Dict, List
+
+import pytest
+
+from slp_drawio.slp_drawio.load.drawio_mxcell_utils import get_cell_parent_id, get_cell_name
+from slp_drawio.slp_drawio.load.drawio_mxcell_utils import get_cell_style
+
+
+@pytest.mark.parametrize('mx_cell, components, expected', [
+ pytest.param({}, [], None, id="with mxCell without parent None"),
+ pytest.param({'parent': 1}, [{'id': 1}], 1, id="parent exists in components"),
+ pytest.param({'parent': 1}, [{'id': 2}], None, id="parent not exists in components"),
+])
+def test_get_cell_parent_id(mx_cell: Dict, components: List, expected):
+ # GIVEN a mx_cell
+ # WHEN we get the parent id
+ parent_id = get_cell_parent_id(mx_cell, components)
+
+ # THEN the parent is as expected
+ assert parent_id == expected
+
+
+@pytest.mark.parametrize('mx_cell, expected', [
+ pytest.param({}, None, id="with mxCell without value or label None"),
+ pytest.param({'value': ''}, None, id="empty value None"),
+ pytest.param({'label': ''}, None, id="empty label None"),
+ pytest.param({'value': 'A'}, '_A', id="single character value"),
+ pytest.param({'label': 'B'}, '_B', id="single character label"),
+ pytest.param({'value': ' Test Value '}, 'Test Value', id="trailing spaces in value"),
+ pytest.param({'label': ' Test Value '}, 'Test Value', id="trailing spaces in label"),
+ pytest.param({'label': 'Bold Label
'}, 'Bold Label', id="HTML label"),
+ pytest.param({'value': 'Bold Label
'}, 'Bold Label', id="HTML value"),
+])
+def test_get_cell_name(mx_cell: Dict, expected):
+ # GIVEN a mx_cell
+ # WHEN we get the cell name
+ cell_name = get_cell_name(mx_cell)
+
+ # THEN the cell name is as expected
+ assert cell_name == expected
+
+
+@pytest.mark.parametrize('cell_name, expected', [
+ pytest.param('Bold Text ', 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;fontStyle=1;',
+ id="bold"),
+ pytest.param('Italic Text ', 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;fontStyle=2;',
+ id="italic"),
+ pytest.param('Underlined Text ', 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;fontStyle=4;',
+ id="underline"),
+ pytest.param('Custom Font ',
+ 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;fontStyle=7;fontColor=#fa09bc;fontFamily=Arial;',
+ id="all combined"),
+ pytest.param('Plain Text', 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;',
+ id="plain text with no HTML"),
+ pytest.param('', 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;',
+ id="empty string"),
+ pytest.param(None, 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;',
+ id="None value")
+])
+def test_get_cell_style(cell_name, expected):
+ # GIVEN a default styles that will be overridden
+ default_styles = 'sketch=0;image;image=data:image/png,iVBORw0KGgoA;fontStyle=0;'
+
+ # AND a mx_cell with value with HTML
+ value_mx_cell = {'value': cell_name, 'style': default_styles}
+
+ # AND a mx_cell with label with HTML
+ label_mx_cell = {'label': cell_name, 'style': default_styles}
+
+ # WHEN we get the font styles
+ value_font_styles = get_cell_style(value_mx_cell)
+ label_font_styles = get_cell_style(label_mx_cell)
+
+ # THEN the font styles are as expected
+ assert value_font_styles == expected
+ assert label_font_styles == expected
diff --git a/slp_drawio/tests/unit/parse/test_drawio_styles_from_html_tags_parser.py b/slp_drawio/tests/unit/parse/test_drawio_styles_from_html_tags_parser.py
new file mode 100644
index 00000000..2f50e6b0
--- /dev/null
+++ b/slp_drawio/tests/unit/parse/test_drawio_styles_from_html_tags_parser.py
@@ -0,0 +1,38 @@
+import pytest
+
+from slp_drawio.slp_drawio.parse.drawio_styles_from_html_tags_parser import DrawioStylesFromHtmlTagsParser
+
+TEST_DRAWIO_FONT_SIZE_KEY = 'fontSize'
+TEST_DRAWIO_FONT_STYLE_KEY = 'fontStyle'
+TEST_DRAWIO_FONT_COLOR_KEY = 'fontColor'
+TEST_DRAWIO_FONT_FAMILY_KEY = 'fontFamily'
+
+
+@pytest.mark.parametrize('html,expected', [
+ pytest.param('Bold text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=1'], id="bold"),
+ pytest.param('Italic Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=2'], id="italic"),
+ pytest.param('Underlined Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=4'], id="underline"),
+ pytest.param('Strikethrough Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=8'], id="Strikethrough"),
+ pytest.param('Combined Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=3'], id="bold + italic"),
+ pytest.param('Combined Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=7'],
+ id="bold + italic + underline"),
+ pytest.param('Combined Text ', [f'{TEST_DRAWIO_FONT_STYLE_KEY}=15'],
+ id="bold + italic + underline + strikethrough"),
+ pytest.param('Custom Font ',
+ [f'{TEST_DRAWIO_FONT_COLOR_KEY}=#fb08cb', f'{TEST_DRAWIO_FONT_FAMILY_KEY}=Courier'],
+ id="font color, face and size"),
+ pytest.param(''
+ 'EC2 with HTML ',
+ [f'{TEST_DRAWIO_FONT_STYLE_KEY}=7', f'{TEST_DRAWIO_FONT_COLOR_KEY}=#ffdd00',
+ f'{TEST_DRAWIO_FONT_FAMILY_KEY}=Courier'], id="all styles combined"),
+
+ pytest.param('Plain Text', [], id="plain text with no HTML"),
+ pytest.param('', [], id="empty string")
+])
+def test_parse_style(html, expected):
+ # GIVEN the parser
+ parser = DrawioStylesFromHtmlTagsParser()
+ # WHEN OldHTMLStyleParser::parse is called
+ result = parser.parse(html)
+ # THEN the style is correctly parsed
+ assert result == expected
diff --git a/slp_tfplan/tests/integration/test_tfplan.py b/slp_tfplan/tests/integration/test_tfplan_processor.py
similarity index 58%
rename from slp_tfplan/tests/integration/test_tfplan.py
rename to slp_tfplan/tests/integration/test_tfplan_processor.py
index a177e26e..9849f6c1 100644
--- a/slp_tfplan/tests/integration/test_tfplan.py
+++ b/slp_tfplan/tests/integration/test_tfplan_processor.py
@@ -1,5 +1,4 @@
import random
-from typing import List
import pytest
from pytest import mark, param
@@ -7,13 +6,20 @@
import slp_tfplan.tests.resources.test_resource_paths as resources
from otm.otm.entity.otm import OTM
from sl_util.sl_util.file_utils import get_byte_data
-from slp_base import IacFileNotValidError
+from slp_base import IacFileNotValidError, MappingFileNotValidError
+from slp_base.slp_base.errors import ErrorCode
+from slp_base.slp_base.mapping import MAX_SIZE as MAPPING_MAX_SIZE, MIN_SIZE as MAPPING_MIN_SIZE
from slp_base.tests.util.otm import validate_and_compare
from slp_tfplan import TFPlanProcessor
from slp_tfplan.tests.util.builders import create_artificial_file, MIN_FILE_SIZE, MAX_TFPLAN_FILE_SIZE, \
MAX_TFGRAPH_FILE_SIZE
DEFAULT_MAPPING_FILE = get_byte_data(resources.terraform_iriusrisk_tfplan_aws_mapping)
+SECONDARY_DEFAULT_MAPPING_FILE = get_byte_data(resources.terraform_plan_default_mapping)
+CONFIG_CLIENT_MAPPING_FILE = get_byte_data(resources.terraform_plan_config_client_mapping)
+CONFIG_TRUSTZONE_MAPPING_FILE = get_byte_data(resources.terraform_plan_config_trustzone_mapping)
+CONFIG_OVERRIDE_DEFAULT = get_byte_data(resources.terraform_plan_config_override_default)
+CONFIG_OVERRIDE_CUSTOM = get_byte_data(resources.terraform_plan_config_override_custom)
SAMPLE_VALID_TFPLAN = get_byte_data(resources.tfplan_elb)
SAMPLE_VALID_TFGRAPH = get_byte_data(resources.tfgraph_elb)
@@ -24,6 +30,12 @@
TFPLAN_OFFICIAL = get_byte_data(resources.tfplan_official)
TFGRAPH_OFFICIAL = get_byte_data(resources.tfgraph_official)
+TFPLAN_AWS_COMPLETE = get_byte_data(resources.tfplan_aws_complete)
+TFGRAPH_AWS_COMPLETE = get_byte_data(resources.tfgraph_aws_complete)
+
+TFPLAN_BASE = get_byte_data(resources.tfplan_base)
+TFGRAPH_BASE = get_byte_data(resources.tfgraph_base)
+
SAMPLE_ID = 'id'
SAMPLE_NAME = 'name'
EXCLUDED_REGEX = r"root\[\'dataflows'\]\[.+?\]\['id'\]"
@@ -57,7 +69,7 @@ def test_tfplan_tfgraph_examples(tfplan: bytes, tfgraph: bytes, expected: str):
param([SAMPLE_VALID_TFPLAN], id='one source'),
param([SAMPLE_VALID_TFPLAN] * random.randint(3, 10), id='more than two sources')
])
-def test_wrong_number_of_parameters(sources: List[bytes]):
+def test_wrong_number_of_parameters(sources: list[bytes]):
# GIVEN a wrong number of sources
# WHEN TFPlanProcessor::process is invoked
@@ -75,7 +87,7 @@ def test_wrong_number_of_parameters(sources: List[bytes]):
param([SAMPLE_VALID_TFPLAN, create_artificial_file(MIN_FILE_SIZE - 1)], id='tfgraph too small'),
param([SAMPLE_VALID_TFPLAN, create_artificial_file(MAX_TFGRAPH_FILE_SIZE + 1)], id='tfgraph too big')
])
-def test_invalid_size(sources: List[bytes]):
+def test_invalid_size(sources: list[bytes]):
# GIVEN a tfplan or tfgraph with an invalid size
# WHEN TFPlanProcessor::process is invoked
@@ -87,6 +99,30 @@ def test_invalid_size(sources: List[bytes]):
assert error.value.title == 'Terraform Plan file is not valid'
assert error.value.message == 'Provided iac_file is not valid. Invalid size'
+@mark.parametrize('mappings', [
+ param([create_artificial_file(MAPPING_MIN_SIZE - 1), DEFAULT_MAPPING_FILE], id='mapping file too small'),
+ param([create_artificial_file(MAPPING_MAX_SIZE + 1), DEFAULT_MAPPING_FILE], id='mapping file too big'),
+ param([DEFAULT_MAPPING_FILE, create_artificial_file(MAPPING_MIN_SIZE - 1)], id='custom mapping file too small'),
+ param([DEFAULT_MAPPING_FILE, create_artificial_file(MAPPING_MAX_SIZE + 1)], id='custom mapping file too big')
+])
+def test_invalid_mapping_size(mappings: list[bytes]):
+ # GIVEN a valid tfplan and tfgraph
+ tfplan = get_byte_data(resources.tfplan_official)
+ tfgraph = get_byte_data(resources.tfgraph_official)
+
+ # AND a mapping file with an invalid size ('mappings' arg)
+
+ # WHEN TFPlanProcessor::process is invoked
+ # THEN a MappingFileNotValidError is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ TFPlanProcessor(SAMPLE_ID, SAMPLE_NAME, [tfplan, tfgraph], mappings).process()
+
+ # AND the error details are correct
+ assert ErrorCode.MAPPING_FILE_NOT_VALID == error.value.error_code
+ assert 'Mapping files are not valid' == error.value.title
+ assert 'Mapping files are not valid. Invalid size' == error.value.detail
+ assert 'Mapping files are not valid. Invalid size' == error.value.message
+
def test_two_tfplan():
# GIVEN two valid TFPLANs
sources = [SAMPLE_VALID_TFPLAN, SAMPLE_VALID_TFPLAN]
@@ -105,7 +141,7 @@ def test_two_tfplan():
param([SAMPLE_VALID_TFPLAN, SAMPLE_INVALID_TFGRAPH], id='invalid tfgraph'),
param([SAMPLE_INVALID_TFPLAN, SAMPLE_INVALID_TFGRAPH], id='both invalid')
])
-def test_invalid_sources(sources: List[bytes]):
+def test_invalid_sources(sources: list[bytes]):
# GIVEN some invalid tfplan
# WHEN TFPlanProcessor::process is invoked
@@ -150,3 +186,65 @@ def test_singleton_grouped_by_category():
assert components[1].id == 'aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group'
assert components[1].name == 'CloudWatch'
assert components[1].type == 'cloudwatch'
+
+def test_aws_complete_sample():
+ # GIVEN a valid tfplan and tfgraph
+ tfplan = TFPLAN_AWS_COMPLETE
+ tfgraph = TFGRAPH_AWS_COMPLETE
+
+ # AND a mapping file with an invalid size ('mappings' arg)
+ mapping_file = SECONDARY_DEFAULT_MAPPING_FILE
+
+ # WHEN TFPlanProcessor::process is invoked
+ otm = TFPlanProcessor(SAMPLE_ID, SAMPLE_NAME, [tfplan, tfgraph], [mapping_file]).process()
+
+ # AND the details are correct
+ assert len(otm.representations) == 1
+ assert len(otm.trustzones) == 2
+ assert len(otm.components) == 15
+ assert len(otm.dataflows) == 8
+
+def test_configuration_trustzone_no_client():
+ # GIVEN two valid TFPLANs
+ tfplan = TFPLAN_BASE
+ tfgraph = TFGRAPH_BASE
+
+ # WHEN TFPlanProcessor::process is invoked
+ # THEN a MappingFileNotValidError exception is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ TFPlanProcessor(SAMPLE_ID, SAMPLE_NAME, [tfplan, tfgraph], [CONFIG_TRUSTZONE_MAPPING_FILE]).process()
+
+ # AND the message says that no multiple tfplan files can be processed at the same time
+ assert str(error.value.title) == 'Mapping files are not valid'
+ assert str(error.value.detail) == 'Mapping file does not comply with the schema'
+ assert str(error.value.message) == "'client' is a required property"
+
+def test_configuration_client_no_trustzone():
+ # GIVEN two valid TFPLANs
+ tfplan = TFPLAN_BASE
+ tfgraph = TFGRAPH_BASE
+
+ # WHEN TFPlanProcessor::process is invoked
+ # THEN a MappingFileNotValidError exception is raised
+ with pytest.raises(MappingFileNotValidError) as error:
+ TFPlanProcessor(SAMPLE_ID, SAMPLE_NAME, [tfplan, tfgraph], [CONFIG_CLIENT_MAPPING_FILE]).process()
+
+ # AND the message says that no multiple tfplan files can be processed at the same time
+ assert str(error.value.title) == 'Mapping files are not valid'
+ assert str(error.value.detail) == 'Mapping file does not comply with the schema'
+ assert str(error.value.message) == "'trustzone' is a required property"
+
+def test_configuration_mapping_override():
+ # GIVEN two valid TFPLANs
+ tfplan = TFPLAN_BASE
+ tfgraph = TFGRAPH_BASE
+
+ # WHEN TFPlanProcessor::process is invoked
+ otm = TFPlanProcessor(SAMPLE_ID, SAMPLE_NAME, [tfplan, tfgraph],
+ [CONFIG_OVERRIDE_DEFAULT, CONFIG_OVERRIDE_CUSTOM]).process()
+
+ # AND the details are correct
+ assert len(otm.representations) == 1
+ assert len(otm.trustzones) == 2
+ assert len(otm.components) == 15
+ assert len(otm.dataflows) == 13
diff --git a/slp_tfplan/tests/resources/mapping/default-terraform-plan-mapping.yaml b/slp_tfplan/tests/resources/mapping/default-terraform-plan-mapping.yaml
new file mode 100644
index 00000000..5153782b
--- /dev/null
+++ b/slp_tfplan/tests/resources/mapping/default-terraform-plan-mapping.yaml
@@ -0,0 +1,189 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: aws_s3_bucket
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: [ "azurerm_data_share", "azurerm_data_share_account" ]
+ type: CD-MICROSOFT-AZURE-DATA-SHARE
+
+ - label: azurerm_elastic_cloud_elasticsearch
+ type: CD-MICROSOFT-AZURE-ELASTICSEARCH
+
+ - label: ["azurerm_media_services_account", "azurerm_media_services_account_filter"]
+ type: CD-MICROSOFT-AZURE-MEDIA-SERVICES
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+configuration:
+ attack_surface:
+ client: generic-client
+ trustzone: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+# skip:
+# - aws_security_group
+# - aws_db_subnet_group
+# catch_all: empty-component
\ No newline at end of file
diff --git a/slp_tfplan/tests/resources/mapping/tfplan-config-client-no-trustzone-mapping.yaml b/slp_tfplan/tests/resources/mapping/tfplan-config-client-no-trustzone-mapping.yaml
new file mode 100644
index 00000000..402dbc9f
--- /dev/null
+++ b/slp_tfplan/tests/resources/mapping/tfplan-config-client-no-trustzone-mapping.yaml
@@ -0,0 +1,287 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: [aws_s3_bucket, aws_s3_bucket_object]
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf(.*)_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+ - label: {$regex: ^aws_iam_\w*$}
+ type: CD-AWS-IAM
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudwatch_event_\w*$}
+ type: eventbridge
+ $singleton: true
+
+ - label: {$regex: ^aws_codebuild_\w*$}
+ type: CD-CODEBUILD
+ $singleton: true
+
+ - label: {$regex: ^aws_codepipeline\w*$}
+ type: CD-CODEPIPELINE
+ $singleton: true
+
+ - label: aws_ebs_volume
+ type: elastic-block-store
+
+ - label: {$regex: ^aws_shield_\w*$}
+ type: CD-SHIELD
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudformation_\w*$}
+ type: CD-CLOUDFORMATION
+ $singleton: true
+
+ - label: aws_glue_job
+ type: CD-GLUE
+
+ - label: aws_glue_registry
+ type: CD-GLUE-SCHEMA-REGISTRY
+
+ - label: aws_efs_file_system
+ type: elastic-file-system
+
+ - label: aws_transfer_server
+ type: CD-TRANSFER-FML
+
+ - label: aws_codecommit_repository
+ type: CD-CODECOMMIT
+
+ - label: aws_globalaccelerator_accelerator
+ type: CD-GLOBAL-ACC
+
+ - label: {$regex: ^aws_dms_\w*$}
+ type: CD-DMS
+ $singleton: true
+
+ - label: {$regex: ^aws_iot_\w*$}
+ type: CD-IOT-CORE
+ $singleton: true
+
+ - label: {$regex: ^aws_medialive_\w*$}
+ type: CD-MEDIALIVE
+ $singleton: true
+
+ - label: {$regex: ^aws_gamelift_\w*$}
+ type: CD-GAMELIFT
+ $singleton: true
+
+ - label: {$regex: ^aws_directory_service_\w*$}
+ type: CD-DIR-SERVICE
+ $singleton: true
+
+ - label: {$regex: ^aws_appsync_\w*$}
+ type: CD-APPSYNC
+ $singleton: true
+
+ - label: {$regex: ^aws_fms_\w*$}
+ type: firewall-manager
+ $singleton: true
+
+ - label: aws_neptune_cluster
+ type: CD-NEPTUNE
+
+ - label: aws_ec2_transit_gateway
+ type: CD-AWS-TRANSIT-GW
+
+ - label: {$regex: ^aws_batch_\w*$}
+ type: CD-BATCH
+ $singleton: true
+
+ - label: aws_elastic_beanstalk_application
+ type: CD-ELASTIC-BEANSTALK
+
+ - label: {$regex: ^aws_dx_\w*$}
+ type: direct-connect
+ $singleton: true
+
+ - label: aws_emr_cluster
+ type: CD-EMR
+
+ - label: aws_msk_cluster
+ type: CD-MSK
+
+ - label: aws_elastictranscoder_pipeline
+ type: CD-ELASTIC-TRANSCODER
+
+ - label: aws_sagemaker_app
+ type: CD-SAGEMAKER
+
+ # AZURE
+ - label: [ "azurerm_data_share", "azurerm_data_share_account" ]
+ type: CD-MICROSOFT-AZURE-DATA-SHARE
+
+ - label: azurerm_elastic_cloud_elasticsearch
+ type: CD-MICROSOFT-AZURE-ELASTICSEARCH
+
+ - label: [ "azurerm_media_services_account", "azurerm_media_services_account_filter" ]
+ type: CD-MICROSOFT-AZURE-MEDIA-SERVICES
+
+configuration:
+ attack_surface:
+ client: generic-client
+
diff --git a/slp_tfplan/tests/resources/mapping/tfplan-config-custom.yaml b/slp_tfplan/tests/resources/mapping/tfplan-config-custom.yaml
new file mode 100644
index 00000000..2766cfb9
--- /dev/null
+++ b/slp_tfplan/tests/resources/mapping/tfplan-config-custom.yaml
@@ -0,0 +1,288 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: [aws_s3_bucket, aws_s3_bucket_object]
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf(.*)_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+ - label: {$regex: ^aws_iam_\w*$}
+ type: CD-AWS-IAM
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudwatch_event_\w*$}
+ type: eventbridge
+ $singleton: true
+
+ - label: {$regex: ^aws_codebuild_\w*$}
+ type: CD-CODEBUILD
+ $singleton: true
+
+ - label: {$regex: ^aws_codepipeline\w*$}
+ type: CD-CODEPIPELINE
+ $singleton: true
+
+ - label: aws_ebs_volume
+ type: elastic-block-store
+
+ - label: {$regex: ^aws_shield_\w*$}
+ type: CD-SHIELD
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudformation_\w*$}
+ type: CD-CLOUDFORMATION
+ $singleton: true
+
+ - label: aws_glue_job
+ type: CD-GLUE
+
+ - label: aws_glue_registry
+ type: CD-GLUE-SCHEMA-REGISTRY
+
+ - label: aws_efs_file_system
+ type: elastic-file-system
+
+ - label: aws_transfer_server
+ type: CD-TRANSFER-FML
+
+ - label: aws_codecommit_repository
+ type: CD-CODECOMMIT
+
+ - label: aws_globalaccelerator_accelerator
+ type: CD-GLOBAL-ACC
+
+ - label: {$regex: ^aws_dms_\w*$}
+ type: CD-DMS
+ $singleton: true
+
+ - label: {$regex: ^aws_iot_\w*$}
+ type: CD-IOT-CORE
+ $singleton: true
+
+ - label: {$regex: ^aws_medialive_\w*$}
+ type: CD-MEDIALIVE
+ $singleton: true
+
+ - label: {$regex: ^aws_gamelift_\w*$}
+ type: CD-GAMELIFT
+ $singleton: true
+
+ - label: {$regex: ^aws_directory_service_\w*$}
+ type: CD-DIR-SERVICE
+ $singleton: true
+
+ - label: {$regex: ^aws_appsync_\w*$}
+ type: CD-APPSYNC
+ $singleton: true
+
+ - label: {$regex: ^aws_fms_\w*$}
+ type: firewall-manager
+ $singleton: true
+
+ - label: aws_neptune_cluster
+ type: CD-NEPTUNE
+
+ - label: aws_ec2_transit_gateway
+ type: CD-AWS-TRANSIT-GW
+
+ - label: {$regex: ^aws_batch_\w*$}
+ type: CD-BATCH
+ $singleton: true
+
+ - label: aws_elastic_beanstalk_application
+ type: CD-ELASTIC-BEANSTALK
+
+ - label: {$regex: ^aws_dx_\w*$}
+ type: direct-connect
+ $singleton: true
+
+ - label: aws_emr_cluster
+ type: CD-EMR
+
+ - label: aws_msk_cluster
+ type: CD-MSK
+
+ - label: aws_elastictranscoder_pipeline
+ type: CD-ELASTIC-TRANSCODER
+
+ - label: aws_sagemaker_app
+ type: CD-SAGEMAKER
+
+ # AZURE
+ - label: [ "azurerm_data_share", "azurerm_data_share_account" ]
+ type: CD-MICROSOFT-AZURE-DATA-SHARE
+
+ - label: azurerm_elastic_cloud_elasticsearch
+ type: CD-MICROSOFT-AZURE-ELASTICSEARCH
+
+ - label: [ "azurerm_media_services_account", "azurerm_media_services_account_filter" ]
+ type: CD-MICROSOFT-AZURE-MEDIA-SERVICES
+
+configuration:
+ skip:
+ - aaws_dynamodb_table
+ - aaws_s3_bucket
+
diff --git a/slp_tfplan/tests/resources/mapping/tfplan-config-default.yaml b/slp_tfplan/tests/resources/mapping/tfplan-config-default.yaml
new file mode 100644
index 00000000..49b2b17e
--- /dev/null
+++ b/slp_tfplan/tests/resources/mapping/tfplan-config-default.yaml
@@ -0,0 +1,289 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: [aws_s3_bucket, aws_s3_bucket_object]
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf(.*)_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+ - label: {$regex: ^aws_iam_\w*$}
+ type: CD-AWS-IAM
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudwatch_event_\w*$}
+ type: eventbridge
+ $singleton: true
+
+ - label: {$regex: ^aws_codebuild_\w*$}
+ type: CD-CODEBUILD
+ $singleton: true
+
+ - label: {$regex: ^aws_codepipeline\w*$}
+ type: CD-CODEPIPELINE
+ $singleton: true
+
+ - label: aws_ebs_volume
+ type: elastic-block-store
+
+ - label: {$regex: ^aws_shield_\w*$}
+ type: CD-SHIELD
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudformation_\w*$}
+ type: CD-CLOUDFORMATION
+ $singleton: true
+
+ - label: aws_glue_job
+ type: CD-GLUE
+
+ - label: aws_glue_registry
+ type: CD-GLUE-SCHEMA-REGISTRY
+
+ - label: aws_efs_file_system
+ type: elastic-file-system
+
+ - label: aws_transfer_server
+ type: CD-TRANSFER-FML
+
+ - label: aws_codecommit_repository
+ type: CD-CODECOMMIT
+
+ - label: aws_globalaccelerator_accelerator
+ type: CD-GLOBAL-ACC
+
+ - label: {$regex: ^aws_dms_\w*$}
+ type: CD-DMS
+ $singleton: true
+
+ - label: {$regex: ^aws_iot_\w*$}
+ type: CD-IOT-CORE
+ $singleton: true
+
+ - label: {$regex: ^aws_medialive_\w*$}
+ type: CD-MEDIALIVE
+ $singleton: true
+
+ - label: {$regex: ^aws_gamelift_\w*$}
+ type: CD-GAMELIFT
+ $singleton: true
+
+ - label: {$regex: ^aws_directory_service_\w*$}
+ type: CD-DIR-SERVICE
+ $singleton: true
+
+ - label: {$regex: ^aws_appsync_\w*$}
+ type: CD-APPSYNC
+ $singleton: true
+
+ - label: {$regex: ^aws_fms_\w*$}
+ type: firewall-manager
+ $singleton: true
+
+ - label: aws_neptune_cluster
+ type: CD-NEPTUNE
+
+ - label: aws_ec2_transit_gateway
+ type: CD-AWS-TRANSIT-GW
+
+ - label: {$regex: ^aws_batch_\w*$}
+ type: CD-BATCH
+ $singleton: true
+
+ - label: aws_elastic_beanstalk_application
+ type: CD-ELASTIC-BEANSTALK
+
+ - label: {$regex: ^aws_dx_\w*$}
+ type: direct-connect
+ $singleton: true
+
+ - label: aws_emr_cluster
+ type: CD-EMR
+
+ - label: aws_msk_cluster
+ type: CD-MSK
+
+ - label: aws_elastictranscoder_pipeline
+ type: CD-ELASTIC-TRANSCODER
+
+ - label: aws_sagemaker_app
+ type: CD-SAGEMAKER
+
+ # AZURE
+ - label: [ "azurerm_data_share", "azurerm_data_share_account" ]
+ type: CD-MICROSOFT-AZURE-DATA-SHARE
+
+ - label: azurerm_elastic_cloud_elasticsearch
+ type: CD-MICROSOFT-AZURE-ELASTICSEARCH
+
+ - label: [ "azurerm_media_services_account", "azurerm_media_services_account_filter" ]
+ type: CD-MICROSOFT-AZURE-MEDIA-SERVICES
+
+configuration:
+ attack_surface:
+ client: generic-client
+ trustzone: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+
diff --git a/slp_tfplan/tests/resources/mapping/tfplan-config-trustzone-no-client-mapping.yaml b/slp_tfplan/tests/resources/mapping/tfplan-config-trustzone-no-client-mapping.yaml
new file mode 100644
index 00000000..3fe85e6b
--- /dev/null
+++ b/slp_tfplan/tests/resources/mapping/tfplan-config-trustzone-no-client-mapping.yaml
@@ -0,0 +1,290 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: [aws_s3_bucket, aws_s3_bucket_object]
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf(.*)_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+ - label: {$regex: ^aws_iam_\w*$}
+ type: CD-AWS-IAM
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudwatch_event_\w*$}
+ type: eventbridge
+ $singleton: true
+
+ - label: {$regex: ^aws_codebuild_\w*$}
+ type: CD-CODEBUILD
+ $singleton: true
+
+ - label: {$regex: ^aws_codepipeline\w*$}
+ type: CD-CODEPIPELINE
+ $singleton: true
+
+ - label: aws_ebs_volume
+ type: elastic-block-store
+
+ - label: {$regex: ^aws_shield_\w*$}
+ type: CD-SHIELD
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudformation_\w*$}
+ type: CD-CLOUDFORMATION
+ $singleton: true
+
+ - label: aws_glue_job
+ type: CD-GLUE
+
+ - label: aws_glue_registry
+ type: CD-GLUE-SCHEMA-REGISTRY
+
+ - label: aws_efs_file_system
+ type: elastic-file-system
+
+ - label: aws_transfer_server
+ type: CD-TRANSFER-FML
+
+ - label: aws_codecommit_repository
+ type: CD-CODECOMMIT
+
+ - label: aws_globalaccelerator_accelerator
+ type: CD-GLOBAL-ACC
+
+ - label: {$regex: ^aws_dms_\w*$}
+ type: CD-DMS
+ $singleton: true
+
+ - label: {$regex: ^aws_iot_\w*$}
+ type: CD-IOT-CORE
+ $singleton: true
+
+ - label: {$regex: ^aws_medialive_\w*$}
+ type: CD-MEDIALIVE
+ $singleton: true
+
+ - label: {$regex: ^aws_gamelift_\w*$}
+ type: CD-GAMELIFT
+ $singleton: true
+
+ - label: {$regex: ^aws_directory_service_\w*$}
+ type: CD-DIR-SERVICE
+ $singleton: true
+
+ - label: {$regex: ^aws_appsync_\w*$}
+ type: CD-APPSYNC
+ $singleton: true
+
+ - label: {$regex: ^aws_fms_\w*$}
+ type: firewall-manager
+ $singleton: true
+
+ - label: aws_neptune_cluster
+ type: CD-NEPTUNE
+
+ - label: aws_ec2_transit_gateway
+ type: CD-AWS-TRANSIT-GW
+
+ - label: {$regex: ^aws_batch_\w*$}
+ type: CD-BATCH
+ $singleton: true
+
+ - label: aws_elastic_beanstalk_application
+ type: CD-ELASTIC-BEANSTALK
+
+ - label: {$regex: ^aws_dx_\w*$}
+ type: direct-connect
+ $singleton: true
+
+ - label: aws_emr_cluster
+ type: CD-EMR
+
+ - label: aws_msk_cluster
+ type: CD-MSK
+
+ - label: aws_elastictranscoder_pipeline
+ type: CD-ELASTIC-TRANSCODER
+
+ - label: aws_sagemaker_app
+ type: CD-SAGEMAKER
+
+ # AZURE
+ - label: [ "azurerm_data_share", "azurerm_data_share_account" ]
+ type: CD-MICROSOFT-AZURE-DATA-SHARE
+
+ - label: azurerm_elastic_cloud_elasticsearch
+ type: CD-MICROSOFT-AZURE-ELASTICSEARCH
+
+ - label: [ "azurerm_media_services_account", "azurerm_media_services_account_filter" ]
+ type: CD-MICROSOFT-AZURE-MEDIA-SERVICES
+
+configuration:
+ attack_surface:
+ trustzone: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+
+
+
diff --git a/slp_tfplan/tests/resources/test_resource_paths.py b/slp_tfplan/tests/resources/test_resource_paths.py
index b3424a5a..fa0519b9 100644
--- a/slp_tfplan/tests/resources/test_resource_paths.py
+++ b/slp_tfplan/tests/resources/test_resource_paths.py
@@ -12,6 +12,10 @@
tfgraph_sgs = path + '/tfplan/sgs-tfgraph.gv'
tfplan_official = path + '/tfplan/official-tfplan.json'
tfgraph_official = path + '/tfplan/official-tfgraph.gv'
+tfplan_aws_complete = path + '/tfplan/aws-complete-tfplan.json'
+tfgraph_aws_complete = path + '/tfplan/aws-complete-tfgraph.json'
+tfplan_base = path + '/tfplan/ha-base-terraform-plan.json'
+tfgraph_base = path + '/tfplan/ha-base-terraform-plan-graph.gv'
# resources tfplan
ingress_cidr_from_property = path + '/tfplan/resources/ingress-cidr-from-property-tfplan-resources.json'
@@ -26,6 +30,12 @@
terraform_iriusrisk_tfplan_aws_mapping = path + '/mapping/iriusrisk-tfplan-aws-mapping.yaml'
terraform_singleton_mapping = path + '/mapping/singleton-mapping.yaml'
terraform_group_by_category_mapping = path + '/mapping/singleton-group-by-category-mapping.yaml'
+terraform_plan_default_mapping = path + '/mapping/default-terraform-plan-mapping.yaml'
+terraform_plan_config_client_mapping = path + '/mapping/tfplan-config-client-no-trustzone-mapping.yaml'
+terraform_plan_config_trustzone_mapping = path + '/mapping/tfplan-config-trustzone-no-client-mapping.yaml'
+terraform_plan_config_override_default = path + '/mapping/tfplan-config-default.yaml'
+terraform_plan_config_override_custom = path + '/mapping/tfplan-config-custom.yaml'
+
# otm
otm_expected_elb = f'{path}/otm/expected-elb.otm'
diff --git a/slp_tfplan/tests/resources/tfplan/aws-complete-tfgraph.json b/slp_tfplan/tests/resources/tfplan/aws-complete-tfgraph.json
new file mode 100644
index 00000000..ea5a612f
--- /dev/null
+++ b/slp_tfplan/tests/resources/tfplan/aws-complete-tfgraph.json
@@ -0,0 +1,3793 @@
+digraph {
+ compound = "true"
+ newrank = "true"
+ subgraph "root" {
+ "[root] aws_ec2_capacity_reservation.open (expand)" [label = "aws_ec2_capacity_reservation.open", shape = "box"]
+ "[root] aws_ec2_capacity_reservation.targeted (expand)" [label = "aws_ec2_capacity_reservation.targeted", shape = "box"]
+ "[root] aws_kms_key.this (expand)" [label = "aws_kms_key.this", shape = "box"]
+ "[root] aws_network_interface.this (expand)" [label = "aws_network_interface.this", shape = "box"]
+ "[root] aws_placement_group.web (expand)" [label = "aws_placement_group.web", shape = "box"]
+ "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)" [label = "module.ec2_complete.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" [label = "module.ec2_complete.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_complete.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_complete.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_complete.aws_instance.this (expand)" [label = "module.ec2_complete.aws_instance.this", shape = "box"]
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" [label = "module.ec2_complete.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_complete.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_complete.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_complete.data.aws_partition.current (expand)" [label = "module.ec2_complete.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)" [label = "module.ec2_disabled.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" [label = "module.ec2_disabled.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_disabled.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_disabled.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_disabled.aws_instance.this (expand)" [label = "module.ec2_disabled.aws_instance.this", shape = "box"]
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" [label = "module.ec2_disabled.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_disabled.data.aws_partition.current (expand)" [label = "module.ec2_disabled.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)" [label = "module.ec2_metadata_options.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" [label = "module.ec2_metadata_options.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_metadata_options.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_metadata_options.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" [label = "module.ec2_metadata_options.aws_instance.this", shape = "box"]
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" [label = "module.ec2_metadata_options.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_metadata_options.data.aws_partition.current (expand)" [label = "module.ec2_metadata_options.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)" [label = "module.ec2_multiple.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" [label = "module.ec2_multiple.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_multiple.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_multiple.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_multiple.aws_instance.this (expand)" [label = "module.ec2_multiple.aws_instance.this", shape = "box"]
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" [label = "module.ec2_multiple.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_multiple.data.aws_partition.current (expand)" [label = "module.ec2_multiple.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)" [label = "module.ec2_network_interface.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" [label = "module.ec2_network_interface.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_network_interface.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_network_interface.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" [label = "module.ec2_network_interface.aws_instance.this", shape = "box"]
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" [label = "module.ec2_network_interface.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_network_interface.data.aws_partition.current (expand)" [label = "module.ec2_network_interface.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)" [label = "module.ec2_open_capacity_reservation.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" [label = "module.ec2_open_capacity_reservation.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" [label = "module.ec2_open_capacity_reservation.aws_instance.this", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" [label = "module.ec2_open_capacity_reservation.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_open_capacity_reservation.data.aws_partition.current (expand)" [label = "module.ec2_open_capacity_reservation.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)" [label = "module.ec2_spot_instance.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" [label = "module.ec2_spot_instance.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_spot_instance.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_spot_instance.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" [label = "module.ec2_spot_instance.aws_instance.this", shape = "box"]
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" [label = "module.ec2_spot_instance.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_spot_instance.data.aws_partition.current (expand)" [label = "module.ec2_spot_instance.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)" [label = "module.ec2_t2_unlimited.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" [label = "module.ec2_t2_unlimited.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" [label = "module.ec2_t2_unlimited.aws_instance.this", shape = "box"]
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" [label = "module.ec2_t2_unlimited.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_t2_unlimited.data.aws_partition.current (expand)" [label = "module.ec2_t2_unlimited.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)" [label = "module.ec2_t3_unlimited.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" [label = "module.ec2_t3_unlimited.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" [label = "module.ec2_t3_unlimited.aws_instance.this", shape = "box"]
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" [label = "module.ec2_t3_unlimited.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_t3_unlimited.data.aws_partition.current (expand)" [label = "module.ec2_t3_unlimited.data.aws_partition.current", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)" [label = "module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" [label = "module.ec2_targeted_capacity_reservation.aws_iam_role.this", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" [label = "module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" [label = "module.ec2_targeted_capacity_reservation.aws_instance.this", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" [label = "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" [label = "module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy", shape = "box"]
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_partition.current (expand)" [label = "module.ec2_targeted_capacity_reservation.data.aws_partition.current", shape = "box"]
+ "[root] module.security_group.aws_security_group.this (expand)" [label = "module.security_group.aws_security_group.this", shape = "box"]
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" [label = "module.security_group.aws_security_group.this_name_prefix", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" [label = "module.security_group.aws_security_group_rule.computed_egress_rules", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" [label = "module.security_group.aws_security_group_rule.computed_egress_with_self", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" [label = "module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" [label = "module.security_group.aws_security_group_rule.computed_ingress_rules", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" [label = "module.security_group.aws_security_group_rule.computed_ingress_with_self", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" [label = "module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" [label = "module.security_group.aws_security_group_rule.egress_rules", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.egress_with_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)" [label = "module.security_group.aws_security_group_rule.egress_with_self", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)" [label = "module.security_group.aws_security_group_rule.egress_with_source_security_group_id", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" [label = "module.security_group.aws_security_group_rule.ingress_rules", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.ingress_with_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" [label = "module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)" [label = "module.security_group.aws_security_group_rule.ingress_with_self", shape = "box"]
+ "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)" [label = "module.security_group.aws_security_group_rule.ingress_with_source_security_group_id", shape = "box"]
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" [label = "module.vpc.aws_cloudwatch_log_group.flow_log", shape = "box"]
+ "[root] module.vpc.aws_customer_gateway.this (expand)" [label = "module.vpc.aws_customer_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" [label = "module.vpc.aws_db_subnet_group.database", shape = "box"]
+ "[root] module.vpc.aws_default_network_acl.this (expand)" [label = "module.vpc.aws_default_network_acl.this", shape = "box"]
+ "[root] module.vpc.aws_default_route_table.default (expand)" [label = "module.vpc.aws_default_route_table.default", shape = "box"]
+ "[root] module.vpc.aws_default_security_group.this (expand)" [label = "module.vpc.aws_default_security_group.this", shape = "box"]
+ "[root] module.vpc.aws_default_vpc.this (expand)" [label = "module.vpc.aws_default_vpc.this", shape = "box"]
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" [label = "module.vpc.aws_egress_only_internet_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_eip.nat (expand)" [label = "module.vpc.aws_eip.nat", shape = "box"]
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" [label = "module.vpc.aws_elasticache_subnet_group.elasticache", shape = "box"]
+ "[root] module.vpc.aws_flow_log.this (expand)" [label = "module.vpc.aws_flow_log.this", shape = "box"]
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_role.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_internet_gateway.this (expand)" [label = "module.vpc.aws_internet_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_nat_gateway.this (expand)" [label = "module.vpc.aws_nat_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_network_acl.database (expand)" [label = "module.vpc.aws_network_acl.database", shape = "box"]
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" [label = "module.vpc.aws_network_acl.elasticache", shape = "box"]
+ "[root] module.vpc.aws_network_acl.intra (expand)" [label = "module.vpc.aws_network_acl.intra", shape = "box"]
+ "[root] module.vpc.aws_network_acl.outpost (expand)" [label = "module.vpc.aws_network_acl.outpost", shape = "box"]
+ "[root] module.vpc.aws_network_acl.private (expand)" [label = "module.vpc.aws_network_acl.private", shape = "box"]
+ "[root] module.vpc.aws_network_acl.public (expand)" [label = "module.vpc.aws_network_acl.public", shape = "box"]
+ "[root] module.vpc.aws_network_acl.redshift (expand)" [label = "module.vpc.aws_network_acl.redshift", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.database_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.database_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.elasticache_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.elasticache_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.intra_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.intra_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.outpost_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.outpost_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.private_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.private_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.public_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.public_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.redshift_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.redshift_outbound", shape = "box"]
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" [label = "module.vpc.aws_redshift_subnet_group.redshift", shape = "box"]
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" [label = "module.vpc.aws_route.database_internet_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" [label = "module.vpc.aws_route.database_ipv6_egress", shape = "box"]
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" [label = "module.vpc.aws_route.database_nat_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" [label = "module.vpc.aws_route.private_ipv6_egress", shape = "box"]
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" [label = "module.vpc.aws_route.private_nat_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" [label = "module.vpc.aws_route.public_internet_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" [label = "module.vpc.aws_route.public_internet_gateway_ipv6", shape = "box"]
+ "[root] module.vpc.aws_route_table.database (expand)" [label = "module.vpc.aws_route_table.database", shape = "box"]
+ "[root] module.vpc.aws_route_table.elasticache (expand)" [label = "module.vpc.aws_route_table.elasticache", shape = "box"]
+ "[root] module.vpc.aws_route_table.intra (expand)" [label = "module.vpc.aws_route_table.intra", shape = "box"]
+ "[root] module.vpc.aws_route_table.private (expand)" [label = "module.vpc.aws_route_table.private", shape = "box"]
+ "[root] module.vpc.aws_route_table.public (expand)" [label = "module.vpc.aws_route_table.public", shape = "box"]
+ "[root] module.vpc.aws_route_table.redshift (expand)" [label = "module.vpc.aws_route_table.redshift", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.database (expand)" [label = "module.vpc.aws_route_table_association.database", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" [label = "module.vpc.aws_route_table_association.elasticache", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.intra (expand)" [label = "module.vpc.aws_route_table_association.intra", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" [label = "module.vpc.aws_route_table_association.outpost", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.private (expand)" [label = "module.vpc.aws_route_table_association.private", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.public (expand)" [label = "module.vpc.aws_route_table_association.public", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" [label = "module.vpc.aws_route_table_association.redshift", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" [label = "module.vpc.aws_route_table_association.redshift_public", shape = "box"]
+ "[root] module.vpc.aws_subnet.database (expand)" [label = "module.vpc.aws_subnet.database", shape = "box"]
+ "[root] module.vpc.aws_subnet.elasticache (expand)" [label = "module.vpc.aws_subnet.elasticache", shape = "box"]
+ "[root] module.vpc.aws_subnet.intra (expand)" [label = "module.vpc.aws_subnet.intra", shape = "box"]
+ "[root] module.vpc.aws_subnet.outpost (expand)" [label = "module.vpc.aws_subnet.outpost", shape = "box"]
+ "[root] module.vpc.aws_subnet.private (expand)" [label = "module.vpc.aws_subnet.private", shape = "box"]
+ "[root] module.vpc.aws_subnet.public (expand)" [label = "module.vpc.aws_subnet.public", shape = "box"]
+ "[root] module.vpc.aws_subnet.redshift (expand)" [label = "module.vpc.aws_subnet.redshift", shape = "box"]
+ "[root] module.vpc.aws_vpc.this (expand)" [label = "module.vpc.aws_vpc.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" [label = "module.vpc.aws_vpc_dhcp_options.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" [label = "module.vpc.aws_vpc_dhcp_options_association.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" [label = "module.vpc.aws_vpc_ipv4_cidr_block_association.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" [label = "module.vpc.aws_vpn_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" [label = "module.vpc.aws_vpn_gateway_attachment.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.intra", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.private", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.public", shape = "box"]
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" [label = "module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role", shape = "box"]
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" [label = "provider[\"registry.terraform.io/hashicorp/aws\"]", shape = "diamond"]
+ "[root] aws_ec2_capacity_reservation.open (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_ec2_capacity_reservation.targeted (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_kms_key.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_network_interface.this (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] aws_placement_group.web (expand)" -> "[root] local.name (expand)"
+ "[root] aws_placement_group.web (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] local.multiple_instances (expand)" -> "[root] module.vpc.output.azs (expand)"
+ "[root] local.multiple_instances (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.arn (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_role_arn (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_role_name (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.id (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.instance_state (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.ipv6_addresses (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.outpost_arn (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.password_data (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.private_dns (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.private_ip (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.public_dns (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.public_ip (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.spot_bid_status (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.spot_instance_id (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.spot_request_state (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.output.tags_all (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.var.ami (expand)"
+ "[root] module.ec2_complete (close)" -> "[root] module.ec2_complete.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_complete.aws_iam_role.this (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.local.iam_role_name (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.iam_role_description (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.iam_role_path (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.iam_role_tags (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_complete.aws_iam_role.this (expand)" -> "[root] module.ec2_complete.var.tags (expand)"
+ "[root] module.ec2_complete.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_complete.aws_iam_role.this (expand)"
+ "[root] module.ec2_complete.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_complete.var.iam_role_policies (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.local.create (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.local.is_t_instance_type (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.availability_zone (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.cpu_core_count (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.cpu_credits (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.create_spot_instance (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.disable_api_stop (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.disable_api_termination (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.ebs_block_device (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.ebs_optimized (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.enable_volume_tags (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.get_password_data (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.hibernation (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.host_id (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.iam_instance_profile (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.ipv6_address_count (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.ipv6_addresses (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.key_name (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.launch_template (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.maintenance_options (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.metadata_options (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.monitoring (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.network_interface (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.placement_group (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.private_ip (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.root_block_device (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.secondary_private_ips (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.source_dest_check (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.subnet_id (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.tenancy (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.timeouts (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.user_data (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.user_data_base64 (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.volume_tags (expand)"
+ "[root] module.ec2_complete.aws_instance.this (expand)" -> "[root] module.ec2_complete.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.local.create (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.local.is_t_instance_type (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.availability_zone (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.cpu_core_count (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.cpu_credits (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.create_spot_instance (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.disable_api_termination (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.ebs_block_device (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.ebs_optimized (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.enable_volume_tags (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.get_password_data (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.hibernation (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.host_id (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.iam_instance_profile (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.ipv6_address_count (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.ipv6_addresses (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.key_name (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.launch_template (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.metadata_options (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.monitoring (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.network_interface (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.placement_group (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.private_ip (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.root_block_device (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.secondary_private_ips (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.source_dest_check (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_launch_group (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_price (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_type (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_valid_from (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_valid_until (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.subnet_id (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.tenancy (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.timeouts (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.user_data (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.user_data_base64 (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.volume_tags (expand)"
+ "[root] module.ec2_complete.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_complete.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_complete.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_complete.data.aws_partition.current (expand)"
+ "[root] module.ec2_complete.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_complete.var.create (expand)"
+ "[root] module.ec2_complete.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_complete.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_complete.data.aws_partition.current (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_complete.local.create (expand)" -> "[root] module.ec2_complete.var.create (expand)"
+ "[root] module.ec2_complete.local.create (expand)" -> "[root] module.ec2_complete.var.putin_khuylo (expand)"
+ "[root] module.ec2_complete.local.iam_role_name (expand)" -> "[root] module.ec2_complete.var.iam_role_name (expand)"
+ "[root] module.ec2_complete.local.iam_role_name (expand)" -> "[root] module.ec2_complete.var.name (expand)"
+ "[root] module.ec2_complete.local.is_t_instance_type (expand)" -> "[root] module.ec2_complete.var.instance_type (expand)"
+ "[root] module.ec2_complete.output.arn (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.arn (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_complete.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_complete.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_complete.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_complete.output.iam_role_arn (expand)" -> "[root] module.ec2_complete.aws_iam_role.this (expand)"
+ "[root] module.ec2_complete.output.iam_role_name (expand)" -> "[root] module.ec2_complete.aws_iam_role.this (expand)"
+ "[root] module.ec2_complete.output.iam_role_unique_id (expand)" -> "[root] module.ec2_complete.aws_iam_role.this (expand)"
+ "[root] module.ec2_complete.output.id (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.id (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.instance_state (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.instance_state (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.ipv6_addresses (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.outpost_arn (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.outpost_arn (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.password_data (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.password_data (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.primary_network_interface_id (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.primary_network_interface_id (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.private_dns (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.private_dns (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.private_ip (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.private_ip (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.public_dns (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.public_dns (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.public_ip (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.public_ip (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.spot_bid_status (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.spot_instance_id (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.spot_request_state (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.output.tags_all (expand)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] module.ec2_complete.output.tags_all (expand)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_complete.var.ami (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.associate_public_ip_address (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.availability_zone (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.availability_zone (expand)" -> "[root] module.vpc.output.azs (expand)"
+ "[root] module.ec2_complete.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.cpu_core_count (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.cpu_credits (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.create (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.create_spot_instance (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.disable_api_stop (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.disable_api_termination (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ebs_block_device (expand)" -> "[root] aws_kms_key.this (expand)"
+ "[root] module.ec2_complete.var.ebs_block_device (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ebs_optimized (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.enable_volume_tags (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.enclave_options_enabled (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ephemeral_block_device (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.get_password_data (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.hibernation (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.host_id (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_instance_profile (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_description (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_name (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_path (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_policies (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_tags (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.instance_type (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ipv6_address_count (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.ipv6_addresses (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.key_name (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.launch_template (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.maintenance_options (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.metadata_options (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.monitoring (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_complete.var.name (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.network_interface (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.placement_group (expand)" -> "[root] aws_placement_group.web (expand)"
+ "[root] module.ec2_complete.var.placement_group (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.private_ip (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.putin_khuylo (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.root_block_device (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.secondary_private_ips (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.source_dest_check (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_launch_group (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_price (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_type (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_valid_from (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_valid_until (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.subnet_id (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_complete.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_complete.var.tags (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.tenancy (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.timeouts (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.user_data (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.user_data_base64 (expand)" -> "[root] local.user_data (expand)"
+ "[root] module.ec2_complete.var.user_data_base64 (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.volume_tags (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_complete (expand)"
+ "[root] module.ec2_complete.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.arn (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_role_arn (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_role_name (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.instance_state (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.ipv6_addresses (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.outpost_arn (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.password_data (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.private_dns (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.private_ip (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.public_dns (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.public_ip (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.spot_bid_status (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.spot_instance_id (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.spot_request_state (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.output.tags_all (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.var.ami (expand)"
+ "[root] module.ec2_disabled (close)" -> "[root] module.ec2_disabled.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_disabled.aws_iam_role.this (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.local.iam_role_name (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_description (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_path (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_tags (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_disabled.aws_iam_role.this (expand)" -> "[root] module.ec2_disabled.var.tags (expand)"
+ "[root] module.ec2_disabled.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_disabled.aws_iam_role.this (expand)"
+ "[root] module.ec2_disabled.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_disabled.var.iam_role_policies (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.local.create (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.local.is_t_instance_type (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.availability_zone (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.cpu_core_count (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.cpu_credits (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.create_spot_instance (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.disable_api_stop (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.disable_api_termination (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.ebs_block_device (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.ebs_optimized (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.enable_volume_tags (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.get_password_data (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.hibernation (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.host_id (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.iam_instance_profile (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.ipv6_address_count (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.ipv6_addresses (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.key_name (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.launch_template (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.maintenance_options (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.metadata_options (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.monitoring (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.network_interface (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.placement_group (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.private_ip (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.root_block_device (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.secondary_private_ips (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.source_dest_check (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.subnet_id (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.tenancy (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.timeouts (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.user_data (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.user_data_base64 (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.volume_tags (expand)"
+ "[root] module.ec2_disabled.aws_instance.this (expand)" -> "[root] module.ec2_disabled.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.local.create (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.local.is_t_instance_type (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.availability_zone (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.cpu_core_count (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.cpu_credits (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.create_spot_instance (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.disable_api_termination (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.ebs_block_device (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.ebs_optimized (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.enable_volume_tags (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.get_password_data (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.hibernation (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.host_id (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.iam_instance_profile (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.ipv6_address_count (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.ipv6_addresses (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.key_name (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.launch_template (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.metadata_options (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.monitoring (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.network_interface (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.placement_group (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.private_ip (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.root_block_device (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.secondary_private_ips (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.source_dest_check (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_launch_group (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_price (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_type (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_valid_from (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_valid_until (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.subnet_id (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.tenancy (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.timeouts (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.user_data (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.user_data_base64 (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.volume_tags (expand)"
+ "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_disabled.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_disabled.data.aws_partition.current (expand)"
+ "[root] module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_disabled.var.create (expand)"
+ "[root] module.ec2_disabled.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_disabled.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_disabled.data.aws_partition.current (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_disabled.local.create (expand)" -> "[root] module.ec2_disabled.var.create (expand)"
+ "[root] module.ec2_disabled.local.create (expand)" -> "[root] module.ec2_disabled.var.putin_khuylo (expand)"
+ "[root] module.ec2_disabled.local.iam_role_name (expand)" -> "[root] module.ec2_disabled.var.iam_role_name (expand)"
+ "[root] module.ec2_disabled.local.iam_role_name (expand)" -> "[root] module.ec2_disabled.var.name (expand)"
+ "[root] module.ec2_disabled.local.is_t_instance_type (expand)" -> "[root] module.ec2_disabled.var.instance_type (expand)"
+ "[root] module.ec2_disabled.output.arn (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.arn (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_disabled.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_disabled.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_disabled.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_disabled.output.iam_role_arn (expand)" -> "[root] module.ec2_disabled.aws_iam_role.this (expand)"
+ "[root] module.ec2_disabled.output.iam_role_name (expand)" -> "[root] module.ec2_disabled.aws_iam_role.this (expand)"
+ "[root] module.ec2_disabled.output.iam_role_unique_id (expand)" -> "[root] module.ec2_disabled.aws_iam_role.this (expand)"
+ "[root] module.ec2_disabled.output.id (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.id (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.instance_state (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.instance_state (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.ipv6_addresses (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.outpost_arn (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.outpost_arn (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.password_data (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.password_data (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.primary_network_interface_id (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.primary_network_interface_id (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.private_dns (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.private_dns (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.private_ip (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.private_ip (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.public_dns (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.public_dns (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.public_ip (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.public_ip (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.spot_bid_status (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.spot_instance_id (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.spot_request_state (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.output.tags_all (expand)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] module.ec2_disabled.output.tags_all (expand)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_disabled.var.ami (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.associate_public_ip_address (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.availability_zone (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.cpu_core_count (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.cpu_credits (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.create (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.create_spot_instance (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.disable_api_stop (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.disable_api_termination (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ebs_block_device (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ebs_optimized (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.enable_volume_tags (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.enclave_options_enabled (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ephemeral_block_device (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.get_password_data (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.hibernation (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.host_id (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_instance_profile (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_description (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_name (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_path (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_policies (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_tags (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.instance_type (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ipv6_address_count (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.ipv6_addresses (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.key_name (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.launch_template (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.maintenance_options (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.metadata_options (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.monitoring (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.name (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.network_interface (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.placement_group (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.private_ip (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.putin_khuylo (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.root_block_device (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.secondary_private_ips (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.source_dest_check (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_launch_group (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_price (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_type (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_valid_from (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_valid_until (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.subnet_id (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.tags (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.tenancy (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.timeouts (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.user_data (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.user_data_base64 (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.volume_tags (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_disabled.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_disabled (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.arn (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_role_arn (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_role_name (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.id (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.instance_state (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.ipv6_addresses (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.outpost_arn (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.password_data (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.private_dns (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.private_ip (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.public_dns (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.public_ip (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.spot_bid_status (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.spot_instance_id (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.spot_request_state (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.output.tags_all (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.var.ami (expand)"
+ "[root] module.ec2_metadata_options (close)" -> "[root] module.ec2_metadata_options.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_metadata_options.aws_iam_role.this (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.local.iam_role_name (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_description (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_path (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_tags (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role.this (expand)" -> "[root] module.ec2_metadata_options.var.tags (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_metadata_options.aws_iam_role.this (expand)"
+ "[root] module.ec2_metadata_options.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_policies (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.local.create (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.local.is_t_instance_type (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.availability_zone (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_core_count (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_credits (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.create_spot_instance (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.disable_api_stop (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.disable_api_termination (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.ebs_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.ebs_optimized (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.enable_volume_tags (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.get_password_data (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.hibernation (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.host_id (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_instance_profile (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.ipv6_address_count (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.ipv6_addresses (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.key_name (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.launch_template (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.maintenance_options (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.metadata_options (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.monitoring (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.network_interface (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.placement_group (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.private_ip (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.root_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.secondary_private_ips (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.source_dest_check (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.subnet_id (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.tenancy (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.timeouts (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data_base64 (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.volume_tags (expand)"
+ "[root] module.ec2_metadata_options.aws_instance.this (expand)" -> "[root] module.ec2_metadata_options.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.local.create (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.local.is_t_instance_type (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.availability_zone (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_core_count (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_credits (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.create_spot_instance (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.disable_api_termination (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.ebs_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.ebs_optimized (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.enable_volume_tags (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.get_password_data (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.hibernation (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.host_id (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.iam_instance_profile (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.ipv6_address_count (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.ipv6_addresses (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.key_name (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.launch_template (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.metadata_options (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.monitoring (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.network_interface (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.placement_group (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.private_ip (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.root_block_device (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.secondary_private_ips (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.source_dest_check (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_launch_group (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_price (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_type (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_valid_from (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_valid_until (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.subnet_id (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.tenancy (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.timeouts (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data_base64 (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.volume_tags (expand)"
+ "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_metadata_options.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_metadata_options.data.aws_partition.current (expand)"
+ "[root] module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_metadata_options.var.create (expand)"
+ "[root] module.ec2_metadata_options.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_metadata_options.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_metadata_options.data.aws_partition.current (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_metadata_options.local.create (expand)" -> "[root] module.ec2_metadata_options.var.create (expand)"
+ "[root] module.ec2_metadata_options.local.create (expand)" -> "[root] module.ec2_metadata_options.var.putin_khuylo (expand)"
+ "[root] module.ec2_metadata_options.local.iam_role_name (expand)" -> "[root] module.ec2_metadata_options.var.iam_role_name (expand)"
+ "[root] module.ec2_metadata_options.local.iam_role_name (expand)" -> "[root] module.ec2_metadata_options.var.name (expand)"
+ "[root] module.ec2_metadata_options.local.is_t_instance_type (expand)" -> "[root] module.ec2_metadata_options.var.instance_type (expand)"
+ "[root] module.ec2_metadata_options.output.arn (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.arn (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_metadata_options.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_role_arn (expand)" -> "[root] module.ec2_metadata_options.aws_iam_role.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_role_name (expand)" -> "[root] module.ec2_metadata_options.aws_iam_role.this (expand)"
+ "[root] module.ec2_metadata_options.output.iam_role_unique_id (expand)" -> "[root] module.ec2_metadata_options.aws_iam_role.this (expand)"
+ "[root] module.ec2_metadata_options.output.id (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.id (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.instance_state (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.instance_state (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.ipv6_addresses (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.outpost_arn (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.outpost_arn (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.password_data (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.password_data (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.primary_network_interface_id (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.primary_network_interface_id (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.private_dns (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.private_dns (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.private_ip (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.private_ip (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.public_dns (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.public_dns (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.public_ip (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.public_ip (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.spot_bid_status (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.spot_instance_id (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.spot_request_state (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.output.tags_all (expand)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] module.ec2_metadata_options.output.tags_all (expand)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_metadata_options.var.ami (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.associate_public_ip_address (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.availability_zone (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.cpu_core_count (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.cpu_credits (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.create (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.create_spot_instance (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.disable_api_stop (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.disable_api_termination (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ebs_block_device (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ebs_optimized (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.enable_volume_tags (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.enclave_options_enabled (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ephemeral_block_device (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.get_password_data (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.hibernation (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.host_id (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_instance_profile (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_description (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_name (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_path (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_policies (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_tags (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.instance_type (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ipv6_address_count (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.ipv6_addresses (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.key_name (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.launch_template (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.maintenance_options (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.metadata_options (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.monitoring (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_metadata_options.var.name (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.network_interface (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.placement_group (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.private_ip (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.putin_khuylo (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.root_block_device (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.secondary_private_ips (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.source_dest_check (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_launch_group (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_price (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_type (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_valid_from (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_valid_until (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.subnet_id (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_metadata_options.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_metadata_options.var.tags (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.tenancy (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.timeouts (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.user_data (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.user_data_base64 (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.volume_tags (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_metadata_options (expand)"
+ "[root] module.ec2_metadata_options.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.arn (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_role_arn (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_role_name (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.instance_state (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.ipv6_addresses (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.outpost_arn (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.password_data (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.private_dns (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.private_ip (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.public_dns (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.public_ip (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.spot_bid_status (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.spot_instance_id (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.spot_request_state (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.output.tags_all (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.var.ami (expand)"
+ "[root] module.ec2_multiple (close)" -> "[root] module.ec2_multiple.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_multiple (expand)" -> "[root] local.multiple_instances (expand)"
+ "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_multiple.aws_iam_role.this (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.local.iam_role_name (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_description (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_path (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_tags (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_multiple.aws_iam_role.this (expand)" -> "[root] module.ec2_multiple.var.tags (expand)"
+ "[root] module.ec2_multiple.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_multiple.aws_iam_role.this (expand)"
+ "[root] module.ec2_multiple.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_multiple.var.iam_role_policies (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.local.create (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.local.is_t_instance_type (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.availability_zone (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.cpu_core_count (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.cpu_credits (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.create_spot_instance (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.disable_api_stop (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.disable_api_termination (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.ebs_block_device (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.ebs_optimized (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.enable_volume_tags (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.get_password_data (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.hibernation (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.host_id (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.iam_instance_profile (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.ipv6_address_count (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.ipv6_addresses (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.key_name (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.launch_template (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.maintenance_options (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.metadata_options (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.monitoring (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.network_interface (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.placement_group (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.private_ip (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.root_block_device (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.secondary_private_ips (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.source_dest_check (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.subnet_id (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.tenancy (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.timeouts (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.user_data (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.user_data_base64 (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.volume_tags (expand)"
+ "[root] module.ec2_multiple.aws_instance.this (expand)" -> "[root] module.ec2_multiple.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.local.create (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.local.is_t_instance_type (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.availability_zone (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.cpu_core_count (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.cpu_credits (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.create_spot_instance (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.disable_api_termination (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.ebs_block_device (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.ebs_optimized (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.enable_volume_tags (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.get_password_data (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.hibernation (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.host_id (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.iam_instance_profile (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.ipv6_address_count (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.ipv6_addresses (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.key_name (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.launch_template (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.metadata_options (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.monitoring (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.network_interface (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.placement_group (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.private_ip (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.root_block_device (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.secondary_private_ips (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.source_dest_check (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_launch_group (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_price (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_type (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_valid_from (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_valid_until (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.subnet_id (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.tenancy (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.timeouts (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.user_data (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.user_data_base64 (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.volume_tags (expand)"
+ "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_multiple.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_multiple.data.aws_partition.current (expand)"
+ "[root] module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_multiple.var.create (expand)"
+ "[root] module.ec2_multiple.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_multiple.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_multiple.data.aws_partition.current (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.local.create (expand)" -> "[root] module.ec2_multiple.var.create (expand)"
+ "[root] module.ec2_multiple.local.create (expand)" -> "[root] module.ec2_multiple.var.putin_khuylo (expand)"
+ "[root] module.ec2_multiple.local.iam_role_name (expand)" -> "[root] module.ec2_multiple.var.iam_role_name (expand)"
+ "[root] module.ec2_multiple.local.iam_role_name (expand)" -> "[root] module.ec2_multiple.var.name (expand)"
+ "[root] module.ec2_multiple.local.is_t_instance_type (expand)" -> "[root] module.ec2_multiple.var.instance_type (expand)"
+ "[root] module.ec2_multiple.output.arn (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.arn (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_multiple.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_multiple.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_multiple.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_multiple.output.iam_role_arn (expand)" -> "[root] module.ec2_multiple.aws_iam_role.this (expand)"
+ "[root] module.ec2_multiple.output.iam_role_name (expand)" -> "[root] module.ec2_multiple.aws_iam_role.this (expand)"
+ "[root] module.ec2_multiple.output.iam_role_unique_id (expand)" -> "[root] module.ec2_multiple.aws_iam_role.this (expand)"
+ "[root] module.ec2_multiple.output.id (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.id (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.instance_state (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.instance_state (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.ipv6_addresses (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.outpost_arn (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.outpost_arn (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.password_data (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.password_data (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.primary_network_interface_id (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.primary_network_interface_id (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.private_dns (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.private_dns (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.private_ip (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.private_ip (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.public_dns (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.public_dns (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.public_ip (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.public_ip (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.spot_bid_status (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.spot_instance_id (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.spot_request_state (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.output.tags_all (expand)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] module.ec2_multiple.output.tags_all (expand)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_multiple.var.ami (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.associate_public_ip_address (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.availability_zone (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.cpu_core_count (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.cpu_credits (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.create (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.create_spot_instance (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.disable_api_stop (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.disable_api_termination (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ebs_block_device (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ebs_optimized (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.enable_volume_tags (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.enclave_options_enabled (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ephemeral_block_device (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.get_password_data (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.hibernation (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.host_id (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_instance_profile (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_description (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_name (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_path (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_policies (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_tags (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.instance_type (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ipv6_address_count (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.ipv6_addresses (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.key_name (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.launch_template (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.maintenance_options (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.metadata_options (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.monitoring (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.name (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.network_interface (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.placement_group (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.private_ip (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.putin_khuylo (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.root_block_device (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.secondary_private_ips (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.source_dest_check (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_launch_group (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_price (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_type (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_valid_from (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_valid_until (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.subnet_id (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.tags (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.tenancy (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.timeouts (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.user_data (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.user_data_base64 (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.volume_tags (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_multiple (expand)"
+ "[root] module.ec2_multiple.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.arn (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_role_arn (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_role_name (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.instance_state (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.ipv6_addresses (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.outpost_arn (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.password_data (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.private_dns (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.private_ip (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.public_dns (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.public_ip (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.spot_bid_status (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.spot_instance_id (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.spot_request_state (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.output.tags_all (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.var.ami (expand)"
+ "[root] module.ec2_network_interface (close)" -> "[root] module.ec2_network_interface.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_network_interface.aws_iam_role.this (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.local.iam_role_name (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_description (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_path (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_tags (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role.this (expand)" -> "[root] module.ec2_network_interface.var.tags (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_network_interface.aws_iam_role.this (expand)"
+ "[root] module.ec2_network_interface.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_network_interface.var.iam_role_policies (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.local.create (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.local.is_t_instance_type (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.availability_zone (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_core_count (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_credits (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.create_spot_instance (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.disable_api_stop (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.disable_api_termination (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.ebs_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.ebs_optimized (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.enable_volume_tags (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.get_password_data (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.hibernation (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.host_id (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.iam_instance_profile (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.ipv6_address_count (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.ipv6_addresses (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.key_name (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.launch_template (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.maintenance_options (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.metadata_options (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.monitoring (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.network_interface (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.placement_group (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.private_ip (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.root_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.secondary_private_ips (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.source_dest_check (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.subnet_id (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.tenancy (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.timeouts (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.user_data (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.user_data_base64 (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.volume_tags (expand)"
+ "[root] module.ec2_network_interface.aws_instance.this (expand)" -> "[root] module.ec2_network_interface.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.local.create (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.local.is_t_instance_type (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.availability_zone (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_core_count (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_credits (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.create_spot_instance (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.disable_api_termination (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.ebs_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.ebs_optimized (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.enable_volume_tags (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.get_password_data (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.hibernation (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.host_id (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.iam_instance_profile (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.ipv6_address_count (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.ipv6_addresses (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.key_name (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.launch_template (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.metadata_options (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.monitoring (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.network_interface (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.placement_group (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.private_ip (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.root_block_device (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.secondary_private_ips (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.source_dest_check (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_launch_group (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_price (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_type (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_valid_from (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_valid_until (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.subnet_id (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.tenancy (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.timeouts (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.user_data (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.user_data_base64 (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.volume_tags (expand)"
+ "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_network_interface.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_network_interface.data.aws_partition.current (expand)"
+ "[root] module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_network_interface.var.create (expand)"
+ "[root] module.ec2_network_interface.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_network_interface.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_network_interface.data.aws_partition.current (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_network_interface.local.create (expand)" -> "[root] module.ec2_network_interface.var.create (expand)"
+ "[root] module.ec2_network_interface.local.create (expand)" -> "[root] module.ec2_network_interface.var.putin_khuylo (expand)"
+ "[root] module.ec2_network_interface.local.iam_role_name (expand)" -> "[root] module.ec2_network_interface.var.iam_role_name (expand)"
+ "[root] module.ec2_network_interface.local.iam_role_name (expand)" -> "[root] module.ec2_network_interface.var.name (expand)"
+ "[root] module.ec2_network_interface.local.is_t_instance_type (expand)" -> "[root] module.ec2_network_interface.var.instance_type (expand)"
+ "[root] module.ec2_network_interface.output.arn (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.arn (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_network_interface.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_role_arn (expand)" -> "[root] module.ec2_network_interface.aws_iam_role.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_role_name (expand)" -> "[root] module.ec2_network_interface.aws_iam_role.this (expand)"
+ "[root] module.ec2_network_interface.output.iam_role_unique_id (expand)" -> "[root] module.ec2_network_interface.aws_iam_role.this (expand)"
+ "[root] module.ec2_network_interface.output.id (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.id (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.instance_state (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.instance_state (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.ipv6_addresses (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.outpost_arn (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.outpost_arn (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.password_data (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.password_data (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.primary_network_interface_id (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.primary_network_interface_id (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.private_dns (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.private_dns (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.private_ip (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.private_ip (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.public_dns (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.public_dns (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.public_ip (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.public_ip (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.spot_bid_status (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.spot_instance_id (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.spot_request_state (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.output.tags_all (expand)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] module.ec2_network_interface.output.tags_all (expand)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_network_interface.var.ami (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.associate_public_ip_address (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.availability_zone (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.cpu_core_count (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.cpu_credits (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.create (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.create_spot_instance (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.disable_api_stop (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.disable_api_termination (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ebs_block_device (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ebs_optimized (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.enable_volume_tags (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.enclave_options_enabled (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ephemeral_block_device (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.get_password_data (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.hibernation (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.host_id (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_instance_profile (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_description (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_name (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_path (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_policies (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_tags (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.instance_type (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ipv6_address_count (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.ipv6_addresses (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.key_name (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.launch_template (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.maintenance_options (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.metadata_options (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.monitoring (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_network_interface.var.name (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.network_interface (expand)" -> "[root] aws_network_interface.this (expand)"
+ "[root] module.ec2_network_interface.var.network_interface (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.placement_group (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.private_ip (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.putin_khuylo (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.root_block_device (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.secondary_private_ips (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.source_dest_check (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_launch_group (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_price (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_type (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_valid_from (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_valid_until (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.subnet_id (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_network_interface.var.tags (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.tenancy (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.timeouts (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.user_data (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.user_data_base64 (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.volume_tags (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_network_interface.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_network_interface (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.arn (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_role_arn (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_role_name (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.id (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.instance_state (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.ipv6_addresses (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.outpost_arn (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.password_data (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.private_dns (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.private_ip (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.public_dns (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.public_ip (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.spot_bid_status (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.spot_instance_id (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.spot_request_state (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.output.tags_all (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.var.ami (expand)"
+ "[root] module.ec2_open_capacity_reservation (close)" -> "[root] module.ec2_open_capacity_reservation.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.local.iam_role_name (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_description (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_path (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_policies (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.local.create (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.local.is_t_instance_type (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.availability_zone (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_core_count (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_credits (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.create_spot_instance (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.disable_api_stop (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.disable_api_termination (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ebs_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ebs_optimized (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.enable_volume_tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.get_password_data (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.hibernation (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.host_id (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_instance_profile (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ipv6_address_count (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ipv6_addresses (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.key_name (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.launch_template (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.maintenance_options (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.metadata_options (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.monitoring (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.network_interface (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.placement_group (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.private_ip (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.root_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.secondary_private_ips (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.source_dest_check (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.subnet_id (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.tenancy (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.timeouts (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data_base64 (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.volume_tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.local.create (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.local.is_t_instance_type (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.availability_zone (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_core_count (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_credits (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.create_spot_instance (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.disable_api_termination (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ebs_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ebs_optimized (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.enable_volume_tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.get_password_data (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.hibernation (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.host_id (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_instance_profile (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ipv6_address_count (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.ipv6_addresses (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.key_name (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.launch_template (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.metadata_options (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.monitoring (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.network_interface (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.placement_group (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.private_ip (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.root_block_device (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.secondary_private_ips (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.source_dest_check (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_launch_group (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_price (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_type (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_valid_from (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_valid_until (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.subnet_id (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.tenancy (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.timeouts (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data_base64 (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.volume_tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_open_capacity_reservation.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_open_capacity_reservation.data.aws_partition.current (expand)"
+ "[root] module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_open_capacity_reservation.var.create (expand)"
+ "[root] module.ec2_open_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_open_capacity_reservation.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_open_capacity_reservation.data.aws_partition.current (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_open_capacity_reservation.local.create (expand)" -> "[root] module.ec2_open_capacity_reservation.var.create (expand)"
+ "[root] module.ec2_open_capacity_reservation.local.create (expand)" -> "[root] module.ec2_open_capacity_reservation.var.putin_khuylo (expand)"
+ "[root] module.ec2_open_capacity_reservation.local.iam_role_name (expand)" -> "[root] module.ec2_open_capacity_reservation.var.iam_role_name (expand)"
+ "[root] module.ec2_open_capacity_reservation.local.iam_role_name (expand)" -> "[root] module.ec2_open_capacity_reservation.var.name (expand)"
+ "[root] module.ec2_open_capacity_reservation.local.is_t_instance_type (expand)" -> "[root] module.ec2_open_capacity_reservation.var.instance_type (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_role_arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_role_name (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.iam_role_unique_id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.instance_state (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.instance_state (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.ipv6_addresses (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.outpost_arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.outpost_arn (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.password_data (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.password_data (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.primary_network_interface_id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.primary_network_interface_id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.private_dns (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.private_dns (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.private_ip (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.private_ip (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.public_dns (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.public_dns (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.public_ip (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.public_ip (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.spot_bid_status (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.spot_instance_id (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.spot_request_state (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.tags_all (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.output.tags_all (expand)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ami (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.associate_public_ip_address (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.availability_zone (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.capacity_reservation_specification (expand)" -> "[root] aws_ec2_capacity_reservation.open (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.cpu_core_count (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.cpu_credits (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.create (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.create_spot_instance (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.disable_api_stop (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.disable_api_termination (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ebs_block_device (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ebs_optimized (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.enable_volume_tags (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.enclave_options_enabled (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ephemeral_block_device (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.get_password_data (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.hibernation (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.host_id (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_instance_profile (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_description (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_name (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_path (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_policies (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_tags (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.instance_type (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ipv6_address_count (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.ipv6_addresses (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.key_name (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.launch_template (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.maintenance_options (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.metadata_options (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.monitoring (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.name (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.network_interface (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.placement_group (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.private_ip (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.putin_khuylo (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.root_block_device (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.secondary_private_ips (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.source_dest_check (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_launch_group (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_price (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_type (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_valid_from (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_valid_until (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.subnet_id (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.tags (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.tenancy (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.timeouts (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.user_data (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.user_data_base64 (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.volume_tags (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_open_capacity_reservation (expand)"
+ "[root] module.ec2_open_capacity_reservation.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.arn (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_role_arn (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_role_name (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.instance_state (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.ipv6_addresses (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.outpost_arn (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.password_data (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.private_dns (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.private_ip (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.public_dns (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.public_ip (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.spot_bid_status (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.spot_instance_id (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.spot_request_state (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.output.tags_all (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.var.ami (expand)"
+ "[root] module.ec2_spot_instance (close)" -> "[root] module.ec2_spot_instance.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_spot_instance.aws_iam_role.this (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.local.iam_role_name (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_description (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_path (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_tags (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role.this (expand)" -> "[root] module.ec2_spot_instance.var.tags (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_spot_instance.aws_iam_role.this (expand)"
+ "[root] module.ec2_spot_instance.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_policies (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.local.create (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.local.is_t_instance_type (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.availability_zone (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_core_count (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_credits (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.create_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.disable_api_stop (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.disable_api_termination (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.ebs_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.ebs_optimized (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.enable_volume_tags (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.get_password_data (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.hibernation (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.host_id (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_instance_profile (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.ipv6_address_count (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.ipv6_addresses (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.key_name (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.launch_template (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.maintenance_options (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.metadata_options (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.monitoring (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.network_interface (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.placement_group (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.private_ip (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.root_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.secondary_private_ips (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.source_dest_check (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.subnet_id (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.tenancy (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.timeouts (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data_base64 (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.volume_tags (expand)"
+ "[root] module.ec2_spot_instance.aws_instance.this (expand)" -> "[root] module.ec2_spot_instance.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.local.create (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.local.is_t_instance_type (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.availability_zone (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_core_count (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_credits (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.create_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.disable_api_termination (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.ebs_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.ebs_optimized (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.enable_volume_tags (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.get_password_data (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.hibernation (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.host_id (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.iam_instance_profile (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.ipv6_address_count (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.ipv6_addresses (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.key_name (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.launch_template (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.metadata_options (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.monitoring (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.network_interface (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.placement_group (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.private_ip (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.root_block_device (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.secondary_private_ips (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.source_dest_check (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_launch_group (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_price (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_type (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_valid_from (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_valid_until (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.subnet_id (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.tenancy (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.timeouts (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data_base64 (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.volume_tags (expand)"
+ "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_spot_instance.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_spot_instance.data.aws_partition.current (expand)"
+ "[root] module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_spot_instance.var.create (expand)"
+ "[root] module.ec2_spot_instance.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_spot_instance.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_spot_instance.data.aws_partition.current (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_spot_instance.local.create (expand)" -> "[root] module.ec2_spot_instance.var.create (expand)"
+ "[root] module.ec2_spot_instance.local.create (expand)" -> "[root] module.ec2_spot_instance.var.putin_khuylo (expand)"
+ "[root] module.ec2_spot_instance.local.iam_role_name (expand)" -> "[root] module.ec2_spot_instance.var.iam_role_name (expand)"
+ "[root] module.ec2_spot_instance.local.iam_role_name (expand)" -> "[root] module.ec2_spot_instance.var.name (expand)"
+ "[root] module.ec2_spot_instance.local.is_t_instance_type (expand)" -> "[root] module.ec2_spot_instance.var.instance_type (expand)"
+ "[root] module.ec2_spot_instance.output.arn (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.arn (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_spot_instance.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_role_arn (expand)" -> "[root] module.ec2_spot_instance.aws_iam_role.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_role_name (expand)" -> "[root] module.ec2_spot_instance.aws_iam_role.this (expand)"
+ "[root] module.ec2_spot_instance.output.iam_role_unique_id (expand)" -> "[root] module.ec2_spot_instance.aws_iam_role.this (expand)"
+ "[root] module.ec2_spot_instance.output.id (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.id (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.instance_state (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.instance_state (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.ipv6_addresses (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.outpost_arn (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.outpost_arn (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.password_data (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.password_data (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.primary_network_interface_id (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.primary_network_interface_id (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.private_dns (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.private_dns (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.private_ip (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.private_ip (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.public_dns (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.public_dns (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.public_ip (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.public_ip (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.spot_bid_status (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.spot_instance_id (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.spot_request_state (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.output.tags_all (expand)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] module.ec2_spot_instance.output.tags_all (expand)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_spot_instance.var.ami (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.associate_public_ip_address (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.availability_zone (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.availability_zone (expand)" -> "[root] module.vpc.output.azs (expand)"
+ "[root] module.ec2_spot_instance.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.cpu_core_count (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.cpu_credits (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.create (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.create_spot_instance (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.disable_api_stop (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.disable_api_termination (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ebs_block_device (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ebs_optimized (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.enable_volume_tags (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.enclave_options_enabled (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ephemeral_block_device (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.get_password_data (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.hibernation (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.host_id (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_instance_profile (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_description (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_name (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_path (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_policies (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_tags (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.instance_type (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ipv6_address_count (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.ipv6_addresses (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.key_name (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.launch_template (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.maintenance_options (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.metadata_options (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.monitoring (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_spot_instance.var.name (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.network_interface (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.placement_group (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.private_ip (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.putin_khuylo (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.root_block_device (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.secondary_private_ips (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.source_dest_check (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_launch_group (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_price (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_type (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_valid_from (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_valid_until (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.subnet_id (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_spot_instance.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_spot_instance.var.tags (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.tenancy (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.timeouts (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.user_data (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.user_data_base64 (expand)" -> "[root] local.user_data (expand)"
+ "[root] module.ec2_spot_instance.var.user_data_base64 (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.volume_tags (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_spot_instance (expand)"
+ "[root] module.ec2_spot_instance.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.arn (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_role_arn (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_role_name (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.instance_state (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.ipv6_addresses (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.outpost_arn (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.password_data (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.private_dns (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.private_ip (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.public_dns (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.public_ip (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.spot_bid_status (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.spot_instance_id (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.spot_request_state (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.output.tags_all (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.var.ami (expand)"
+ "[root] module.ec2_t2_unlimited (close)" -> "[root] module.ec2_t2_unlimited.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.local.iam_role_name (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_description (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_path (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t2_unlimited.var.tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_policies (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.local.create (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.local.is_t_instance_type (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.availability_zone (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_core_count (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_credits (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.create_spot_instance (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.disable_api_stop (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.disable_api_termination (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ebs_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ebs_optimized (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.enable_volume_tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.get_password_data (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.hibernation (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.host_id (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_instance_profile (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ipv6_address_count (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ipv6_addresses (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.key_name (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.launch_template (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.maintenance_options (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.metadata_options (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.monitoring (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.network_interface (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.placement_group (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.private_ip (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.root_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.secondary_private_ips (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.source_dest_check (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.subnet_id (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.tenancy (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.timeouts (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data_base64 (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.volume_tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t2_unlimited.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.local.create (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.local.is_t_instance_type (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.availability_zone (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_core_count (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_credits (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.create_spot_instance (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.disable_api_termination (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ebs_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ebs_optimized (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.enable_volume_tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.get_password_data (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.hibernation (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.host_id (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_instance_profile (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ipv6_address_count (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.ipv6_addresses (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.key_name (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.launch_template (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.metadata_options (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.monitoring (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.network_interface (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.placement_group (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.private_ip (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.root_block_device (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.secondary_private_ips (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.source_dest_check (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_launch_group (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_price (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_type (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_valid_from (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_valid_until (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.subnet_id (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.tenancy (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.timeouts (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data_base64 (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.volume_tags (expand)"
+ "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t2_unlimited.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t2_unlimited.data.aws_partition.current (expand)"
+ "[root] module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t2_unlimited.var.create (expand)"
+ "[root] module.ec2_t2_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t2_unlimited.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_t2_unlimited.data.aws_partition.current (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_t2_unlimited.local.create (expand)" -> "[root] module.ec2_t2_unlimited.var.create (expand)"
+ "[root] module.ec2_t2_unlimited.local.create (expand)" -> "[root] module.ec2_t2_unlimited.var.putin_khuylo (expand)"
+ "[root] module.ec2_t2_unlimited.local.iam_role_name (expand)" -> "[root] module.ec2_t2_unlimited.var.iam_role_name (expand)"
+ "[root] module.ec2_t2_unlimited.local.iam_role_name (expand)" -> "[root] module.ec2_t2_unlimited.var.name (expand)"
+ "[root] module.ec2_t2_unlimited.local.is_t_instance_type (expand)" -> "[root] module.ec2_t2_unlimited.var.instance_type (expand)"
+ "[root] module.ec2_t2_unlimited.output.arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_role_arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_role_name (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.iam_role_unique_id (expand)" -> "[root] module.ec2_t2_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.id (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.id (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.instance_state (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.instance_state (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.ipv6_addresses (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.outpost_arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.outpost_arn (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.password_data (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.password_data (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.primary_network_interface_id (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.primary_network_interface_id (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.private_dns (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.private_dns (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.private_ip (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.private_ip (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.public_dns (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.public_dns (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.public_ip (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.public_ip (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.spot_bid_status (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.spot_instance_id (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.spot_request_state (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.tags_all (expand)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t2_unlimited.output.tags_all (expand)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t2_unlimited.var.ami (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.associate_public_ip_address (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.availability_zone (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.cpu_core_count (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.cpu_credits (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.create (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.create_spot_instance (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.disable_api_stop (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.disable_api_termination (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ebs_block_device (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ebs_optimized (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.enable_volume_tags (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.enclave_options_enabled (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ephemeral_block_device (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.get_password_data (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.hibernation (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.host_id (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_instance_profile (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_description (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_name (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_path (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_policies (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_tags (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.instance_type (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ipv6_address_count (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.ipv6_addresses (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.key_name (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.launch_template (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.maintenance_options (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.metadata_options (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.monitoring (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_t2_unlimited.var.name (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.network_interface (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.placement_group (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.private_ip (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.putin_khuylo (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.root_block_device (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.secondary_private_ips (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.source_dest_check (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_launch_group (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_price (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_type (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_valid_from (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_valid_until (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.subnet_id (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_t2_unlimited.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_t2_unlimited.var.tags (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.tenancy (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.timeouts (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.user_data (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.user_data_base64 (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.volume_tags (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_t2_unlimited (expand)"
+ "[root] module.ec2_t2_unlimited.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.arn (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_role_arn (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_role_name (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.instance_state (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.ipv6_addresses (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.outpost_arn (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.password_data (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.private_dns (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.private_ip (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.public_dns (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.public_ip (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.spot_bid_status (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.spot_instance_id (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.spot_request_state (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.output.tags_all (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.var.ami (expand)"
+ "[root] module.ec2_t3_unlimited (close)" -> "[root] module.ec2_t3_unlimited.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.local.iam_role_name (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_description (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_path (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)" -> "[root] module.ec2_t3_unlimited.var.tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_policies (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.local.create (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.local.is_t_instance_type (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.availability_zone (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_core_count (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_credits (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.create_spot_instance (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.disable_api_stop (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.disable_api_termination (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ebs_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ebs_optimized (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.enable_volume_tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.get_password_data (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.hibernation (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.host_id (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_instance_profile (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ipv6_address_count (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ipv6_addresses (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.key_name (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.launch_template (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.maintenance_options (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.metadata_options (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.monitoring (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.network_interface (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.placement_group (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.private_ip (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.root_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.secondary_private_ips (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.source_dest_check (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.subnet_id (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.tenancy (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.timeouts (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data_base64 (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.volume_tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_instance.this (expand)" -> "[root] module.ec2_t3_unlimited.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.local.create (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.local.is_t_instance_type (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.availability_zone (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_core_count (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_credits (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.create_spot_instance (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.disable_api_termination (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ebs_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ebs_optimized (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.enable_volume_tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.get_password_data (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.hibernation (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.host_id (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_instance_profile (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ipv6_address_count (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.ipv6_addresses (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.key_name (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.launch_template (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.metadata_options (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.monitoring (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.network_interface (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.placement_group (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.private_ip (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.root_block_device (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.secondary_private_ips (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.source_dest_check (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_launch_group (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_price (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_type (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_valid_from (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_valid_until (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.subnet_id (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.tenancy (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.timeouts (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data_base64 (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.volume_tags (expand)"
+ "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_t3_unlimited.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t3_unlimited.data.aws_partition.current (expand)"
+ "[root] module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t3_unlimited.var.create (expand)"
+ "[root] module.ec2_t3_unlimited.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_t3_unlimited.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_t3_unlimited.data.aws_partition.current (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_t3_unlimited.local.create (expand)" -> "[root] module.ec2_t3_unlimited.var.create (expand)"
+ "[root] module.ec2_t3_unlimited.local.create (expand)" -> "[root] module.ec2_t3_unlimited.var.putin_khuylo (expand)"
+ "[root] module.ec2_t3_unlimited.local.iam_role_name (expand)" -> "[root] module.ec2_t3_unlimited.var.iam_role_name (expand)"
+ "[root] module.ec2_t3_unlimited.local.iam_role_name (expand)" -> "[root] module.ec2_t3_unlimited.var.name (expand)"
+ "[root] module.ec2_t3_unlimited.local.is_t_instance_type (expand)" -> "[root] module.ec2_t3_unlimited.var.instance_type (expand)"
+ "[root] module.ec2_t3_unlimited.output.arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_role_arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_role_name (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.iam_role_unique_id (expand)" -> "[root] module.ec2_t3_unlimited.aws_iam_role.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.id (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.id (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.instance_state (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.instance_state (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.ipv6_addresses (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.outpost_arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.outpost_arn (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.password_data (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.password_data (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.primary_network_interface_id (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.primary_network_interface_id (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.private_dns (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.private_dns (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.private_ip (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.private_ip (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.public_dns (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.public_dns (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.public_ip (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.public_ip (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.spot_bid_status (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.spot_instance_id (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.spot_request_state (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.tags_all (expand)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] module.ec2_t3_unlimited.output.tags_all (expand)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_t3_unlimited.var.ami (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.associate_public_ip_address (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.availability_zone (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.cpu_core_count (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.cpu_credits (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.create (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.create_spot_instance (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.disable_api_stop (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.disable_api_termination (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ebs_block_device (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ebs_optimized (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.enable_volume_tags (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.enclave_options_enabled (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ephemeral_block_device (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.get_password_data (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.hibernation (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.host_id (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_instance_profile (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_description (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_name (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_path (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_policies (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_tags (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.instance_type (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ipv6_address_count (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.ipv6_addresses (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.key_name (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.launch_template (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.maintenance_options (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.metadata_options (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.monitoring (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_t3_unlimited.var.name (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.network_interface (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.placement_group (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.private_ip (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.putin_khuylo (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.root_block_device (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.secondary_private_ips (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.source_dest_check (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_launch_group (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_price (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_type (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_valid_from (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_valid_until (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.subnet_id (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_t3_unlimited.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_t3_unlimited.var.tags (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.tenancy (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.timeouts (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.user_data (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.user_data_base64 (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.volume_tags (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_t3_unlimited (expand)"
+ "[root] module.ec2_t3_unlimited.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.arn (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.capacity_reservation_specification (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_arn (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_unique (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_role_arn (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_role_name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.iam_role_unique_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.instance_state (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.ipv6_addresses (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.outpost_arn (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.password_data (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.primary_network_interface_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.private_dns (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.private_ip (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.public_dns (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.public_ip (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.spot_bid_status (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.spot_instance_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.spot_request_state (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.output.tags_all (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.var.ami (expand)"
+ "[root] module.ec2_targeted_capacity_reservation (close)" -> "[root] module.ec2_targeted_capacity_reservation.var.ami_ssm_parameter (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.local.iam_role_name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_description (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_path (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_permissions_boundary (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_use_name_prefix (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_policies (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.local.create (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.local.is_t_instance_type (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.availability_zone (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_core_count (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_credits (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.create_spot_instance (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.disable_api_stop (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.disable_api_termination (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ebs_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ebs_optimized (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.enable_volume_tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.get_password_data (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.hibernation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.host_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_instance_profile (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ipv6_address_count (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ipv6_addresses (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.key_name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.launch_template (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.maintenance_options (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.metadata_options (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.monitoring (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.network_interface (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.placement_group (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.private_ip (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.root_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.secondary_private_ips (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.source_dest_check (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.subnet_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.tenancy (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.timeouts (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data_base64 (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.volume_tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.local.create (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.local.is_t_instance_type (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.associate_public_ip_address (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.availability_zone (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.capacity_reservation_specification (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_core_count (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_credits (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.cpu_threads_per_core (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.create_spot_instance (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.disable_api_termination (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ebs_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ebs_optimized (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.enable_volume_tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.enclave_options_enabled (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ephemeral_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.get_password_data (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.hibernation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.host_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_instance_profile (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ipv6_address_count (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.ipv6_addresses (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.key_name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.launch_template (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.metadata_options (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.monitoring (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.network_interface (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.placement_group (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.private_ip (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.root_block_device (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.secondary_private_ips (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.source_dest_check (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_block_duration_minutes (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_instance_interruption_behavior (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_launch_group (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_price (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_type (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_valid_from (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_valid_until (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.spot_wait_for_fulfillment (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.subnet_id (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.tenancy (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.timeouts (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data_base64 (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.user_data_replace_on_change (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.volume_tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.vpc_security_group_ids (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_targeted_capacity_reservation.data.aws_partition.current (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.create (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_iam_policy_document.assume_role_policy (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.create_iam_instance_profile (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_partition.current (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.ec2_targeted_capacity_reservation.local.create (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.create (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.local.create (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.putin_khuylo (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.local.iam_role_name (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.iam_role_name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.local.iam_role_name (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.local.is_t_instance_type (expand)" -> "[root] module.ec2_targeted_capacity_reservation.var.instance_type (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.capacity_reservation_specification (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_instance_profile_unique (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_role_arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_role_name (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.iam_role_unique_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.instance_state (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.instance_state (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.ipv6_addresses (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.outpost_arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.outpost_arn (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.password_data (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.password_data (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.primary_network_interface_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.primary_network_interface_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.private_dns (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.private_dns (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.private_ip (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.private_ip (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.public_dns (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.public_dns (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.public_ip (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.public_ip (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.spot_bid_status (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.spot_instance_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.spot_request_state (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.tags_all (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.output.tags_all (expand)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ami (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ami_ssm_parameter (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.associate_public_ip_address (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.availability_zone (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.capacity_reservation_specification (expand)" -> "[root] aws_ec2_capacity_reservation.targeted (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.capacity_reservation_specification (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.cpu_core_count (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.cpu_credits (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.cpu_threads_per_core (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.create (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.create_iam_instance_profile (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.create_spot_instance (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.disable_api_stop (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.disable_api_termination (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ebs_block_device (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ebs_optimized (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.enable_volume_tags (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.enclave_options_enabled (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ephemeral_block_device (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.get_password_data (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.hibernation (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.host_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_instance_profile (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_description (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_name (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_path (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_permissions_boundary (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_policies (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_tags (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.iam_role_use_name_prefix (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.instance_initiated_shutdown_behavior (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.instance_type (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ipv6_address_count (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.ipv6_addresses (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.key_name (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.launch_template (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.maintenance_options (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.metadata_options (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.monitoring (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.name (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.network_interface (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.placement_group (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.private_ip (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.putin_khuylo (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.root_block_device (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.secondary_private_ips (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.source_dest_check (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_block_duration_minutes (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_instance_interruption_behavior (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_launch_group (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_price (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_type (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_valid_from (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_valid_until (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.spot_wait_for_fulfillment (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.subnet_id (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.subnet_id (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.tags (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.tenancy (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.timeouts (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.user_data (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.user_data_base64 (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.user_data_replace_on_change (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.volume_tags (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.vpc_security_group_ids (expand)" -> "[root] module.ec2_targeted_capacity_reservation (expand)"
+ "[root] module.ec2_targeted_capacity_reservation.var.vpc_security_group_ids (expand)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.egress_rules (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_arn (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_description (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_name (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_owner_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.output.security_group_vpc_id (expand)"
+ "[root] module.security_group (close)" -> "[root] module.security_group.var.auto_groups (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.local.create (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.create_sg (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.create_timeout (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.delete_timeout (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.description (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.name (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.revoke_rules_on_delete (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.tags (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.use_name_prefix (expand)"
+ "[root] module.security_group.aws_security_group.this (expand)" -> "[root] module.security_group.var.vpc_id (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.local.create (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.create_sg (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.create_timeout (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.delete_timeout (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.description (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.name (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.revoke_rules_on_delete (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.tags (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.use_name_prefix (expand)"
+ "[root] module.security_group.aws_security_group.this_name_prefix (expand)" -> "[root] module.security_group.var.vpc_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.computed_egress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.egress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.egress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.number_of_computed_egress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.computed_egress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.number_of_computed_egress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.computed_egress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.number_of_computed_egress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" -> "[root] module.security_group.var.computed_egress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" -> "[root] module.security_group.var.number_of_computed_egress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.computed_egress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.number_of_computed_egress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.computed_ingress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.ingress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.ingress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.number_of_computed_ingress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.computed_ingress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.number_of_computed_ingress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.computed_ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.number_of_computed_ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" -> "[root] module.security_group.var.computed_ingress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" -> "[root] module.security_group.var.number_of_computed_ingress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.computed_ingress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.number_of_computed_ingress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.var.egress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.var.egress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.var.egress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_rules (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.egress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)" -> "[root] module.security_group.var.egress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.egress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.egress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.var.ingress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.var.ingress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.var.ingress_rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_with_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)" -> "[root] module.security_group.var.ingress_with_self (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.local.this_sg_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.ingress_prefix_list_ids (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.ingress_with_source_security_group_id (expand)"
+ "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)" -> "[root] module.security_group.var.rules (expand)"
+ "[root] module.security_group.local.create (expand)" -> "[root] module.security_group.var.create (expand)"
+ "[root] module.security_group.local.create (expand)" -> "[root] module.security_group.var.putin_khuylo (expand)"
+ "[root] module.security_group.local.this_sg_id (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.local.this_sg_id (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.local.this_sg_id (expand)" -> "[root] module.security_group.var.security_group_id (expand)"
+ "[root] module.security_group.output.security_group_arn (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_arn (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.output.security_group_description (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_description (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.output.security_group_id (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_id (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.output.security_group_name (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_name (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.output.security_group_owner_id (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_owner_id (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.output.security_group_vpc_id (expand)" -> "[root] module.security_group.aws_security_group.this (expand)"
+ "[root] module.security_group.output.security_group_vpc_id (expand)" -> "[root] module.security_group.aws_security_group.this_name_prefix (expand)"
+ "[root] module.security_group.var.auto_groups (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_egress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_egress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_ingress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_ingress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.create (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.create_sg (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.create_timeout (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.delete_timeout (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.description (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_prefix_list_ids (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.egress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_prefix_list_ids (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.ingress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.security_group.var.name (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_egress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_egress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_egress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_egress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_egress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_ingress_rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_ingress_with_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_ingress_with_ipv6_cidr_blocks (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_ingress_with_self (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.number_of_computed_ingress_with_source_security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.putin_khuylo (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.revoke_rules_on_delete (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.rules (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.security_group_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.security_group.var.tags (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.use_name_prefix (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.vpc_id (expand)" -> "[root] module.security_group (expand)"
+ "[root] module.security_group.var.vpc_id (expand)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_network_acl.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_route_table.default (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_security_group.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_route_table_association.outpost (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.azs (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.cgw_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.cgw_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_internet_gateway_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_ipv6_egress_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_nat_gateway_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_group_name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_security_group_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_security_group_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_enable_dns_support (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_instance_tenancy (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_main_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.dhcp_options_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.egress_only_internet_gateway_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_group_name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.igw_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.igw_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.nat_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.nat_public_ips (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.natgw_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_ipv6_egress_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_nat_gateway_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_internet_gateway_ipv6_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_internet_gateway_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_public_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.this_customer_gateway (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vgw_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vgw_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_enable_dns_support (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_cloudwatch_iam_role_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_destination_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_destination_type (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_instance_tenancy (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_ipv6_association_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_ipv6_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_main_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_owner_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_secondary_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.var.default_vpc_enable_classiclink (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.var.enable_classiclink (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.var.enable_classiclink_dns_support (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.local.flow_log_cloudwatch_log_group_name_suffix (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_kms_key_id (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_prefix (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_retention_in_days (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.customer_gateway_tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.customer_gateways (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.create_database_subnet_group (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.database_subnet_group_name (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.database_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_egress (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_ingress (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_name (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_tags (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.manage_default_network_acl (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_name (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_propagating_vgws (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_routes (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_tags (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.manage_default_route_table (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_egress (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_ingress (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_name (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_tags (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.manage_default_security_group (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_enable_dns_support (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_name (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_tags (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.manage_default_vpc (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.local.max_subnet_length (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.var.create_egress_only_igw (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.var.igw_tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.local.nat_gateway_count (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.enable_nat_gateway (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.nat_eip_tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.reuse_nat_ips (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.create_elasticache_subnet_group (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_group_name (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.local.flow_log_destination_arn (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.local.flow_log_iam_role_arn (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_file_format (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_hive_compatible_partitions (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_log_format (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_max_aggregation_interval (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_per_hour_partition (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_traffic_type (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_permissions_boundary (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.create_igw (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.igw_tags (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.local.nat_gateway_ips (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.var.nat_gateway_tags (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.var.database_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.var.database_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.var.elasticache_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.var.elasticache_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.var.intra_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.var.intra_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.var.outpost_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.var.outpost_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.var.private_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.var.private_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.var.public_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.var.public_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.var.redshift_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.var.redshift_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" -> "[root] module.vpc.var.database_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" -> "[root] module.vpc.var.database_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" -> "[root] module.vpc.var.elasticache_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" -> "[root] module.vpc.var.elasticache_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" -> "[root] module.vpc.var.intra_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" -> "[root] module.vpc.var.intra_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" -> "[root] module.vpc.var.outpost_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" -> "[root] module.vpc.var.outpost_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" -> "[root] module.vpc.var.private_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" -> "[root] module.vpc.var.private_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" -> "[root] module.vpc.var.public_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" -> "[root] module.vpc.var.public_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" -> "[root] module.vpc.var.redshift_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" -> "[root] module.vpc.var.redshift_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.create_redshift_subnet_group (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_group_name (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.var.create_database_nat_gateway_route (expand)"
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.var.create_database_nat_gateway_route (expand)"
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.var.nat_gateway_destination_cidr_block (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.create_database_internet_gateway_route (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.create_database_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.create_elasticache_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_subnets (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.local.nat_gateway_count (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.var.private_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.var.private_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.create_redshift_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_route_table.elasticache (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_route_table_association.intra (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.aws_route_table_association.intra (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.aws_route_table_association.private (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.private (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.aws_route_table_association.public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table_association.public (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnets (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_arn (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_az (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnets (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_tags_per_az (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnets (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.map_public_ip_on_launch (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.one_nat_gateway_per_az (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_tags_per_az (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_names (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.cidr (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_dns_hostnames (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_dns_support (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_ipv6 (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.instance_tenancy (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.ipv4_ipam_pool_id (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.ipv4_netmask_length (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.ipv6_cidr (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.ipv6_ipam_pool_id (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.ipv6_netmask_length (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.use_ipam_pool (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.vpc_tags (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_domain_name (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_domain_name_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_netbios_name_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_netbios_node_type (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_ntp_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_tags (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.enable_dhcp_options (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" -> "[root] module.vpc.aws_vpc_dhcp_options.this (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" -> "[root] module.vpc.var.secondary_cidr_blocks (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.amazon_side_asn (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.enable_vpn_gateway (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.vpn_gateway_az (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.vpn_gateway_tags (expand)"
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" -> "[root] module.vpc.var.vpn_gateway_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.var.propagate_intra_route_tables_vgw (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.var.propagate_private_route_tables_vgw (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.var.propagate_public_route_tables_vgw (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.local.enable_flow_log (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.var.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.local.enable_flow_log (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.var.create_flow_log_cloudwatch_log_group (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.local.create_vpc (expand)" -> "[root] module.vpc.var.create_vpc (expand)"
+ "[root] module.vpc.local.create_vpc (expand)" -> "[root] module.vpc.var.putin_khuylo (expand)"
+ "[root] module.vpc.local.enable_flow_log (expand)" -> "[root] module.vpc.var.create_vpc (expand)"
+ "[root] module.vpc.local.enable_flow_log (expand)" -> "[root] module.vpc.var.enable_flow_log (expand)"
+ "[root] module.vpc.local.flow_log_cloudwatch_log_group_name_suffix (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.local.flow_log_cloudwatch_log_group_name_suffix (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_suffix (expand)"
+ "[root] module.vpc.local.flow_log_destination_arn (expand)" -> "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)"
+ "[root] module.vpc.local.flow_log_destination_arn (expand)" -> "[root] module.vpc.var.flow_log_destination_arn (expand)"
+ "[root] module.vpc.local.flow_log_iam_role_arn (expand)" -> "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.local.flow_log_iam_role_arn (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_iam_role_arn (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.private_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.local.max_subnet_length (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.one_nat_gateway_per_az (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.local.nat_gateway_ips (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.local.nat_gateway_ips (expand)" -> "[root] module.vpc.var.external_nat_ip_ids (expand)"
+ "[root] module.vpc.local.vpc_id (expand)" -> "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)"
+ "[root] module.vpc.output.azs (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.output.cgw_arns (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.cgw_ids (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.database_internet_gateway_route_id (expand)" -> "[root] module.vpc.aws_route.database_internet_gateway (expand)"
+ "[root] module.vpc.output.database_ipv6_egress_route_id (expand)" -> "[root] module.vpc.aws_route.database_ipv6_egress (expand)"
+ "[root] module.vpc.output.database_nat_gateway_route_ids (expand)" -> "[root] module.vpc.aws_route.database_nat_gateway (expand)"
+ "[root] module.vpc.output.database_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.output.database_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.output.database_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.database (expand)"
+ "[root] module.vpc.output.database_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.output.database_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.database_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnet_group (expand)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] module.vpc.output.database_subnet_group_name (expand)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] module.vpc.output.database_subnets (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.default_network_acl_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_route_table_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_security_group_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_arn (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_cidr_block (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_network_acl_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_route_table_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_security_group_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_enable_dns_support (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_instance_tenancy (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_main_route_table_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.dhcp_options_id (expand)" -> "[root] module.vpc.aws_vpc_dhcp_options.this (expand)"
+ "[root] module.vpc.output.egress_only_internet_gateway_id (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.output.elasticache_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.elasticache_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnet_group (expand)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnet_group_name (expand)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.igw_arn (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.output.igw_id (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.output.intra_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.output.intra_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.output.intra_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.intra (expand)"
+ "[root] module.vpc.output.intra_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.output.intra_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.name (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.output.nat_ids (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.output.nat_public_ips (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.output.nat_public_ips (expand)" -> "[root] module.vpc.var.external_nat_ips (expand)"
+ "[root] module.vpc.output.natgw_ids (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.output.outpost_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.output.outpost_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.private_ipv6_egress_route_ids (expand)" -> "[root] module.vpc.aws_route.private_ipv6_egress (expand)"
+ "[root] module.vpc.output.private_nat_gateway_route_ids (expand)" -> "[root] module.vpc.aws_route.private_nat_gateway (expand)"
+ "[root] module.vpc.output.private_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.output.private_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.output.private_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.private (expand)"
+ "[root] module.vpc.output.private_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.private_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.public_internet_gateway_ipv6_route_id (expand)" -> "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)"
+ "[root] module.vpc.output.public_internet_gateway_route_id (expand)" -> "[root] module.vpc.aws_route.public_internet_gateway (expand)"
+ "[root] module.vpc.output.public_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.output.public_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.output.public_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.public (expand)"
+ "[root] module.vpc.output.public_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.output.public_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.redshift_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.output.redshift_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.output.redshift_public_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.redshift_public (expand)"
+ "[root] module.vpc.output.redshift_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.redshift (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.output.redshift_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnet_group (expand)" -> "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.this_customer_gateway (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_arn (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_id (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_id (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.output.vpc_arn (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_cidr_block (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_enable_dns_support (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_flow_log_cloudwatch_iam_role_arn (expand)" -> "[root] module.vpc.local.flow_log_iam_role_arn (expand)"
+ "[root] module.vpc.output.vpc_flow_log_destination_arn (expand)" -> "[root] module.vpc.local.flow_log_destination_arn (expand)"
+ "[root] module.vpc.output.vpc_flow_log_destination_type (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.output.vpc_flow_log_id (expand)" -> "[root] module.vpc.aws_flow_log.this (expand)"
+ "[root] module.vpc.output.vpc_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_instance_tenancy (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_ipv6_association_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_ipv6_cidr_block (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_main_route_table_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_owner_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_secondary_cidr_blocks (expand)" -> "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)"
+ "[root] module.vpc.var.amazon_side_asn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.azs (expand)" -> "[root] local.region (expand)"
+ "[root] module.vpc.var.azs (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.cidr (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_internet_gateway_route (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_nat_gateway_route (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_egress_only_igw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_elasticache_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_elasticache_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_igw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_redshift_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_redshift_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_vpc (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.customer_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.customer_gateways (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_egress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_ingress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_propagating_vgws (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_routes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_egress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_ingress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_classiclink (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_domain_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_domain_name_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_netbios_name_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_netbios_node_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_ntp_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_classiclink (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_classiclink_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dhcp_options (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dns_hostnames (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_flow_log (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_ipv6 (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_nat_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_public_redshift (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_vpn_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.external_nat_ip_ids (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.external_nat_ips (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_iam_role_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_kms_key_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_prefix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_retention_in_days (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_destination_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_destination_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_file_format (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_hive_compatible_partitions (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_log_format (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_max_aggregation_interval (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_per_hour_partition (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_traffic_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.igw_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.instance_tenancy (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.ipv4_ipam_pool_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.ipv4_netmask_length (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.ipv6_cidr (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.ipv6_ipam_pool_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.ipv6_netmask_length (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_security_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_vpc (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.map_public_ip_on_launch (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.name (expand)" -> "[root] local.name (expand)"
+ "[root] module.vpc.var.name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.nat_eip_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.nat_gateway_destination_cidr_block (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.nat_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.one_nat_gateway_per_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_tags_per_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.propagate_intra_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.propagate_private_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.propagate_public_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_tags_per_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.putin_khuylo (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_names (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.reuse_nat_ips (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.secondary_cidr_blocks (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.single_nat_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.tags (expand)" -> "[root] local.tags (expand)"
+ "[root] module.vpc.var.tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.use_ipam_pool (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_flow_log_permissions_boundary (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_flow_log_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] output.ec2_complete_arn (expand)" -> "[root] module.ec2_complete.output.arn (expand)"
+ "[root] output.ec2_complete_capacity_reservation_specification (expand)" -> "[root] module.ec2_complete.output.capacity_reservation_specification (expand)"
+ "[root] output.ec2_complete_iam_instance_profile_arn (expand)" -> "[root] module.ec2_complete.output.iam_instance_profile_arn (expand)"
+ "[root] output.ec2_complete_iam_instance_profile_id (expand)" -> "[root] module.ec2_complete.output.iam_instance_profile_id (expand)"
+ "[root] output.ec2_complete_iam_instance_profile_unique (expand)" -> "[root] module.ec2_complete.output.iam_instance_profile_unique (expand)"
+ "[root] output.ec2_complete_iam_role_arn (expand)" -> "[root] module.ec2_complete.output.iam_role_arn (expand)"
+ "[root] output.ec2_complete_iam_role_name (expand)" -> "[root] module.ec2_complete.output.iam_role_name (expand)"
+ "[root] output.ec2_complete_iam_role_unique_id (expand)" -> "[root] module.ec2_complete.output.iam_role_unique_id (expand)"
+ "[root] output.ec2_complete_id (expand)" -> "[root] module.ec2_complete.output.id (expand)"
+ "[root] output.ec2_complete_instance_state (expand)" -> "[root] module.ec2_complete.output.instance_state (expand)"
+ "[root] output.ec2_complete_primary_network_interface_id (expand)" -> "[root] module.ec2_complete.output.primary_network_interface_id (expand)"
+ "[root] output.ec2_complete_private_dns (expand)" -> "[root] module.ec2_complete.output.private_dns (expand)"
+ "[root] output.ec2_complete_public_dns (expand)" -> "[root] module.ec2_complete.output.public_dns (expand)"
+ "[root] output.ec2_complete_public_ip (expand)" -> "[root] module.ec2_complete.output.public_ip (expand)"
+ "[root] output.ec2_complete_tags_all (expand)" -> "[root] module.ec2_complete.output.tags_all (expand)"
+ "[root] output.ec2_multiple (expand)" -> "[root] module.ec2_multiple (close)"
+ "[root] output.ec2_spot_instance_arn (expand)" -> "[root] module.ec2_spot_instance.output.arn (expand)"
+ "[root] output.ec2_spot_instance_capacity_reservation_specification (expand)" -> "[root] module.ec2_spot_instance.output.capacity_reservation_specification (expand)"
+ "[root] output.ec2_spot_instance_id (expand)" -> "[root] module.ec2_spot_instance.output.id (expand)"
+ "[root] output.ec2_spot_instance_instance_state (expand)" -> "[root] module.ec2_spot_instance.output.instance_state (expand)"
+ "[root] output.ec2_spot_instance_primary_network_interface_id (expand)" -> "[root] module.ec2_spot_instance.output.primary_network_interface_id (expand)"
+ "[root] output.ec2_spot_instance_private_dns (expand)" -> "[root] module.ec2_spot_instance.output.private_dns (expand)"
+ "[root] output.ec2_spot_instance_public_dns (expand)" -> "[root] module.ec2_spot_instance.output.public_dns (expand)"
+ "[root] output.ec2_spot_instance_public_ip (expand)" -> "[root] module.ec2_spot_instance.output.public_ip (expand)"
+ "[root] output.ec2_spot_instance_tags_all (expand)" -> "[root] module.ec2_spot_instance.output.tags_all (expand)"
+ "[root] output.ec2_t2_unlimited_arn (expand)" -> "[root] module.ec2_t2_unlimited.output.arn (expand)"
+ "[root] output.ec2_t2_unlimited_capacity_reservation_specification (expand)" -> "[root] module.ec2_t2_unlimited.output.capacity_reservation_specification (expand)"
+ "[root] output.ec2_t2_unlimited_id (expand)" -> "[root] module.ec2_t2_unlimited.output.id (expand)"
+ "[root] output.ec2_t2_unlimited_instance_state (expand)" -> "[root] module.ec2_t2_unlimited.output.instance_state (expand)"
+ "[root] output.ec2_t2_unlimited_primary_network_interface_id (expand)" -> "[root] module.ec2_t2_unlimited.output.primary_network_interface_id (expand)"
+ "[root] output.ec2_t2_unlimited_private_dns (expand)" -> "[root] module.ec2_t2_unlimited.output.private_dns (expand)"
+ "[root] output.ec2_t2_unlimited_public_dns (expand)" -> "[root] module.ec2_t2_unlimited.output.public_dns (expand)"
+ "[root] output.ec2_t2_unlimited_public_ip (expand)" -> "[root] module.ec2_t2_unlimited.output.public_ip (expand)"
+ "[root] output.ec2_t2_unlimited_tags_all (expand)" -> "[root] module.ec2_t2_unlimited.output.tags_all (expand)"
+ "[root] output.ec2_t3_unlimited_arn (expand)" -> "[root] module.ec2_t3_unlimited.output.arn (expand)"
+ "[root] output.ec2_t3_unlimited_capacity_reservation_specification (expand)" -> "[root] module.ec2_t3_unlimited.output.capacity_reservation_specification (expand)"
+ "[root] output.ec2_t3_unlimited_id (expand)" -> "[root] module.ec2_t3_unlimited.output.id (expand)"
+ "[root] output.ec2_t3_unlimited_instance_state (expand)" -> "[root] module.ec2_t3_unlimited.output.instance_state (expand)"
+ "[root] output.ec2_t3_unlimited_primary_network_interface_id (expand)" -> "[root] module.ec2_t3_unlimited.output.primary_network_interface_id (expand)"
+ "[root] output.ec2_t3_unlimited_private_dns (expand)" -> "[root] module.ec2_t3_unlimited.output.private_dns (expand)"
+ "[root] output.ec2_t3_unlimited_public_dns (expand)" -> "[root] module.ec2_t3_unlimited.output.public_dns (expand)"
+ "[root] output.ec2_t3_unlimited_public_ip (expand)" -> "[root] module.ec2_t3_unlimited.output.public_ip (expand)"
+ "[root] output.ec2_t3_unlimited_tags_all (expand)" -> "[root] module.ec2_t3_unlimited.output.tags_all (expand)"
+ "[root] output.spot_bid_status (expand)" -> "[root] module.ec2_spot_instance.output.spot_bid_status (expand)"
+ "[root] output.spot_instance_id (expand)" -> "[root] module.ec2_spot_instance.output.spot_instance_id (expand)"
+ "[root] output.spot_request_state (expand)" -> "[root] module.ec2_spot_instance.output.spot_request_state (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_complete.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_complete.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_complete.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_disabled.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_disabled.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_disabled.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_metadata_options.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_metadata_options.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_metadata_options.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_multiple.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_multiple.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_multiple.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_network_interface.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_network_interface.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_network_interface.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_open_capacity_reservation.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_open_capacity_reservation.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_open_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_spot_instance.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_spot_instance.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_spot_instance.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t2_unlimited.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t2_unlimited.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t2_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t3_unlimited.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t3_unlimited.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_t3_unlimited.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_targeted_capacity_reservation.aws_iam_role_policy_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_targeted_capacity_reservation.aws_instance.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_rules (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_self (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_egress_with_source_security_group_id (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_rules (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_self (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.computed_ingress_with_source_security_group_id (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.egress_rules (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_ipv6_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_self (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.egress_with_source_security_group_id (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_rules (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_ipv6_cidr_blocks (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_self (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.security_group.aws_security_group_rule.ingress_with_source_security_group_id (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_network_acl.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_route_table.default (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_security_group.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_flow_log.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_internet_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_ipv6_egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_nat_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.private_ipv6_egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.private_nat_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.public_internet_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.database (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.elasticache (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.intra (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.outpost (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.private (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.redshift (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.redshift_public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" -> "[root] local.region (expand)"
+ "[root] root" -> "[root] module.ec2_complete (close)"
+ "[root] root" -> "[root] module.ec2_disabled (close)"
+ "[root] root" -> "[root] module.ec2_metadata_options (close)"
+ "[root] root" -> "[root] module.ec2_network_interface (close)"
+ "[root] root" -> "[root] module.ec2_open_capacity_reservation (close)"
+ "[root] root" -> "[root] module.ec2_spot_instance (close)"
+ "[root] root" -> "[root] module.ec2_t2_unlimited (close)"
+ "[root] root" -> "[root] module.ec2_t3_unlimited (close)"
+ "[root] root" -> "[root] module.ec2_targeted_capacity_reservation (close)"
+ "[root] root" -> "[root] module.security_group (close)"
+ "[root] root" -> "[root] module.vpc (close)"
+ "[root] root" -> "[root] output.ec2_complete_arn (expand)"
+ "[root] root" -> "[root] output.ec2_complete_capacity_reservation_specification (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_instance_profile_arn (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_instance_profile_id (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_instance_profile_unique (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_role_arn (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_role_name (expand)"
+ "[root] root" -> "[root] output.ec2_complete_iam_role_unique_id (expand)"
+ "[root] root" -> "[root] output.ec2_complete_id (expand)"
+ "[root] root" -> "[root] output.ec2_complete_instance_state (expand)"
+ "[root] root" -> "[root] output.ec2_complete_primary_network_interface_id (expand)"
+ "[root] root" -> "[root] output.ec2_complete_private_dns (expand)"
+ "[root] root" -> "[root] output.ec2_complete_public_dns (expand)"
+ "[root] root" -> "[root] output.ec2_complete_public_ip (expand)"
+ "[root] root" -> "[root] output.ec2_complete_tags_all (expand)"
+ "[root] root" -> "[root] output.ec2_multiple (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_arn (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_capacity_reservation_specification (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_id (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_instance_state (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_primary_network_interface_id (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_private_dns (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_public_dns (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_public_ip (expand)"
+ "[root] root" -> "[root] output.ec2_spot_instance_tags_all (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_arn (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_capacity_reservation_specification (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_id (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_instance_state (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_primary_network_interface_id (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_private_dns (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_public_dns (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_public_ip (expand)"
+ "[root] root" -> "[root] output.ec2_t2_unlimited_tags_all (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_arn (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_capacity_reservation_specification (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_id (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_instance_state (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_primary_network_interface_id (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_private_dns (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_public_dns (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_public_ip (expand)"
+ "[root] root" -> "[root] output.ec2_t3_unlimited_tags_all (expand)"
+ "[root] root" -> "[root] output.spot_bid_status (expand)"
+ "[root] root" -> "[root] output.spot_instance_id (expand)"
+ "[root] root" -> "[root] output.spot_request_state (expand)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)"
+ }
+}
+
diff --git a/slp_tfplan/tests/resources/tfplan/aws-complete-tfplan.json b/slp_tfplan/tests/resources/tfplan/aws-complete-tfplan.json
new file mode 100644
index 00000000..bf8858da
--- /dev/null
+++ b/slp_tfplan/tests/resources/tfplan/aws-complete-tfplan.json
@@ -0,0 +1,39477 @@
+{
+ "format_version": "1.1",
+ "terraform_version": "1.3.9",
+ "planned_values":
+ {
+ "outputs":
+ {
+ "ec2_complete_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_capacity_reservation_specification":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_id":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_unique":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_role_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_role_name":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_iam_role_unique_id":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_id":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_instance_state":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_primary_network_interface_id":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_private_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_public_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_public_ip":
+ {
+ "sensitive": false
+ },
+ "ec2_complete_tags_all":
+ {
+ "sensitive": false,
+ "type":
+ [
+ "map",
+ "string"
+ ],
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ }
+ },
+ "ec2_multiple":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_capacity_reservation_specification":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_id":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_instance_state":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_primary_network_interface_id":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_private_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_public_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_public_ip":
+ {
+ "sensitive": false
+ },
+ "ec2_spot_instance_tags_all":
+ {
+ "sensitive": false,
+ "type":
+ [
+ "map",
+ "string"
+ ],
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ }
+ },
+ "ec2_t2_unlimited_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_capacity_reservation_specification":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_id":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_instance_state":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_primary_network_interface_id":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_private_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_public_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_public_ip":
+ {
+ "sensitive": false
+ },
+ "ec2_t2_unlimited_tags_all":
+ {
+ "sensitive": false,
+ "type":
+ [
+ "map",
+ "string"
+ ],
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ }
+ },
+ "ec2_t3_unlimited_arn":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_capacity_reservation_specification":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_id":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_instance_state":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_primary_network_interface_id":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_private_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_public_dns":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_public_ip":
+ {
+ "sensitive": false
+ },
+ "ec2_t3_unlimited_tags_all":
+ {
+ "sensitive": false,
+ "type":
+ [
+ "map",
+ "string"
+ ],
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ }
+ },
+ "spot_bid_status":
+ {
+ "sensitive": false
+ },
+ "spot_instance_id":
+ {
+ "sensitive": false
+ },
+ "spot_request_state":
+ {
+ "sensitive": false
+ }
+ },
+ "root_module":
+ {
+ "resources":
+ [
+ {
+ "address": "aws_ec2_capacity_reservation.open",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "open",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "availability_zone": "eu-west-1a",
+ "ebs_optimized": false,
+ "end_date": null,
+ "end_date_type": "unlimited",
+ "ephemeral_storage": false,
+ "instance_count": 1,
+ "instance_match_criteria": "open",
+ "instance_platform": "Linux/UNIX",
+ "instance_type": "t3.micro",
+ "outpost_arn": null,
+ "placement_group_arn": null,
+ "tags": null,
+ "tenancy": "default"
+ },
+ "sensitive_values":
+ {
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "aws_ec2_capacity_reservation.targeted",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "targeted",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "availability_zone": "eu-west-1a",
+ "ebs_optimized": false,
+ "end_date": null,
+ "end_date_type": "unlimited",
+ "ephemeral_storage": false,
+ "instance_count": 1,
+ "instance_match_criteria": "targeted",
+ "instance_platform": "Linux/UNIX",
+ "instance_type": "t3.micro",
+ "outpost_arn": null,
+ "placement_group_arn": null,
+ "tags": null,
+ "tenancy": "default"
+ },
+ "sensitive_values":
+ {
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "aws_kms_key.this",
+ "mode": "managed",
+ "type": "aws_kms_key",
+ "name": "this",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "bypass_policy_lockout_safety_check": false,
+ "custom_key_store_id": null,
+ "customer_master_key_spec": "SYMMETRIC_DEFAULT",
+ "deletion_window_in_days": null,
+ "enable_key_rotation": false,
+ "is_enabled": true,
+ "key_usage": "ENCRYPT_DECRYPT",
+ "tags": null
+ },
+ "sensitive_values":
+ {
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "aws_network_interface.this",
+ "mode": "managed",
+ "type": "aws_network_interface",
+ "name": "this",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "description": null,
+ "ipv6_address_list_enabled": false,
+ "private_ip_list_enabled": false,
+ "source_dest_check": true,
+ "tags": null
+ },
+ "sensitive_values":
+ {
+ "attachment":
+ [],
+ "ipv4_prefixes":
+ [],
+ "ipv6_address_list":
+ [],
+ "ipv6_addresses":
+ [],
+ "ipv6_prefixes":
+ [],
+ "private_ip_list":
+ [],
+ "private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "aws_placement_group.web",
+ "mode": "managed",
+ "type": "aws_placement_group",
+ "name": "web",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "name": "example-ec2-complete",
+ "spread_level": null,
+ "strategy": "cluster",
+ "tags": null
+ },
+ "sensitive_values":
+ {
+ "tags_all":
+ {}
+ }
+ }
+ ],
+ "child_modules":
+ [
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "name_prefix": "example-ec2-complete-",
+ "path": "/",
+ "tags":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ }
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_iam_role.this[0]",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ec2.amazonaws.com\"},\"Sid\":\"EC2AssumeRole\"}],\"Version\":\"2012-10-17\"}",
+ "description": "IAM role for EC2 instance",
+ "force_detach_policies": true,
+ "max_session_duration": 3600,
+ "name_prefix": "example-ec2-complete-",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ }
+ },
+ "sensitive_values":
+ {
+ "inline_policy":
+ [],
+ "managed_policy_arns":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_iam_role_policy_attachment.this[\"AdministratorAccess\"]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "index": "AdministratorAccess",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess"
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.ec2_complete.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "availability_zone": "eu-west-1a",
+ "cpu_core_count": 2,
+ "cpu_threads_per_core": 1,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "disable_api_stop": false,
+ "ebs_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "device_name": "/dev/sdf",
+ "encrypted": true,
+ "tags": null,
+ "throughput": 200,
+ "volume_size": 5,
+ "volume_type": "gp3"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": true,
+ "instance_type": "c5.xlarge",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_base64": "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVycmFmb3JtISIK",
+ "user_data_replace_on_change": true,
+ "volume_tags": null
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [
+ {}
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_complete"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_metadata_options.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 8,
+ "http_tokens": "required",
+ "instance_metadata_tags": "enabled"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-metadata-options",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-metadata-options",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-metadata-options"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_metadata_options"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1a",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-one",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-one",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_multiple[\"one\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1c",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.medium",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-three",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-three",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_multiple[\"three\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1b",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.small",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags": null,
+ "volume_size": 50,
+ "volume_type": "gp2"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-two",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-two",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {}
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_multiple[\"two\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_network_interface.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "network_interface":
+ [
+ {
+ "delete_on_termination": false,
+ "device_index": 0,
+ "network_card_index": 0
+ }
+ ],
+ "source_dest_check": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-network-interface",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-network-interface",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-network-interface"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [
+ {}
+ ],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_network_interface"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": false,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_preference": null
+ }
+ ],
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-open-capacity-reservation",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-open-capacity-reservation",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-open-capacity-reservation"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target":
+ []
+ }
+ ],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_open_capacity_reservation"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "availability_zone": "eu-west-1a",
+ "block_duration_minutes": null,
+ "cpu_core_count": 2,
+ "cpu_threads_per_core": 1,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "ebs_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "device_name": "/dev/sdf",
+ "encrypted": true,
+ "tags": null,
+ "throughput": 200,
+ "volume_size": 5,
+ "volume_type": "gp3"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_interruption_behavior": "terminate",
+ "instance_type": "t3.micro",
+ "launch_group": null,
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "spot_price": "0.1",
+ "spot_type": "persistent",
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null
+ },
+ "user_data_base64": "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVycmFmb3JtISIK",
+ "user_data_replace_on_change": false,
+ "volume_tags": null,
+ "wait_for_fulfillment": true
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [
+ {}
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_spot_instance"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": "unlimited"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t2.micro",
+ "launch_template":
+ [],
+ "maintenance_options":
+ [
+ {
+ "auto_recovery": "default"
+ }
+ ],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-t2-unlimited"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [
+ {}
+ ],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_t2_unlimited"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": "unlimited"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-t3-unlimited"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_t3_unlimited"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": false,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_preference": null
+ }
+ ],
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-targeted-capacity-reservation",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-targeted-capacity-reservation",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-targeted-capacity-reservation"
+ }
+ },
+ "sensitive_values":
+ {
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target":
+ []
+ }
+ ],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.ec2_targeted_capacity_reservation"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this_name_prefix",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "description": "Security group for example usage with EC2 instance",
+ "name_prefix": "example-ec2-complete-",
+ "revoke_rules_on_delete": false,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": "10m",
+ "delete": "15m"
+ }
+ },
+ "sensitive_values":
+ {
+ "egress":
+ [],
+ "ingress":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {}
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.egress_rules[0]",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_rules",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 2,
+ "values":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "All protocols",
+ "from_port": -1,
+ "ipv6_cidr_blocks":
+ [
+ "::/0"
+ ],
+ "prefix_list_ids":
+ [],
+ "protocol": "-1",
+ "self": false,
+ "timeouts": null,
+ "to_port": -1,
+ "type": "egress"
+ },
+ "sensitive_values":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [
+ false
+ ],
+ "prefix_list_ids":
+ []
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.ingress_rules[0]",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_rules",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 2,
+ "values":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTP",
+ "from_port": 80,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "protocol": "tcp",
+ "self": false,
+ "timeouts": null,
+ "to_port": 80,
+ "type": "ingress"
+ },
+ "sensitive_values":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ []
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.ingress_rules[1]",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_rules",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 2,
+ "values":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "All IPV4 ICMP",
+ "from_port": -1,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "protocol": "icmp",
+ "self": false,
+ "timeouts": null,
+ "to_port": -1,
+ "type": "ingress"
+ },
+ "sensitive_values":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ []
+ }
+ }
+ ],
+ "address": "module.security_group"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.vpc.aws_db_subnet_group.database[0]",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "description": "Database subnet group for example-ec2-complete",
+ "name": "example-ec2-complete",
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ }
+ },
+ "sensitive_values":
+ {
+ "subnet_ids":
+ [],
+ "supported_network_types":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_internet_gateway.this[0]",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route.public_internet_gateway[0]",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "carrier_gateway_id": null,
+ "core_network_arn": null,
+ "destination_cidr_block": "0.0.0.0/0",
+ "destination_ipv6_cidr_block": null,
+ "destination_prefix_list_id": null,
+ "egress_only_gateway_id": null,
+ "local_gateway_id": null,
+ "nat_gateway_id": null,
+ "timeouts":
+ {
+ "create": "5m",
+ "delete": null,
+ "update": null
+ },
+ "transit_gateway_id": null,
+ "vpc_endpoint_id": null,
+ "vpc_peering_connection_id": null
+ },
+ "sensitive_values":
+ {
+ "timeouts":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[0]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[1]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[2]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.public[0]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[0]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[1]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[2]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[0]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[1]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[2]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[0]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[1]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[2]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "gateway_id": null
+ },
+ "sensitive_values":
+ {}
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[0]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.7.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[1]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.8.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[2]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.9.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[0]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.3.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[1]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.4.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[2]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.5.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[0]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.0.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[1]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.1.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[2]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.2.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_vpc.this[0]",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values":
+ {
+ "assign_generated_ipv6_cidr_block": null,
+ "cidr_block": "10.99.0.0/18",
+ "enable_dns_hostnames": false,
+ "enable_dns_support": true,
+ "instance_tenancy": "default",
+ "ipv4_ipam_pool_id": null,
+ "ipv4_netmask_length": null,
+ "ipv6_ipam_pool_id": null,
+ "ipv6_netmask_length": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ }
+ },
+ "sensitive_values":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ ],
+ "address": "module.vpc"
+ }
+ ]
+ }
+ },
+ "resource_changes":
+ [
+ {
+ "address": "aws_ec2_capacity_reservation.open",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "open",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "availability_zone": "eu-west-1a",
+ "ebs_optimized": false,
+ "end_date": null,
+ "end_date_type": "unlimited",
+ "ephemeral_storage": false,
+ "instance_count": 1,
+ "instance_match_criteria": "open",
+ "instance_platform": "Linux/UNIX",
+ "instance_type": "t3.micro",
+ "outpost_arn": null,
+ "placement_group_arn": null,
+ "tags": null,
+ "tenancy": "default"
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "aws_ec2_capacity_reservation.targeted",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "targeted",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "availability_zone": "eu-west-1a",
+ "ebs_optimized": false,
+ "end_date": null,
+ "end_date_type": "unlimited",
+ "ephemeral_storage": false,
+ "instance_count": 1,
+ "instance_match_criteria": "targeted",
+ "instance_platform": "Linux/UNIX",
+ "instance_type": "t3.micro",
+ "outpost_arn": null,
+ "placement_group_arn": null,
+ "tags": null,
+ "tenancy": "default"
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "aws_kms_key.this",
+ "mode": "managed",
+ "type": "aws_kms_key",
+ "name": "this",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "bypass_policy_lockout_safety_check": false,
+ "custom_key_store_id": null,
+ "customer_master_key_spec": "SYMMETRIC_DEFAULT",
+ "deletion_window_in_days": null,
+ "enable_key_rotation": false,
+ "is_enabled": true,
+ "key_usage": "ENCRYPT_DECRYPT",
+ "tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "description": true,
+ "id": true,
+ "key_id": true,
+ "multi_region": true,
+ "policy": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "aws_network_interface.this",
+ "mode": "managed",
+ "type": "aws_network_interface",
+ "name": "this",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "description": null,
+ "ipv6_address_list_enabled": false,
+ "private_ip_list_enabled": false,
+ "source_dest_check": true,
+ "tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "attachment": true,
+ "id": true,
+ "interface_type": true,
+ "ipv4_prefix_count": true,
+ "ipv4_prefixes": true,
+ "ipv6_address_count": true,
+ "ipv6_address_list": true,
+ "ipv6_addresses": true,
+ "ipv6_prefix_count": true,
+ "ipv6_prefixes": true,
+ "mac_address": true,
+ "outpost_arn": true,
+ "owner_id": true,
+ "private_dns_name": true,
+ "private_ip": true,
+ "private_ip_list": true,
+ "private_ips": true,
+ "private_ips_count": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "attachment":
+ [],
+ "ipv4_prefixes":
+ [],
+ "ipv6_address_list":
+ [],
+ "ipv6_addresses":
+ [],
+ "ipv6_prefixes":
+ [],
+ "private_ip_list":
+ [],
+ "private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "aws_placement_group.web",
+ "mode": "managed",
+ "type": "aws_placement_group",
+ "name": "web",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "name": "example-ec2-complete",
+ "spread_level": null,
+ "strategy": "cluster",
+ "tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "partition_count": true,
+ "placement_group_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "module_address": "module.ec2_complete",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "name_prefix": "example-ec2-complete-",
+ "path": "/",
+ "tags":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "name": true,
+ "role": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_iam_role.this[0]",
+ "module_address": "module.ec2_complete",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ec2.amazonaws.com\"},\"Sid\":\"EC2AssumeRole\"}],\"Version\":\"2012-10-17\"}",
+ "description": "IAM role for EC2 instance",
+ "force_detach_policies": true,
+ "max_session_duration": 3600,
+ "name_prefix": "example-ec2-complete-",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Owner": "user"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "inline_policy":
+ [],
+ "managed_policy_arns":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_iam_role_policy_attachment.this[\"AdministratorAccess\"]",
+ "module_address": "module.ec2_complete",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "index": "AdministratorAccess",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess"
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "role": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.ec2_complete.aws_instance.this[0]",
+ "module_address": "module.ec2_complete",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "availability_zone": "eu-west-1a",
+ "cpu_core_count": 2,
+ "cpu_threads_per_core": 1,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "disable_api_stop": false,
+ "ebs_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "device_name": "/dev/sdf",
+ "encrypted": true,
+ "tags": null,
+ "throughput": 200,
+ "volume_size": 5,
+ "volume_type": "gp3"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": true,
+ "instance_type": "c5.xlarge",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_base64": "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVycmFmb3JtISIK",
+ "user_data_replace_on_change": true,
+ "volume_tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "capacity_reservation_specification": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_termination": true,
+ "ebs_block_device":
+ [
+ {
+ "iops": true,
+ "kms_key_id": true,
+ "snapshot_id": true,
+ "volume_id": true
+ }
+ ],
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device":
+ [
+ {
+ "device_name": true,
+ "iops": true,
+ "kms_key_id": true,
+ "tags":
+ {},
+ "volume_id": true
+ }
+ ],
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [
+ {}
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_metadata_options.aws_instance.this[0]",
+ "module_address": "module.ec2_metadata_options",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 8,
+ "http_tokens": "required",
+ "instance_metadata_tags": "enabled"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-metadata-options",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-metadata-options",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-metadata-options"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "associate_public_ip_address": true,
+ "availability_zone": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "module_address": "module.ec2_multiple[\"one\"]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1a",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-one",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-one",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "associate_public_ip_address": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device":
+ [
+ {
+ "device_name": true,
+ "iops": true,
+ "kms_key_id": true,
+ "tags":
+ {},
+ "volume_id": true
+ }
+ ],
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "module_address": "module.ec2_multiple[\"three\"]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1c",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.medium",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-three",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-three",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "associate_public_ip_address": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "module_address": "module.ec2_multiple[\"two\"]",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "availability_zone": "eu-west-1b",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.small",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags": null,
+ "volume_size": 50,
+ "volume_type": "gp2"
+ }
+ ],
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-two",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-two",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "associate_public_ip_address": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device":
+ [
+ {
+ "device_name": true,
+ "iops": true,
+ "kms_key_id": true,
+ "throughput": true,
+ "volume_id": true
+ }
+ ],
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {}
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_network_interface.aws_instance.this[0]",
+ "module_address": "module.ec2_network_interface",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "network_interface":
+ [
+ {
+ "delete_on_termination": false,
+ "device_index": 0,
+ "network_card_index": 0
+ }
+ ],
+ "source_dest_check": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-network-interface",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-network-interface",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-network-interface"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "associate_public_ip_address": true,
+ "availability_zone": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface":
+ [
+ {
+ "network_interface_id": true
+ }
+ ],
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [
+ {}
+ ],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "module_address": "module.ec2_open_capacity_reservation",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": false,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_preference": null
+ }
+ ],
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-open-capacity-reservation",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-open-capacity-reservation",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-open-capacity-reservation"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone": true,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target": true
+ }
+ ],
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target":
+ []
+ }
+ ],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "module_address": "module.ec2_spot_instance",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "availability_zone": "eu-west-1a",
+ "block_duration_minutes": null,
+ "cpu_core_count": 2,
+ "cpu_threads_per_core": 1,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "ebs_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "device_name": "/dev/sdf",
+ "encrypted": true,
+ "tags": null,
+ "throughput": 200,
+ "volume_size": 5,
+ "volume_type": "gp3"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_interruption_behavior": "terminate",
+ "instance_type": "t3.micro",
+ "launch_group": null,
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "root_block_device":
+ [
+ {
+ "delete_on_termination": true,
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ],
+ "source_dest_check": true,
+ "spot_price": "0.1",
+ "spot_type": "persistent",
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null
+ },
+ "user_data_base64": "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVycmFmb3JtISIK",
+ "user_data_replace_on_change": false,
+ "volume_tags": null,
+ "wait_for_fulfillment": true
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "capacity_reservation_specification": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device":
+ [
+ {
+ "iops": true,
+ "kms_key_id": true,
+ "snapshot_id": true,
+ "volume_id": true
+ }
+ ],
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device":
+ [
+ {
+ "device_name": true,
+ "iops": true,
+ "kms_key_id": true,
+ "tags":
+ {},
+ "volume_id": true
+ }
+ ],
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "spot_bid_status": true,
+ "spot_instance_id": true,
+ "spot_request_state": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "valid_from": true,
+ "valid_until": true,
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [
+ {}
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [
+ {
+ "tags":
+ {}
+ }
+ ],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "module_address": "module.ec2_t2_unlimited",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": "unlimited"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t2.micro",
+ "launch_template":
+ [],
+ "maintenance_options":
+ [
+ {
+ "auto_recovery": "default"
+ }
+ ],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-t2-unlimited"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options":
+ [
+ {}
+ ],
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [
+ {}
+ ],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "module_address": "module.ec2_t3_unlimited",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": true,
+ "credit_specification":
+ [
+ {
+ "cpu_credits": "unlimited"
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-t3-unlimited"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone": true,
+ "capacity_reservation_specification": true,
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "module_address": "module.ec2_targeted_capacity_reservation",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "ami": "ami-005e54dee72cc1d00",
+ "associate_public_ip_address": false,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_preference": null
+ }
+ ],
+ "credit_specification":
+ [
+ {
+ "cpu_credits": null
+ }
+ ],
+ "enclave_options":
+ [
+ {}
+ ],
+ "get_password_data": false,
+ "hibernation": null,
+ "instance_type": "t3.micro",
+ "launch_template":
+ [],
+ "metadata_options":
+ [
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 1,
+ "http_tokens": "optional"
+ }
+ ],
+ "monitoring": false,
+ "source_dest_check": true,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-targeted-capacity-reservation",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-targeted-capacity-reservation",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": null,
+ "delete": null,
+ "update": null
+ },
+ "user_data_replace_on_change": false,
+ "volume_tags":
+ {
+ "Name": "example-ec2-complete-targeted-capacity-reservation"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone": true,
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target": true
+ }
+ ],
+ "cpu_core_count": true,
+ "cpu_threads_per_core": true,
+ "credit_specification":
+ [
+ {}
+ ],
+ "disable_api_stop": true,
+ "disable_api_termination": true,
+ "ebs_block_device": true,
+ "ebs_optimized": true,
+ "enclave_options":
+ [
+ {
+ "enabled": true
+ }
+ ],
+ "ephemeral_block_device": true,
+ "host_id": true,
+ "host_resource_group_arn": true,
+ "iam_instance_profile": true,
+ "id": true,
+ "instance_initiated_shutdown_behavior": true,
+ "instance_state": true,
+ "ipv6_address_count": true,
+ "ipv6_addresses": true,
+ "key_name": true,
+ "launch_template":
+ [],
+ "maintenance_options": true,
+ "metadata_options":
+ [
+ {
+ "instance_metadata_tags": true
+ }
+ ],
+ "network_interface": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "placement_group": true,
+ "placement_partition_number": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_dns_name_options": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "root_block_device": true,
+ "secondary_private_ips": true,
+ "security_groups": true,
+ "subnet_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "tenancy": true,
+ "timeouts":
+ {},
+ "user_data": true,
+ "user_data_base64": true,
+ "volume_tags":
+ {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "capacity_reservation_specification":
+ [
+ {
+ "capacity_reservation_target":
+ []
+ }
+ ],
+ "credit_specification":
+ [
+ {}
+ ],
+ "ebs_block_device":
+ [],
+ "enclave_options":
+ [
+ {}
+ ],
+ "ephemeral_block_device":
+ [],
+ "ipv6_addresses":
+ [],
+ "launch_template":
+ [],
+ "maintenance_options":
+ [],
+ "metadata_options":
+ [
+ {}
+ ],
+ "network_interface":
+ [],
+ "private_dns_name_options":
+ [],
+ "root_block_device":
+ [],
+ "secondary_private_ips":
+ [],
+ "security_groups":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "volume_tags":
+ {},
+ "vpc_security_group_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "module_address": "module.security_group",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this_name_prefix",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "description": "Security group for example usage with EC2 instance",
+ "name_prefix": "example-ec2-complete-",
+ "revoke_rules_on_delete": false,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts":
+ {
+ "create": "10m",
+ "delete": "15m"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "egress": true,
+ "id": true,
+ "ingress": true,
+ "name": true,
+ "owner_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "egress":
+ [],
+ "ingress":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "timeouts":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.egress_rules[0]",
+ "module_address": "module.security_group",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_rules",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "All protocols",
+ "from_port": -1,
+ "ipv6_cidr_blocks":
+ [
+ "::/0"
+ ],
+ "prefix_list_ids":
+ [],
+ "protocol": "-1",
+ "self": false,
+ "timeouts": null,
+ "to_port": -1,
+ "type": "egress"
+ },
+ "after_unknown":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "id": true,
+ "ipv6_cidr_blocks":
+ [
+ false
+ ],
+ "prefix_list_ids":
+ [],
+ "security_group_id": true,
+ "security_group_rule_id": true,
+ "source_security_group_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [
+ false
+ ],
+ "prefix_list_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.ingress_rules[0]",
+ "module_address": "module.security_group",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_rules",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTP",
+ "from_port": 80,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "protocol": "tcp",
+ "self": false,
+ "timeouts": null,
+ "to_port": 80,
+ "type": "ingress"
+ },
+ "after_unknown":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "id": true,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "security_group_id": true,
+ "security_group_rule_id": true,
+ "source_security_group_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.security_group.aws_security_group_rule.ingress_rules[1]",
+ "module_address": "module.security_group",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_rules",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "cidr_blocks":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "All IPV4 ICMP",
+ "from_port": -1,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "protocol": "icmp",
+ "self": false,
+ "timeouts": null,
+ "to_port": -1,
+ "type": "ingress"
+ },
+ "after_unknown":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "id": true,
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ [],
+ "security_group_id": true,
+ "security_group_rule_id": true,
+ "source_security_group_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "cidr_blocks":
+ [
+ false
+ ],
+ "ipv6_cidr_blocks":
+ [],
+ "prefix_list_ids":
+ []
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_db_subnet_group.database[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "description": "Database subnet group for example-ec2-complete",
+ "name": "example-ec2-complete",
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "subnet_ids": true,
+ "supported_network_types": true,
+ "tags":
+ {},
+ "tags_all":
+ {}
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "subnet_ids":
+ [],
+ "supported_network_types":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_internet_gateway.this[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route.public_internet_gateway[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "carrier_gateway_id": null,
+ "core_network_arn": null,
+ "destination_cidr_block": "0.0.0.0/0",
+ "destination_ipv6_cidr_block": null,
+ "destination_prefix_list_id": null,
+ "egress_only_gateway_id": null,
+ "local_gateway_id": null,
+ "nat_gateway_id": null,
+ "timeouts":
+ {
+ "create": "5m",
+ "delete": null,
+ "update": null
+ },
+ "transit_gateway_id": null,
+ "vpc_endpoint_id": null,
+ "vpc_peering_connection_id": null
+ },
+ "after_unknown":
+ {
+ "gateway_id": true,
+ "id": true,
+ "instance_id": true,
+ "instance_owner_id": true,
+ "network_interface_id": true,
+ "origin": true,
+ "route_table_id": true,
+ "state": true,
+ "timeouts":
+ {}
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "timeouts":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "propagating_vgws":
+ [],
+ "route":
+ [],
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.database[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "gateway_id": null
+ },
+ "after_unknown":
+ {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.7.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.8.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.database[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.9.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-db-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.3.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.4.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.5.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-private-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.99.0.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1a",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1a",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.99.1.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1b",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1b",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[2]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1c",
+ "cidr_block": "10.99.2.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1c",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-public-eu-west-1c",
+ "Owner": "user"
+ },
+ "timeouts": null
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags":
+ {},
+ "tags_all":
+ {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_vpc.this[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "assign_generated_ipv6_cidr_block": null,
+ "cidr_block": "10.99.0.0/18",
+ "enable_dns_hostnames": false,
+ "enable_dns_support": true,
+ "instance_tenancy": "default",
+ "ipv4_ipam_pool_id": null,
+ "ipv4_netmask_length": null,
+ "ipv6_ipam_pool_id": null,
+ "ipv6_netmask_length": null,
+ "tags":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ }
+ },
+ "after_unknown":
+ {
+ "arn": true,
+ "default_network_acl_id": true,
+ "default_route_table_id": true,
+ "default_security_group_id": true,
+ "dhcp_options_id": true,
+ "enable_classiclink": true,
+ "enable_classiclink_dns_support": true,
+ "enable_network_address_usage_metrics": true,
+ "id": true,
+ "ipv6_association_id": true,
+ "ipv6_cidr_block": true,
+ "ipv6_cidr_block_network_border_group": true,
+ "main_route_table_id": true,
+ "owner_id": true,
+ "tags":
+ {},
+ "tags_all":
+ {}
+ },
+ "before_sensitive": false,
+ "after_sensitive":
+ {
+ "tags":
+ {},
+ "tags_all":
+ {}
+ }
+ }
+ }
+ ],
+ "output_changes":
+ {
+ "ec2_complete_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_capacity_reservation_specification":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_instance_profile_unique":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_role_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_role_name":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_iam_role_unique_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_instance_state":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_primary_network_interface_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_private_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_public_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_public_ip":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_complete_tags_all":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_multiple":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "one":
+ {
+ "iam_instance_profile_arn": null,
+ "iam_instance_profile_id": null,
+ "iam_instance_profile_unique": null,
+ "iam_role_arn": null,
+ "iam_role_name": null,
+ "iam_role_unique_id": null,
+ "spot_bid_status": "",
+ "spot_instance_id": "",
+ "spot_request_state": "",
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-one",
+ "Owner": "user"
+ }
+ },
+ "three":
+ {
+ "iam_instance_profile_arn": null,
+ "iam_instance_profile_id": null,
+ "iam_instance_profile_unique": null,
+ "iam_role_arn": null,
+ "iam_role_name": null,
+ "iam_role_unique_id": null,
+ "spot_bid_status": "",
+ "spot_instance_id": "",
+ "spot_request_state": "",
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-three",
+ "Owner": "user"
+ }
+ },
+ "two":
+ {
+ "iam_instance_profile_arn": null,
+ "iam_instance_profile_id": null,
+ "iam_instance_profile_unique": null,
+ "iam_role_arn": null,
+ "iam_role_name": null,
+ "iam_role_unique_id": null,
+ "spot_bid_status": "",
+ "spot_instance_id": "",
+ "spot_request_state": "",
+ "tags_all":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-multi-two",
+ "Owner": "user"
+ }
+ }
+ },
+ "after_unknown":
+ {
+ "one":
+ {
+ "arn": true,
+ "capacity_reservation_specification": true,
+ "id": true,
+ "instance_state": true,
+ "ipv6_addresses": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "tags_all":
+ {}
+ },
+ "three":
+ {
+ "arn": true,
+ "capacity_reservation_specification": true,
+ "id": true,
+ "instance_state": true,
+ "ipv6_addresses": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "tags_all":
+ {}
+ },
+ "two":
+ {
+ "arn": true,
+ "capacity_reservation_specification": true,
+ "id": true,
+ "instance_state": true,
+ "ipv6_addresses": true,
+ "outpost_arn": true,
+ "password_data": true,
+ "primary_network_interface_id": true,
+ "private_dns": true,
+ "private_ip": true,
+ "public_dns": true,
+ "public_ip": true,
+ "tags_all":
+ {}
+ }
+ },
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_capacity_reservation_specification":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_instance_state":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_primary_network_interface_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_private_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_public_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_public_ip":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_spot_instance_tags_all":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_capacity_reservation_specification":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_instance_state":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_primary_network_interface_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_private_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_public_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_public_ip":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t2_unlimited_tags_all":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_arn":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_capacity_reservation_specification":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_instance_state":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_primary_network_interface_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_private_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_public_dns":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_public_ip":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "ec2_t3_unlimited_tags_all":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "spot_bid_status":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "spot_instance_id":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "spot_request_state":
+ {
+ "actions":
+ [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ }
+ },
+ "prior_state":
+ {
+ "format_version": "1.0",
+ "terraform_version": "1.3.9",
+ "values":
+ {
+ "outputs":
+ {
+ "ec2_complete_tags_all":
+ {
+ "sensitive": false,
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete",
+ "Owner": "user"
+ },
+ "type":
+ [
+ "map",
+ "string"
+ ]
+ },
+ "ec2_spot_instance_tags_all":
+ {
+ "sensitive": false,
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-spot-instance",
+ "Owner": "user"
+ },
+ "type":
+ [
+ "map",
+ "string"
+ ]
+ },
+ "ec2_t2_unlimited_tags_all":
+ {
+ "sensitive": false,
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t2-unlimited",
+ "Owner": "user"
+ },
+ "type":
+ [
+ "map",
+ "string"
+ ]
+ },
+ "ec2_t3_unlimited_tags_all":
+ {
+ "sensitive": false,
+ "value":
+ {
+ "Environment": "dev",
+ "Name": "example-ec2-complete-t3-unlimited",
+ "Owner": "user"
+ },
+ "type":
+ [
+ "map",
+ "string"
+ ]
+ }
+ },
+ "root_module":
+ {
+ "child_modules":
+ [
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_complete.data.aws_iam_policy_document.assume_role_policy[0]",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "id": "1256122602",
+ "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"EC2AssumeRole\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"ec2.amazonaws.com\"\n }\n }\n ]\n}",
+ "override_json": null,
+ "override_policy_documents": null,
+ "policy_id": null,
+ "source_json": null,
+ "source_policy_documents": null,
+ "statement":
+ [
+ {
+ "actions":
+ [
+ "sts:AssumeRole"
+ ],
+ "condition":
+ [],
+ "effect": "Allow",
+ "not_actions":
+ [],
+ "not_principals":
+ [],
+ "not_resources":
+ [],
+ "principals":
+ [
+ {
+ "identifiers":
+ [
+ "ec2.amazonaws.com"
+ ],
+ "type": "Service"
+ }
+ ],
+ "resources":
+ [],
+ "sid": "EC2AssumeRole"
+ }
+ ],
+ "version": "2012-10-17"
+ },
+ "sensitive_values":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ [
+ false
+ ],
+ "condition":
+ [],
+ "not_actions":
+ [],
+ "not_principals":
+ [],
+ "not_resources":
+ [],
+ "principals":
+ [
+ {
+ "identifiers":
+ [
+ false
+ ]
+ }
+ ],
+ "resources":
+ []
+ }
+ ]
+ }
+ },
+ {
+ "address": "module.ec2_complete.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_complete"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_disabled.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_disabled"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_metadata_options.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_metadata_options"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"one\"].data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_multiple[\"one\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"three\"].data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_multiple[\"three\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_multiple[\"two\"].data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_multiple[\"two\"]"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_network_interface.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_network_interface"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_open_capacity_reservation.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_open_capacity_reservation"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_spot_instance.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_spot_instance"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_t2_unlimited.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_t2_unlimited"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_t3_unlimited.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_t3_unlimited"
+ },
+ {
+ "resources":
+ [
+ {
+ "address": "module.ec2_targeted_capacity_reservation.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values":
+ {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values":
+ {}
+ }
+ ],
+ "address": "module.ec2_targeted_capacity_reservation"
+ }
+ ]
+ }
+ }
+ },
+ "configuration":
+ {
+ "provider_config":
+ {
+ "aws":
+ {
+ "name": "aws",
+ "full_name": "registry.terraform.io/hashicorp/aws",
+ "version_constraint": ">= 4.7.0",
+ "expressions":
+ {
+ "region":
+ {
+ "references":
+ [
+ "local.region"
+ ]
+ }
+ }
+ }
+ },
+ "root_module":
+ {
+ "outputs":
+ {
+ "ec2_complete_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.arn",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "ec2_complete_capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.capacity_reservation_specification",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "ec2_complete_iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_instance_profile_arn",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "ec2_complete_iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_instance_profile_id",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "ec2_complete_iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_instance_profile_unique",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "ec2_complete_iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_role_arn",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "ec2_complete_iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_role_name",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "ec2_complete_iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.iam_role_unique_id",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "ec2_complete_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.id",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "ec2_complete_instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.instance_state",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ec2_complete_primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.primary_network_interface_id",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "ec2_complete_private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.private_dns",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_complete_public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.public_dns",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_complete_public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.public_ip",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "ec2_complete_tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_complete.tags_all",
+ "module.ec2_complete"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ },
+ "ec2_multiple":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_multiple"
+ ]
+ },
+ "description": "The full output of the `ec2_module` module"
+ },
+ "ec2_spot_instance_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.arn",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "ec2_spot_instance_capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.capacity_reservation_specification",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "ec2_spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.id",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "ec2_spot_instance_instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.instance_state",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ec2_spot_instance_primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.primary_network_interface_id",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "ec2_spot_instance_private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.private_dns",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_spot_instance_public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.public_dns",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_spot_instance_public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.public_ip",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "ec2_spot_instance_tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.tags_all",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ },
+ "ec2_t2_unlimited_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.arn",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "ec2_t2_unlimited_capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.capacity_reservation_specification",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "ec2_t2_unlimited_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.id",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "ec2_t2_unlimited_instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.instance_state",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ec2_t2_unlimited_primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.primary_network_interface_id",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "ec2_t2_unlimited_private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.private_dns",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_t2_unlimited_public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.public_dns",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_t2_unlimited_public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.public_ip",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "ec2_t2_unlimited_tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t2_unlimited.tags_all",
+ "module.ec2_t2_unlimited"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ },
+ "ec2_t3_unlimited_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.arn",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "ec2_t3_unlimited_capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.capacity_reservation_specification",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "ec2_t3_unlimited_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.id",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "ec2_t3_unlimited_instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.instance_state",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ec2_t3_unlimited_primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.primary_network_interface_id",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "ec2_t3_unlimited_private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.private_dns",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_t3_unlimited_public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.public_dns",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "ec2_t3_unlimited_public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.public_ip",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "ec2_t3_unlimited_tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_t3_unlimited.tags_all",
+ "module.ec2_t3_unlimited"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.spot_bid_status",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.spot_instance_id",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "module.ec2_spot_instance.spot_request_state",
+ "module.ec2_spot_instance"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_ec2_capacity_reservation.open",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "open",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "availability_zone":
+ {
+ "references":
+ [
+ "local.region"
+ ]
+ },
+ "instance_count":
+ {
+ "constant_value": 1
+ },
+ "instance_match_criteria":
+ {
+ "constant_value": "open"
+ },
+ "instance_platform":
+ {
+ "constant_value": "Linux/UNIX"
+ },
+ "instance_type":
+ {
+ "constant_value": "t3.micro"
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_ec2_capacity_reservation.targeted",
+ "mode": "managed",
+ "type": "aws_ec2_capacity_reservation",
+ "name": "targeted",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "availability_zone":
+ {
+ "references":
+ [
+ "local.region"
+ ]
+ },
+ "instance_count":
+ {
+ "constant_value": 1
+ },
+ "instance_match_criteria":
+ {
+ "constant_value": "targeted"
+ },
+ "instance_platform":
+ {
+ "constant_value": "Linux/UNIX"
+ },
+ "instance_type":
+ {
+ "constant_value": "t3.micro"
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_kms_key.this",
+ "mode": "managed",
+ "type": "aws_kms_key",
+ "name": "this",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ },
+ {
+ "address": "aws_network_interface.this",
+ "mode": "managed",
+ "type": "aws_network_interface",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_placement_group.web",
+ "mode": "managed",
+ "type": "aws_placement_group",
+ "name": "web",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "strategy":
+ {
+ "constant_value": "cluster"
+ }
+ },
+ "schema_version": 0
+ }
+ ],
+ "module_calls":
+ {
+ "ec2_complete":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "data.aws_ami.amazon_linux.id"
+ },
+ "associate_public_ip_address":
+ {
+ "constant_value": true
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "module.vpc.azs",
+ "module.vpc"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "constant_value": 2
+ },
+ "cpu_threads_per_core":
+ {
+ "constant_value": 1
+ },
+ "create_iam_instance_profile":
+ {
+ "constant_value": true
+ },
+ "disable_api_stop":
+ {
+ "constant_value": false
+ },
+ "ebs_block_device":
+ {
+ "references":
+ [
+ "aws_kms_key.this.arn",
+ "aws_kms_key.this"
+ ]
+ },
+ "enable_volume_tags":
+ {
+ "constant_value": false
+ },
+ "hibernation":
+ {
+ "constant_value": true
+ },
+ "iam_role_description":
+ {
+ "constant_value": "IAM role for EC2 instance"
+ },
+ "iam_role_policies":
+ {
+ "constant_value":
+ {
+ "AdministratorAccess": "arn:aws:iam::aws:policy/AdministratorAccess"
+ }
+ },
+ "instance_type":
+ {
+ "constant_value": "c5.xlarge"
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "aws_placement_group.web.id",
+ "aws_placement_group.web"
+ ]
+ },
+ "root_block_device":
+ {
+ "constant_value":
+ [
+ {
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "local.user_data"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "constant_value": true
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_disabled":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "create":
+ {
+ "constant_value": false
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_metadata_options":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "metadata_options":
+ {
+ "constant_value":
+ {
+ "http_endpoint": "enabled",
+ "http_put_response_hop_limit": 8,
+ "http_tokens": "required",
+ "instance_metadata_tags": "enabled"
+ }
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_multiple":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "availability_zone":
+ {
+ "references":
+ [
+ "each.value.availability_zone",
+ "each.value"
+ ]
+ },
+ "enable_volume_tags":
+ {
+ "constant_value": false
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "each.value.instance_type",
+ "each.value"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name",
+ "each.key"
+ ]
+ },
+ "root_block_device":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "each.value.subnet_id",
+ "each.value"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "for_each_expression":
+ {
+ "references":
+ [
+ "local.multiple_instances"
+ ]
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_network_interface":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "network_interface":
+ {
+ "references":
+ [
+ "aws_network_interface.this.id",
+ "aws_network_interface.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_open_capacity_reservation":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "data.aws_ami.amazon_linux.id"
+ },
+ "associate_public_ip_address":
+ {
+ "constant_value": false
+ },
+ "capacity_reservation_specification":
+ {
+ "references":
+ [
+ "aws_ec2_capacity_reservation.open.id",
+ "aws_ec2_capacity_reservation.open"
+ ]
+ },
+ "instance_type":
+ {
+ "constant_value": "t3.micro"
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_spot_instance":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "associate_public_ip_address":
+ {
+ "constant_value": true
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "module.vpc.azs",
+ "module.vpc"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "constant_value": 2
+ },
+ "cpu_threads_per_core":
+ {
+ "constant_value": 1
+ },
+ "create_spot_instance":
+ {
+ "constant_value": true
+ },
+ "ebs_block_device":
+ {
+ "constant_value":
+ [
+ {
+ "device_name": "/dev/sdf",
+ "encrypted": true,
+ "throughput": 200,
+ "volume_size": 5,
+ "volume_type": "gp3"
+ }
+ ]
+ },
+ "enable_volume_tags":
+ {
+ "constant_value": false
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "root_block_device":
+ {
+ "constant_value":
+ [
+ {
+ "encrypted": true,
+ "tags":
+ {
+ "Name": "my-root-block"
+ },
+ "throughput": 200,
+ "volume_size": 50,
+ "volume_type": "gp3"
+ }
+ ]
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "constant_value": "terminate"
+ },
+ "spot_price":
+ {
+ "constant_value": "0.1"
+ },
+ "spot_type":
+ {
+ "constant_value": "persistent"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "constant_value": true
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "local.user_data"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_t2_unlimited":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "associate_public_ip_address":
+ {
+ "constant_value": true
+ },
+ "cpu_credits":
+ {
+ "constant_value": "unlimited"
+ },
+ "instance_type":
+ {
+ "constant_value": "t2.micro"
+ },
+ "maintenance_options":
+ {
+ "constant_value":
+ {
+ "auto_recovery": "default"
+ }
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_t3_unlimited":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "associate_public_ip_address":
+ {
+ "constant_value": true
+ },
+ "cpu_credits":
+ {
+ "constant_value": "unlimited"
+ },
+ "instance_type":
+ {
+ "constant_value": "t3.micro"
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "ec2_targeted_capacity_reservation":
+ {
+ "source": "../../",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "data.aws_ami.amazon_linux.id"
+ },
+ "associate_public_ip_address":
+ {
+ "constant_value": false
+ },
+ "capacity_reservation_specification":
+ {
+ "references":
+ [
+ "aws_ec2_capacity_reservation.targeted.id",
+ "aws_ec2_capacity_reservation.targeted"
+ ]
+ },
+ "instance_type":
+ {
+ "constant_value": "t3.micro"
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "module.security_group.security_group_id",
+ "module.security_group"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the instance"
+ },
+ "capacity_reservation_specification":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].capacity_reservation_specification",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].capacity_reservation_specification",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Capacity reservation specification of the instance"
+ },
+ "iam_instance_profile_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].arn",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "ARN assigned by AWS to the instance profile"
+ },
+ "iam_instance_profile_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Instance profile's ID"
+ },
+ "iam_instance_profile_unique":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_instance_profile.this[0].unique_id",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM instance profile"
+ },
+ "iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].arn",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the IAM role"
+ },
+ "iam_role_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "The name of the IAM role"
+ },
+ "iam_role_unique_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].unique_id",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "description": "Stable and unique string identifying the IAM role"
+ },
+ "id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance"
+ },
+ "instance_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].instance_state",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].instance_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The state of the instance. One of: `pending`, `running`, `shutting-down`, `terminated`, `stopping`, `stopped`"
+ },
+ "ipv6_addresses":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].ipv6_addresses",
+ "aws_instance.this[0]",
+ "aws_instance.this"
+ ]
+ },
+ "description": "The IPv6 address assigned to the instance, if applicable."
+ },
+ "outpost_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].outpost_arn",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].outpost_arn",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ARN of the Outpost the instance is assigned to"
+ },
+ "password_data":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].password_data",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].password_data",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "Base-64 encoded encrypted password data for the instance. Useful for getting the administrator password for instances running Microsoft Windows. This attribute is only exported if `get_password_data` is true"
+ },
+ "primary_network_interface_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].primary_network_interface_id",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].primary_network_interface_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The ID of the instance's primary network interface"
+ },
+ "private_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private DNS name assigned to the instance. Can only be used inside the Amazon EC2, and only available if you've enabled DNS hostnames for your VPC"
+ },
+ "private_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].private_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].private_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The private IP address assigned to the instance."
+ },
+ "public_dns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_dns",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_dns",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public DNS name assigned to the instance. For EC2-VPC, this is only available if you've enabled DNS hostnames for your VPC"
+ },
+ "public_ip":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].public_ip",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].public_ip",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The public IP address assigned to the instance, if applicable. NOTE: If you are using an aws_eip with your instance, you should refer to the EIP's address directly and not use `public_ip` as this field will change after the EIP is attached"
+ },
+ "spot_bid_status":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_bid_status",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current bid status of the Spot Instance Request"
+ },
+ "spot_instance_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_instance_id",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The Instance ID (if any) that is currently fulfilling the Spot Instance request"
+ },
+ "spot_request_state":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_spot_instance_request.this[0].spot_request_state",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "The current request state of the Spot Instance Request"
+ },
+ "tags_all":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_instance.this[0].tags_all",
+ "aws_instance.this[0]",
+ "aws_instance.this",
+ "aws_spot_instance_request.this[0].tags_all",
+ "aws_spot_instance_request.this[0]",
+ "aws_spot_instance_request.this"
+ ]
+ },
+ "description": "A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_iam_instance_profile.this",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.this",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.assume_role_policy[0].json",
+ "data.aws_iam_policy_document.assume_role_policy[0]",
+ "data.aws_iam_policy_document.assume_role_policy"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies":
+ {
+ "constant_value": true
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.iam_role_use_name_prefix",
+ "local.iam_role_name"
+ ]
+ },
+ "path":
+ {
+ "references":
+ [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.iam_role_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.this",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.this[0].name",
+ "aws_iam_role.this[0]",
+ "aws_iam_role.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.iam_role_policies",
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "aws_instance.this",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_stop":
+ {
+ "references":
+ [
+ "var.disable_api_stop"
+ ]
+ },
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "update":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "aws_spot_instance_request.this",
+ "mode": "managed",
+ "type": "aws_spot_instance_request",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "ami":
+ {
+ "constant_value": "ami-005e54dee72cc1d00"
+ },
+ "associate_public_ip_address":
+ {
+ "references":
+ [
+ "var.associate_public_ip_address"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.availability_zone"
+ ]
+ },
+ "block_duration_minutes":
+ {
+ "references":
+ [
+ "var.spot_block_duration_minutes"
+ ]
+ },
+ "cpu_core_count":
+ {
+ "references":
+ [
+ "var.cpu_core_count"
+ ]
+ },
+ "cpu_threads_per_core":
+ {
+ "references":
+ [
+ "var.cpu_threads_per_core"
+ ]
+ },
+ "credit_specification":
+ [
+ {
+ "cpu_credits":
+ {
+ "references":
+ [
+ "local.is_t_instance_type",
+ "var.cpu_credits"
+ ]
+ }
+ }
+ ],
+ "disable_api_termination":
+ {
+ "references":
+ [
+ "var.disable_api_termination"
+ ]
+ },
+ "ebs_optimized":
+ {
+ "references":
+ [
+ "var.ebs_optimized"
+ ]
+ },
+ "enclave_options":
+ [
+ {
+ "enabled":
+ {
+ "references":
+ [
+ "var.enclave_options_enabled"
+ ]
+ }
+ }
+ ],
+ "get_password_data":
+ {
+ "references":
+ [
+ "var.get_password_data"
+ ]
+ },
+ "hibernation":
+ {
+ "references":
+ [
+ "var.hibernation"
+ ]
+ },
+ "host_id":
+ {
+ "references":
+ [
+ "var.host_id"
+ ]
+ },
+ "iam_instance_profile":
+ {
+ "references":
+ [
+ "var.create_iam_instance_profile",
+ "aws_iam_instance_profile.this[0].name",
+ "aws_iam_instance_profile.this[0]",
+ "aws_iam_instance_profile.this",
+ "var.iam_instance_profile"
+ ]
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "references":
+ [
+ "var.instance_initiated_shutdown_behavior"
+ ]
+ },
+ "instance_interruption_behavior":
+ {
+ "references":
+ [
+ "var.spot_instance_interruption_behavior"
+ ]
+ },
+ "instance_type":
+ {
+ "references":
+ [
+ "var.instance_type"
+ ]
+ },
+ "ipv6_address_count":
+ {
+ "references":
+ [
+ "var.ipv6_address_count"
+ ]
+ },
+ "ipv6_addresses":
+ {
+ "references":
+ [
+ "var.ipv6_addresses"
+ ]
+ },
+ "key_name":
+ {
+ "references":
+ [
+ "var.key_name"
+ ]
+ },
+ "launch_group":
+ {
+ "references":
+ [
+ "var.spot_launch_group"
+ ]
+ },
+ "monitoring":
+ {
+ "references":
+ [
+ "var.monitoring"
+ ]
+ },
+ "placement_group":
+ {
+ "references":
+ [
+ "var.placement_group"
+ ]
+ },
+ "private_ip":
+ {
+ "references":
+ [
+ "var.private_ip"
+ ]
+ },
+ "secondary_private_ips":
+ {
+ "references":
+ [
+ "var.secondary_private_ips"
+ ]
+ },
+ "source_dest_check":
+ {
+ "references":
+ [
+ "var.network_interface",
+ "var.source_dest_check"
+ ]
+ },
+ "spot_price":
+ {
+ "references":
+ [
+ "var.spot_price"
+ ]
+ },
+ "spot_type":
+ {
+ "references":
+ [
+ "var.spot_type"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "var.subnet_id"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "tenancy":
+ {
+ "references":
+ [
+ "var.tenancy"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.timeouts"
+ ]
+ }
+ },
+ "user_data":
+ {
+ "references":
+ [
+ "var.user_data"
+ ]
+ },
+ "user_data_base64":
+ {
+ "references":
+ [
+ "var.user_data_base64"
+ ]
+ },
+ "user_data_replace_on_change":
+ {
+ "references":
+ [
+ "var.user_data_replace_on_change"
+ ]
+ },
+ "valid_from":
+ {
+ "references":
+ [
+ "var.spot_valid_from"
+ ]
+ },
+ "valid_until":
+ {
+ "references":
+ [
+ "var.spot_valid_until"
+ ]
+ },
+ "volume_tags":
+ {
+ "references":
+ [
+ "var.enable_volume_tags",
+ "var.name",
+ "var.volume_tags"
+ ]
+ },
+ "vpc_security_group_ids":
+ {
+ "references":
+ [
+ "var.vpc_security_group_ids"
+ ]
+ },
+ "wait_for_fulfillment":
+ {
+ "references":
+ [
+ "var.spot_wait_for_fulfillment"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_spot_instance"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.assume_role_policy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "assume_role_policy",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "references":
+ [
+ "data.aws_partition.current.dns_suffix",
+ "data.aws_partition.current"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "EC2AssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.create",
+ "var.create_iam_instance_profile"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables":
+ {
+ "ami":
+ {
+ "default": null,
+ "description": "ID of AMI to use for the instance"
+ },
+ "ami_ssm_parameter":
+ {
+ "default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
+ "description": "SSM parameter name for the AMI ID. For Amazon Linux AMI SSM parameters see [reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)"
+ },
+ "associate_public_ip_address":
+ {
+ "default": null,
+ "description": "Whether to associate a public IP address with an instance in a VPC"
+ },
+ "availability_zone":
+ {
+ "default": null,
+ "description": "AZ to start the instance in"
+ },
+ "capacity_reservation_specification":
+ {
+ "default":
+ {},
+ "description": "Describes an instance's Capacity Reservation targeting option"
+ },
+ "cpu_core_count":
+ {
+ "default": null,
+ "description": "Sets the number of CPU cores for an instance."
+ },
+ "cpu_credits":
+ {
+ "default": null,
+ "description": "The credit option for CPU usage (unlimited or standard)"
+ },
+ "cpu_threads_per_core":
+ {
+ "default": null,
+ "description": "Sets the number of CPU threads per core for an instance (has no effect unless cpu_core_count is also set)."
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create an instance"
+ },
+ "create_iam_instance_profile":
+ {
+ "default": false,
+ "description": "Determines whether an IAM instance profile is created or to use an existing IAM instance profile"
+ },
+ "create_spot_instance":
+ {
+ "default": false,
+ "description": "Depicts if the instance is a spot instance"
+ },
+ "disable_api_stop":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Stop Protection."
+ },
+ "disable_api_termination":
+ {
+ "default": null,
+ "description": "If true, enables EC2 Instance Termination Protection"
+ },
+ "ebs_block_device":
+ {
+ "default":
+ [],
+ "description": "Additional EBS block devices to attach to the instance"
+ },
+ "ebs_optimized":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will be EBS-optimized"
+ },
+ "enable_volume_tags":
+ {
+ "default": true,
+ "description": "Whether to enable volume tags (if enabled it conflicts with root_block_device tags)"
+ },
+ "enclave_options_enabled":
+ {
+ "default": null,
+ "description": "Whether Nitro Enclaves will be enabled on the instance. Defaults to `false`"
+ },
+ "ephemeral_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize Ephemeral (also known as Instance Store) volumes on the instance"
+ },
+ "get_password_data":
+ {
+ "default": null,
+ "description": "If true, wait for password data to become available and retrieve it."
+ },
+ "hibernation":
+ {
+ "default": null,
+ "description": "If true, the launched EC2 instance will support hibernation"
+ },
+ "host_id":
+ {
+ "default": null,
+ "description": "ID of a dedicated host that the instance will be assigned to. Use when an instance is to be launched on a specific dedicated host"
+ },
+ "iam_instance_profile":
+ {
+ "default": null,
+ "description": "IAM Instance Profile to launch the instance with. Specified as the name of the Instance Profile"
+ },
+ "iam_role_description":
+ {
+ "default": null,
+ "description": "Description of the role"
+ },
+ "iam_role_name":
+ {
+ "default": null,
+ "description": "Name to use on IAM role created"
+ },
+ "iam_role_path":
+ {
+ "default": null,
+ "description": "IAM role path"
+ },
+ "iam_role_permissions_boundary":
+ {
+ "default": null,
+ "description": "ARN of the policy that is used to set the permissions boundary for the IAM role"
+ },
+ "iam_role_policies":
+ {
+ "default":
+ {},
+ "description": "Policies attached to the IAM role"
+ },
+ "iam_role_tags":
+ {
+ "default":
+ {},
+ "description": "A map of additional tags to add to the IAM role/profile created"
+ },
+ "iam_role_use_name_prefix":
+ {
+ "default": true,
+ "description": "Determines whether the IAM role name (`iam_role_name` or `name`) is used as a prefix"
+ },
+ "instance_initiated_shutdown_behavior":
+ {
+ "default": null,
+ "description": "Shutdown behavior for the instance. Amazon defaults this to stop for EBS-backed instances and terminate for instance-store instances. Cannot be set on instance-store instance"
+ },
+ "instance_type":
+ {
+ "default": "t3.micro",
+ "description": "The type of instance to start"
+ },
+ "ipv6_address_count":
+ {
+ "default": null,
+ "description": "A number of IPv6 addresses to associate with the primary network interface. Amazon EC2 chooses the IPv6 addresses from the range of your subnet"
+ },
+ "ipv6_addresses":
+ {
+ "default": null,
+ "description": "Specify one or more IPv6 addresses from the range of the subnet to associate with the primary network interface"
+ },
+ "key_name":
+ {
+ "default": null,
+ "description": "Key name of the Key Pair to use for the instance; which can be managed using the `aws_key_pair` resource"
+ },
+ "launch_template":
+ {
+ "default": null,
+ "description": "Specifies a Launch Template to configure the instance. Parameters configured on this resource will override the corresponding parameters in the Launch Template"
+ },
+ "maintenance_options":
+ {
+ "default":
+ {},
+ "description": "The maintenance options for the instance"
+ },
+ "metadata_options":
+ {
+ "default":
+ {},
+ "description": "Customize the metadata options of the instance"
+ },
+ "monitoring":
+ {
+ "default": false,
+ "description": "If true, the launched EC2 instance will have detailed monitoring enabled"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on EC2 instance created"
+ },
+ "network_interface":
+ {
+ "default":
+ [],
+ "description": "Customize network interfaces to be attached at instance boot time"
+ },
+ "placement_group":
+ {
+ "default": null,
+ "description": "The Placement Group to start the instance in"
+ },
+ "private_ip":
+ {
+ "default": null,
+ "description": "Private IP address to associate with the instance in a VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "root_block_device":
+ {
+ "default":
+ [],
+ "description": "Customize details about the root block device of the instance. See Block Devices below for details"
+ },
+ "secondary_private_ips":
+ {
+ "default": null,
+ "description": "A list of secondary private IPv4 addresses to assign to the instance's primary network interface (eth0) in a VPC. Can only be assigned to the primary network interface (eth0) attached at instance creation, not a pre-existing network interface i.e. referenced in a `network_interface block`"
+ },
+ "source_dest_check":
+ {
+ "default": true,
+ "description": "Controls if traffic is routed to the instance when the destination address does not match the instance. Used for NAT or VPNs."
+ },
+ "spot_block_duration_minutes":
+ {
+ "default": null,
+ "description": "The required duration for the Spot instances, in minutes. This value must be a multiple of 60 (60, 120, 180, 240, 300, or 360)"
+ },
+ "spot_instance_interruption_behavior":
+ {
+ "default": null,
+ "description": "Indicates Spot instance behavior when it is interrupted. Valid values are `terminate`, `stop`, or `hibernate`"
+ },
+ "spot_launch_group":
+ {
+ "default": null,
+ "description": "A launch group is a group of spot instances that launch together and terminate together. If left empty instances are launched and terminated individually"
+ },
+ "spot_price":
+ {
+ "default": null,
+ "description": "The maximum price to request on the spot market. Defaults to on-demand price"
+ },
+ "spot_type":
+ {
+ "default": null,
+ "description": "If set to one-time, after the instance is terminated, the spot request will be closed. Default `persistent`"
+ },
+ "spot_valid_from":
+ {
+ "default": null,
+ "description": "The start date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_valid_until":
+ {
+ "default": null,
+ "description": "The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ)"
+ },
+ "spot_wait_for_fulfillment":
+ {
+ "default": null,
+ "description": "If set, Terraform will wait for the Spot Request to be fulfilled, and will throw an error if the timeout of 10m is reached"
+ },
+ "subnet_id":
+ {
+ "default": null,
+ "description": "The VPC Subnet ID to launch in"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the resource"
+ },
+ "tenancy":
+ {
+ "default": null,
+ "description": "The tenancy of the instance (if the instance is running in a VPC). Available values: default, dedicated, host."
+ },
+ "timeouts":
+ {
+ "default":
+ {},
+ "description": "Define maximum timeout for creating, updating, and deleting EC2 instance resources"
+ },
+ "user_data":
+ {
+ "default": null,
+ "description": "The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead."
+ },
+ "user_data_base64":
+ {
+ "default": null,
+ "description": "Can be used instead of user_data to pass base64-encoded binary data directly. Use this instead of user_data whenever the value is not a valid UTF-8 string. For example, gzip-encoded user data must be base64-encoded and passed via this argument to avoid corruption."
+ },
+ "user_data_replace_on_change":
+ {
+ "default": false,
+ "description": "When used in combination with user_data or user_data_base64 will trigger a destroy and recreate when set to true. Defaults to false if not set."
+ },
+ "volume_tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to the devices created by the instance at launch time"
+ },
+ "vpc_security_group_ids":
+ {
+ "default": null,
+ "description": "A list of security group IDs to associate with"
+ }
+ }
+ }
+ },
+ "security_group":
+ {
+ "source": "terraform-aws-modules/security-group/aws",
+ "expressions":
+ {
+ "description":
+ {
+ "constant_value": "Security group for example usage with EC2 instance"
+ },
+ "egress_rules":
+ {
+ "constant_value":
+ [
+ "all-all"
+ ]
+ },
+ "ingress_cidr_blocks":
+ {
+ "constant_value":
+ [
+ "0.0.0.0/0"
+ ]
+ },
+ "ingress_rules":
+ {
+ "constant_value":
+ [
+ "http-80-tcp",
+ "all-icmp"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "security_group_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].arn",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].arn",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The ARN of the security group"
+ },
+ "security_group_description":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].description",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].description",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The description of the security group"
+ },
+ "security_group_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].id",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The ID of the security group"
+ },
+ "security_group_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].name",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].name",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The name of the security group"
+ },
+ "security_group_owner_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].owner_id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].owner_id",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The owner ID"
+ },
+ "security_group_vpc_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_security_group.this[0].vpc_id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "aws_security_group.this_name_prefix[0].vpc_id",
+ "aws_security_group.this_name_prefix[0]",
+ "aws_security_group.this_name_prefix"
+ ]
+ },
+ "description": "The VPC ID"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_security_group.this",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.description"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "revoke_rules_on_delete":
+ {
+ "references":
+ [
+ "var.revoke_rules_on_delete"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.create_timeout"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.delete_timeout"
+ ]
+ }
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_sg",
+ "var.use_name_prefix"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group.this_name_prefix",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this_name_prefix",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.description"
+ ]
+ },
+ "name_prefix":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "revoke_rules_on_delete":
+ {
+ "references":
+ [
+ "var.revoke_rules_on_delete"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "references":
+ [
+ "var.create_timeout"
+ ]
+ },
+ "delete":
+ {
+ "references":
+ [
+ "var.delete_timeout"
+ ]
+ }
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.create_sg",
+ "var.use_name_prefix"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_egress_rules",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_egress_rules",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_egress_rules",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_egress_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_egress_rules",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_egress_rules",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_egress_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_egress_with_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_egress_with_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.computed_egress_with_cidr_blocks",
+ "count.index",
+ "var.egress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.computed_egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_egress_with_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_egress_with_ipv6_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_egress_with_ipv6_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.egress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_egress_with_ipv6_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_egress_with_self",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_egress_with_self",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_egress_with_self",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_self",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_self",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "self":
+ {
+ "references":
+ [
+ "var.computed_egress_with_self",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_self",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_egress_with_self"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_egress_with_source_security_group_id",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_egress_with_source_security_group_id",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "source_security_group_id":
+ {
+ "references":
+ [
+ "var.computed_egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_egress_with_source_security_group_id"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_ingress_rules",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_ingress_rules",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_ingress_rules",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_ingress_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_ingress_rules",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.computed_ingress_rules",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_ingress_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_ingress_with_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_ingress_with_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index",
+ "var.ingress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_ingress_with_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_ingress_with_ipv6_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_ingress_with_ipv6_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.ingress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_ingress_with_ipv6_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_ingress_with_self",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_ingress_with_self",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_self",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_self",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_self",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "self":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_self",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_self",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_ingress_with_self"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.computed_ingress_with_source_security_group_id",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "computed_ingress_with_source_security_group_id",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "source_security_group_id":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.computed_ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.number_of_computed_ingress_with_source_security_group_id"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress_rules",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_rules",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.egress_rules",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.egress_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.egress_rules",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.egress_rules",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.egress_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress_with_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_with_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_with_cidr_blocks",
+ "count.index",
+ "var.egress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.egress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.egress_with_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress_with_ipv6_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_with_ipv6_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.egress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.egress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.egress_with_ipv6_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress_with_self",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_with_self",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.egress_with_self",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.egress_with_self",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.egress_with_self",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "self":
+ {
+ "references":
+ [
+ "var.egress_with_self",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.egress_with_self",
+ "count.index",
+ "var.rules",
+ "var.egress_with_self",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.egress_with_self"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress_with_source_security_group_id",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress_with_source_security_group_id",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.egress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "source_security_group_id":
+ {
+ "references":
+ [
+ "var.egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.egress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.egress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.egress_with_source_security_group_id"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.ingress_rules",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_rules",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.ingress_rules",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.ingress_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.ingress_rules",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.rules",
+ "var.ingress_rules",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.ingress_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.ingress_with_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_with_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_with_cidr_blocks",
+ "count.index",
+ "var.ingress_cidr_blocks"
+ ]
+ },
+ "description":
+ {
+ "references":
+ [
+ "var.ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.ingress_with_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.ingress_with_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.ingress_with_ipv6_cidr_blocks",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_with_ipv6_cidr_blocks",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_blocks":
+ {
+ "references":
+ [
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.ingress_ipv6_cidr_blocks"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_ipv6_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.ingress_with_ipv6_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.ingress_with_self",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_with_self",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.ingress_with_self",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_self",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_self",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "self":
+ {
+ "references":
+ [
+ "var.ingress_with_self",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.ingress_with_self",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_self",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.ingress_with_self"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.ingress_with_source_security_group_id",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress_with_source_security_group_id",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "prefix_list_ids":
+ {
+ "references":
+ [
+ "var.ingress_prefix_list_ids"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "security_group_id":
+ {
+ "references":
+ [
+ "local.this_sg_id"
+ ]
+ },
+ "source_security_group_id":
+ {
+ "references":
+ [
+ "var.ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.ingress_with_source_security_group_id",
+ "count.index",
+ "var.rules",
+ "var.ingress_with_source_security_group_id",
+ "count.index"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create",
+ "var.ingress_with_source_security_group_id"
+ ]
+ }
+ }
+ ],
+ "variables":
+ {
+ "auto_groups":
+ {
+ "default":
+ {
+ "activemq":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "activemq-5671-tcp",
+ "activemq-8883-tcp",
+ "activemq-61614-tcp",
+ "activemq-61617-tcp",
+ "activemq-61619-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "alertmanager":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "alertmanager-9093-tcp",
+ "alertmanager-9094-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "carbon-relay-ng":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "carbon-line-in-tcp",
+ "carbon-line-in-udp",
+ "carbon-pickle-tcp",
+ "carbon-pickle-udp",
+ "carbon-gui-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "cassandra":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "cassandra-clients-tcp",
+ "cassandra-thrift-clients-tcp",
+ "cassandra-jmx-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "consul":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "consul-tcp",
+ "consul-grpc-tcp",
+ "consul-webui-http-tcp",
+ "consul-webui-https-tcp",
+ "consul-dns-tcp",
+ "consul-dns-udp",
+ "consul-serf-lan-tcp",
+ "consul-serf-lan-udp",
+ "consul-serf-wan-tcp",
+ "consul-serf-wan-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "dax-cluster":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "dax-cluster-unencrypted-tcp",
+ "dax-cluster-encrypted-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "docker-swarm":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "docker-swarm-mngmt-tcp",
+ "docker-swarm-node-tcp",
+ "docker-swarm-node-udp",
+ "docker-swarm-overlay-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "elasticsearch":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "elasticsearch-rest-tcp",
+ "elasticsearch-java-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "etcd":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "etcd-client-tcp",
+ "etcd-peer-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "grafana":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "grafana-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "graphite-statsd":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "graphite-webui",
+ "graphite-2003-tcp",
+ "graphite-2004-tcp",
+ "graphite-2023-tcp",
+ "graphite-2024-tcp",
+ "graphite-8080-tcp",
+ "graphite-8125-tcp",
+ "graphite-8125-udp",
+ "graphite-8126-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "http-80":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "http-80-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "http-8080":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "http-8080-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "https-443":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "https-443-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "https-8443":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "https-8443-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ipsec-4500":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ipsec-4500-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ipsec-500":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ipsec-500-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "kafka":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "kafka-broker-tcp",
+ "kafka-broker-tls-tcp",
+ "kafka-broker-tls-public-tcp",
+ "kafka-broker-sasl-scram-tcp",
+ "kafka-broker-sasl-scram-tcp",
+ "kafka-broker-sasl-iam-tcp",
+ "kafka-broker-sasl-iam-public-tcp",
+ "kafka-jmx-exporter-tcp",
+ "kafka-node-exporter-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "kibana":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "kibana-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "kubernetes-api":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "kubernetes-api-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ldap":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ldap-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ldaps":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ldaps-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "logstash":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "logstash-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "loki":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "loki-grafana",
+ "loki-grafana-grpc"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "memcached":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "memcached-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "minio":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "minio-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "mongodb":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "mongodb-27017-tcp",
+ "mongodb-27018-tcp",
+ "mongodb-27019-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "mssql":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "mssql-tcp",
+ "mssql-udp",
+ "mssql-analytics-tcp",
+ "mssql-broker-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "mysql":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "mysql-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "nfs":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "nfs-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "nomad":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "nomad-http-tcp",
+ "nomad-rpc-tcp",
+ "nomad-serf-tcp",
+ "nomad-serf-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ntp":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ntp-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "openvpn":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "openvpn-udp",
+ "openvpn-tcp",
+ "openvpn-https-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "oracle-db":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "oracle-db-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "postgresql":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "postgresql-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "prometheus":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "prometheus-http-tcp",
+ "prometheus-pushgateway-http-tcp",
+ "prometheus-node-exporter-http-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "promtail":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "promtail-http"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "puppet":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "puppet-tcp",
+ "puppetdb-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "rabbitmq":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "rabbitmq-4369-tcp",
+ "rabbitmq-5671-tcp",
+ "rabbitmq-5672-tcp",
+ "rabbitmq-15672-tcp",
+ "rabbitmq-25672-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "rdp":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "rdp-tcp",
+ "rdp-udp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "redis":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "redis-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "redshift":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "redshift-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "smtp":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "smtp-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "smtp-submission":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "smtp-submission-587-tcp",
+ "smtp-submission-2587-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "smtps":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "smtps-465-tcp",
+ "smtps-2465-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "solr":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "solr-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "splunk":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "splunk-indexer-tcp",
+ "splunk-clients-tcp",
+ "splunk-splunkd-tcp",
+ "splunk-hec-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "squid":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "squid-proxy-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "ssh":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "ssh-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "storm":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "storm-nimbus-tcp",
+ "storm-ui-tcp",
+ "storm-supervisor-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "vault":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "vault-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "wazuh":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "wazuh-server-agent-connection-tcp",
+ "wazuh-server-agent-connection-udp",
+ "wazuh-server-agent-enrollment",
+ "wazuh-server-agent-cluster-daemon",
+ "wazuh-server-syslog-collector-tcp",
+ "wazuh-server-syslog-collector-udp",
+ "wazuh-server-restful-api",
+ "wazuh-indexer-restful-api",
+ "wazuh-dashboard"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "web":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "http-80-tcp",
+ "http-8080-tcp",
+ "https-443-tcp",
+ "web-jmx-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "winrm":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "winrm-http-tcp",
+ "winrm-https-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "zabbix":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "zabbix-server",
+ "zabbix-proxy",
+ "zabbix-agent"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "zipkin":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "zipkin-admin-tcp",
+ "zipkin-admin-query-tcp",
+ "zipkin-admin-web-tcp",
+ "zipkin-query-tcp",
+ "zipkin-web-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ },
+ "zookeeper":
+ {
+ "egress_rules":
+ [
+ "all-all"
+ ],
+ "ingress_rules":
+ [
+ "zookeeper-2181-tcp",
+ "zookeeper-2182-tls-tcp",
+ "zookeeper-2888-tcp",
+ "zookeeper-3888-tcp",
+ "zookeeper-jmx-tcp"
+ ],
+ "ingress_with_self":
+ [
+ "all-all"
+ ]
+ }
+ },
+ "description": "Map of groups of security group rules to use to generate modules (see update_groups.sh)"
+ },
+ "computed_egress_rules":
+ {
+ "default":
+ [],
+ "description": "List of computed egress rules to create by name"
+ },
+ "computed_egress_with_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of computed egress rules to create where 'cidr_blocks' is used"
+ },
+ "computed_egress_with_ipv6_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of computed egress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "computed_egress_with_self":
+ {
+ "default":
+ [],
+ "description": "List of computed egress rules to create where 'self' is defined"
+ },
+ "computed_egress_with_source_security_group_id":
+ {
+ "default":
+ [],
+ "description": "List of computed egress rules to create where 'source_security_group_id' is used"
+ },
+ "computed_ingress_rules":
+ {
+ "default":
+ [],
+ "description": "List of computed ingress rules to create by name"
+ },
+ "computed_ingress_with_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of computed ingress rules to create where 'cidr_blocks' is used"
+ },
+ "computed_ingress_with_ipv6_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of computed ingress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "computed_ingress_with_self":
+ {
+ "default":
+ [],
+ "description": "List of computed ingress rules to create where 'self' is defined"
+ },
+ "computed_ingress_with_source_security_group_id":
+ {
+ "default":
+ [],
+ "description": "List of computed ingress rules to create where 'source_security_group_id' is used"
+ },
+ "create":
+ {
+ "default": true,
+ "description": "Whether to create security group and all rules"
+ },
+ "create_sg":
+ {
+ "default": true,
+ "description": "Whether to create security group"
+ },
+ "create_timeout":
+ {
+ "default": "10m",
+ "description": "Time to wait for a security group to be created"
+ },
+ "delete_timeout":
+ {
+ "default": "15m",
+ "description": "Time to wait for a security group to be deleted"
+ },
+ "description":
+ {
+ "default": "Security Group managed by Terraform",
+ "description": "Description of security group"
+ },
+ "egress_cidr_blocks":
+ {
+ "default":
+ [
+ "0.0.0.0/0"
+ ],
+ "description": "List of IPv4 CIDR ranges to use on all egress rules"
+ },
+ "egress_ipv6_cidr_blocks":
+ {
+ "default":
+ [
+ "::/0"
+ ],
+ "description": "List of IPv6 CIDR ranges to use on all egress rules"
+ },
+ "egress_prefix_list_ids":
+ {
+ "default":
+ [],
+ "description": "List of prefix list IDs (for allowing access to VPC endpoints) to use on all egress rules"
+ },
+ "egress_rules":
+ {
+ "default":
+ [],
+ "description": "List of egress rules to create by name"
+ },
+ "egress_with_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of egress rules to create where 'cidr_blocks' is used"
+ },
+ "egress_with_ipv6_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of egress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "egress_with_self":
+ {
+ "default":
+ [],
+ "description": "List of egress rules to create where 'self' is defined"
+ },
+ "egress_with_source_security_group_id":
+ {
+ "default":
+ [],
+ "description": "List of egress rules to create where 'source_security_group_id' is used"
+ },
+ "ingress_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of IPv4 CIDR ranges to use on all ingress rules"
+ },
+ "ingress_ipv6_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of IPv6 CIDR ranges to use on all ingress rules"
+ },
+ "ingress_prefix_list_ids":
+ {
+ "default":
+ [],
+ "description": "List of prefix list IDs (for allowing access to VPC endpoints) to use on all ingress rules"
+ },
+ "ingress_rules":
+ {
+ "default":
+ [],
+ "description": "List of ingress rules to create by name"
+ },
+ "ingress_with_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of ingress rules to create where 'cidr_blocks' is used"
+ },
+ "ingress_with_ipv6_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of ingress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "ingress_with_self":
+ {
+ "default":
+ [],
+ "description": "List of ingress rules to create where 'self' is defined"
+ },
+ "ingress_with_source_security_group_id":
+ {
+ "default":
+ [],
+ "description": "List of ingress rules to create where 'source_security_group_id' is used"
+ },
+ "name":
+ {
+ "default": null,
+ "description": "Name of security group - not required if create_sg is false"
+ },
+ "number_of_computed_egress_rules":
+ {
+ "default": 0,
+ "description": "Number of computed egress rules to create by name"
+ },
+ "number_of_computed_egress_with_cidr_blocks":
+ {
+ "default": 0,
+ "description": "Number of computed egress rules to create where 'cidr_blocks' is used"
+ },
+ "number_of_computed_egress_with_ipv6_cidr_blocks":
+ {
+ "default": 0,
+ "description": "Number of computed egress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "number_of_computed_egress_with_self":
+ {
+ "default": 0,
+ "description": "Number of computed egress rules to create where 'self' is defined"
+ },
+ "number_of_computed_egress_with_source_security_group_id":
+ {
+ "default": 0,
+ "description": "Number of computed egress rules to create where 'source_security_group_id' is used"
+ },
+ "number_of_computed_ingress_rules":
+ {
+ "default": 0,
+ "description": "Number of computed ingress rules to create by name"
+ },
+ "number_of_computed_ingress_with_cidr_blocks":
+ {
+ "default": 0,
+ "description": "Number of computed ingress rules to create where 'cidr_blocks' is used"
+ },
+ "number_of_computed_ingress_with_ipv6_cidr_blocks":
+ {
+ "default": 0,
+ "description": "Number of computed ingress rules to create where 'ipv6_cidr_blocks' is used"
+ },
+ "number_of_computed_ingress_with_self":
+ {
+ "default": 0,
+ "description": "Number of computed ingress rules to create where 'self' is defined"
+ },
+ "number_of_computed_ingress_with_source_security_group_id":
+ {
+ "default": 0,
+ "description": "Number of computed ingress rules to create where 'source_security_group_id' is used"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "revoke_rules_on_delete":
+ {
+ "default": false,
+ "description": "Instruct Terraform to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. Enable for EMR."
+ },
+ "rules":
+ {
+ "default":
+ {
+ "_":
+ [
+ "",
+ "",
+ ""
+ ],
+ "activemq-5671-tcp":
+ [
+ "5671",
+ "5671",
+ "tcp",
+ "ActiveMQ AMQP"
+ ],
+ "activemq-61614-tcp":
+ [
+ "61614",
+ "61614",
+ "tcp",
+ "ActiveMQ STOMP"
+ ],
+ "activemq-61617-tcp":
+ [
+ "61617",
+ "61617",
+ "tcp",
+ "ActiveMQ OpenWire"
+ ],
+ "activemq-61619-tcp":
+ [
+ "61619",
+ "61619",
+ "tcp",
+ "ActiveMQ WebSocket"
+ ],
+ "activemq-8883-tcp":
+ [
+ "8883",
+ "8883",
+ "tcp",
+ "ActiveMQ MQTT"
+ ],
+ "alertmanager-9093-tcp":
+ [
+ "9093",
+ "9093",
+ "tcp",
+ "Alert Manager"
+ ],
+ "alertmanager-9094-tcp":
+ [
+ "9094",
+ "9094",
+ "tcp",
+ "Alert Manager Cluster"
+ ],
+ "all-all":
+ [
+ "-1",
+ "-1",
+ "-1",
+ "All protocols"
+ ],
+ "all-icmp":
+ [
+ "-1",
+ "-1",
+ "icmp",
+ "All IPV4 ICMP"
+ ],
+ "all-ipv6-icmp":
+ [
+ "-1",
+ "-1",
+ "58",
+ "All IPV6 ICMP"
+ ],
+ "all-tcp":
+ [
+ "0",
+ "65535",
+ "tcp",
+ "All TCP ports"
+ ],
+ "all-udp":
+ [
+ "0",
+ "65535",
+ "udp",
+ "All UDP ports"
+ ],
+ "carbon-admin-tcp":
+ [
+ "2004",
+ "2004",
+ "tcp",
+ "Carbon admin"
+ ],
+ "carbon-gui-udp":
+ [
+ "8081",
+ "8081",
+ "tcp",
+ "Carbon GUI"
+ ],
+ "carbon-line-in-tcp":
+ [
+ "2003",
+ "2003",
+ "tcp",
+ "Carbon line-in"
+ ],
+ "carbon-line-in-udp":
+ [
+ "2003",
+ "2003",
+ "udp",
+ "Carbon line-in"
+ ],
+ "carbon-pickle-tcp":
+ [
+ "2013",
+ "2013",
+ "tcp",
+ "Carbon pickle"
+ ],
+ "carbon-pickle-udp":
+ [
+ "2013",
+ "2013",
+ "udp",
+ "Carbon pickle"
+ ],
+ "cassandra-clients-tcp":
+ [
+ "9042",
+ "9042",
+ "tcp",
+ "Cassandra clients"
+ ],
+ "cassandra-jmx-tcp":
+ [
+ "7199",
+ "7199",
+ "tcp",
+ "JMX"
+ ],
+ "cassandra-thrift-clients-tcp":
+ [
+ "9160",
+ "9160",
+ "tcp",
+ "Cassandra Thrift clients"
+ ],
+ "consul-dns-tcp":
+ [
+ "8600",
+ "8600",
+ "tcp",
+ "Consul DNS"
+ ],
+ "consul-dns-udp":
+ [
+ "8600",
+ "8600",
+ "udp",
+ "Consul DNS"
+ ],
+ "consul-grpc-tcp":
+ [
+ "8502",
+ "8502",
+ "tcp",
+ "Consul gRPC"
+ ],
+ "consul-serf-lan-tcp":
+ [
+ "8301",
+ "8301",
+ "tcp",
+ "Serf LAN"
+ ],
+ "consul-serf-lan-udp":
+ [
+ "8301",
+ "8301",
+ "udp",
+ "Serf LAN"
+ ],
+ "consul-serf-wan-tcp":
+ [
+ "8302",
+ "8302",
+ "tcp",
+ "Serf WAN"
+ ],
+ "consul-serf-wan-udp":
+ [
+ "8302",
+ "8302",
+ "udp",
+ "Serf WAN"
+ ],
+ "consul-tcp":
+ [
+ "8300",
+ "8300",
+ "tcp",
+ "Consul server"
+ ],
+ "consul-webui-http-tcp":
+ [
+ "8500",
+ "8500",
+ "tcp",
+ "Consul web UI HTTP"
+ ],
+ "consul-webui-https-tcp":
+ [
+ "8501",
+ "8501",
+ "tcp",
+ "Consul web UI HTTPS"
+ ],
+ "dax-cluster-encrypted-tcp":
+ [
+ "9111",
+ "9111",
+ "tcp",
+ "DAX Cluster encrypted"
+ ],
+ "dax-cluster-unencrypted-tcp":
+ [
+ "8111",
+ "8111",
+ "tcp",
+ "DAX Cluster unencrypted"
+ ],
+ "dns-tcp":
+ [
+ "53",
+ "53",
+ "tcp",
+ "DNS"
+ ],
+ "dns-udp":
+ [
+ "53",
+ "53",
+ "udp",
+ "DNS"
+ ],
+ "docker-swarm-mngmt-tcp":
+ [
+ "2377",
+ "2377",
+ "tcp",
+ "Docker Swarm cluster management"
+ ],
+ "docker-swarm-node-tcp":
+ [
+ "7946",
+ "7946",
+ "tcp",
+ "Docker Swarm node"
+ ],
+ "docker-swarm-node-udp":
+ [
+ "7946",
+ "7946",
+ "udp",
+ "Docker Swarm node"
+ ],
+ "docker-swarm-overlay-udp":
+ [
+ "4789",
+ "4789",
+ "udp",
+ "Docker Swarm Overlay Network Traffic"
+ ],
+ "elasticsearch-java-tcp":
+ [
+ "9300",
+ "9300",
+ "tcp",
+ "Elasticsearch Java interface"
+ ],
+ "elasticsearch-rest-tcp":
+ [
+ "9200",
+ "9200",
+ "tcp",
+ "Elasticsearch REST interface"
+ ],
+ "etcd-client-tcp":
+ [
+ "2379",
+ "2379",
+ "tcp",
+ "Etcd Client"
+ ],
+ "etcd-peer-tcp":
+ [
+ "2380",
+ "2380",
+ "tcp",
+ "Etcd Peer"
+ ],
+ "grafana-tcp":
+ [
+ "3000",
+ "3000",
+ "tcp",
+ "Grafana Dashboard"
+ ],
+ "graphite-2003-tcp":
+ [
+ "2003",
+ "2003",
+ "tcp",
+ "Carbon receiver plain text"
+ ],
+ "graphite-2004-tcp":
+ [
+ "2004",
+ "2004",
+ "tcp",
+ "Carbon receiver pickle"
+ ],
+ "graphite-2023-tcp":
+ [
+ "2023",
+ "2023",
+ "tcp",
+ "Carbon aggregator plaintext"
+ ],
+ "graphite-2024-tcp":
+ [
+ "2024",
+ "2024",
+ "tcp",
+ "Carbon aggregator pickle"
+ ],
+ "graphite-8080-tcp":
+ [
+ "8080",
+ "8080",
+ "tcp",
+ "Graphite gunicorn port"
+ ],
+ "graphite-8125-tcp":
+ [
+ "8125",
+ "8125",
+ "tcp",
+ "Statsd TCP"
+ ],
+ "graphite-8125-udp":
+ [
+ "8125",
+ "8125",
+ "udp",
+ "Statsd UDP default"
+ ],
+ "graphite-8126-tcp":
+ [
+ "8126",
+ "8126",
+ "tcp",
+ "Statsd admin"
+ ],
+ "graphite-webui":
+ [
+ "80",
+ "80",
+ "tcp",
+ "Graphite admin interface"
+ ],
+ "http-80-tcp":
+ [
+ "80",
+ "80",
+ "tcp",
+ "HTTP"
+ ],
+ "http-8080-tcp":
+ [
+ "8080",
+ "8080",
+ "tcp",
+ "HTTP"
+ ],
+ "https-443-tcp":
+ [
+ "443",
+ "443",
+ "tcp",
+ "HTTPS"
+ ],
+ "https-8443-tcp":
+ [
+ "8443",
+ "8443",
+ "tcp",
+ "HTTPS"
+ ],
+ "ipsec-4500-udp":
+ [
+ "4500",
+ "4500",
+ "udp",
+ "IPSEC NAT-T"
+ ],
+ "ipsec-500-udp":
+ [
+ "500",
+ "500",
+ "udp",
+ "IPSEC ISAKMP"
+ ],
+ "kafka-broker-sasl-iam-public-tcp":
+ [
+ "9198",
+ "9198",
+ "tcp",
+ "Kafka SASL/IAM Public access control enabled (MSK specific)"
+ ],
+ "kafka-broker-sasl-iam-tcp":
+ [
+ "9098",
+ "9098",
+ "tcp",
+ "Kafka SASL/IAM access control enabled (MSK specific)"
+ ],
+ "kafka-broker-sasl-scram-public-tcp":
+ [
+ "9196",
+ "9196",
+ "tcp",
+ "Kafka SASL/SCRAM Public enabled broker (MSK specific)"
+ ],
+ "kafka-broker-sasl-scram-tcp":
+ [
+ "9096",
+ "9096",
+ "tcp",
+ "Kafka SASL/SCRAM enabled broker (MSK specific)"
+ ],
+ "kafka-broker-tcp":
+ [
+ "9092",
+ "9092",
+ "tcp",
+ "Kafka PLAINTEXT enable broker 0.8.2+"
+ ],
+ "kafka-broker-tls-public-tcp":
+ [
+ "9194",
+ "9194",
+ "tcp",
+ "Kafka TLS Public enabled broker 0.8.2+ (MSK specific)"
+ ],
+ "kafka-broker-tls-tcp":
+ [
+ "9094",
+ "9094",
+ "tcp",
+ "Kafka TLS enabled broker 0.8.2+"
+ ],
+ "kafka-jmx-exporter-tcp":
+ [
+ "11001",
+ "11001",
+ "tcp",
+ "Kafka JMX Exporter"
+ ],
+ "kafka-node-exporter-tcp":
+ [
+ "11002",
+ "11002",
+ "tcp",
+ "Kafka Node Exporter"
+ ],
+ "kibana-tcp":
+ [
+ "5601",
+ "5601",
+ "tcp",
+ "Kibana Web Interface"
+ ],
+ "kubernetes-api-tcp":
+ [
+ "6443",
+ "6443",
+ "tcp",
+ "Kubernetes API Server"
+ ],
+ "ldap-tcp":
+ [
+ "389",
+ "389",
+ "tcp",
+ "LDAP"
+ ],
+ "ldaps-tcp":
+ [
+ "636",
+ "636",
+ "tcp",
+ "LDAPS"
+ ],
+ "logstash-tcp":
+ [
+ "5044",
+ "5044",
+ "tcp",
+ "Logstash"
+ ],
+ "loki-grafana":
+ [
+ "3100",
+ "3100",
+ "tcp",
+ "Grafana Loki enpoint"
+ ],
+ "loki-grafana-grpc":
+ [
+ "9096",
+ "9096",
+ "tcp",
+ "Grafana Loki GRPC"
+ ],
+ "memcached-tcp":
+ [
+ "11211",
+ "11211",
+ "tcp",
+ "Memcached"
+ ],
+ "minio-tcp":
+ [
+ "9000",
+ "9000",
+ "tcp",
+ "MinIO"
+ ],
+ "mongodb-27017-tcp":
+ [
+ "27017",
+ "27017",
+ "tcp",
+ "MongoDB"
+ ],
+ "mongodb-27018-tcp":
+ [
+ "27018",
+ "27018",
+ "tcp",
+ "MongoDB shard"
+ ],
+ "mongodb-27019-tcp":
+ [
+ "27019",
+ "27019",
+ "tcp",
+ "MongoDB config server"
+ ],
+ "mssql-analytics-tcp":
+ [
+ "2383",
+ "2383",
+ "tcp",
+ "MSSQL Analytics"
+ ],
+ "mssql-broker-tcp":
+ [
+ "4022",
+ "4022",
+ "tcp",
+ "MSSQL Broker"
+ ],
+ "mssql-tcp":
+ [
+ "1433",
+ "1433",
+ "tcp",
+ "MSSQL Server"
+ ],
+ "mssql-udp":
+ [
+ "1434",
+ "1434",
+ "udp",
+ "MSSQL Browser"
+ ],
+ "mysql-tcp":
+ [
+ "3306",
+ "3306",
+ "tcp",
+ "MySQL/Aurora"
+ ],
+ "nfs-tcp":
+ [
+ "2049",
+ "2049",
+ "tcp",
+ "NFS/EFS"
+ ],
+ "nomad-http-tcp":
+ [
+ "4646",
+ "4646",
+ "tcp",
+ "Nomad HTTP"
+ ],
+ "nomad-rpc-tcp":
+ [
+ "4647",
+ "4647",
+ "tcp",
+ "Nomad RPC"
+ ],
+ "nomad-serf-tcp":
+ [
+ "4648",
+ "4648",
+ "tcp",
+ "Serf"
+ ],
+ "nomad-serf-udp":
+ [
+ "4648",
+ "4648",
+ "udp",
+ "Serf"
+ ],
+ "ntp-udp":
+ [
+ "123",
+ "123",
+ "udp",
+ "NTP"
+ ],
+ "octopus-tentacle-tcp":
+ [
+ "10933",
+ "10933",
+ "tcp",
+ "Octopus Tentacle"
+ ],
+ "openvpn-https-tcp":
+ [
+ "443",
+ "443",
+ "tcp",
+ "OpenVPN"
+ ],
+ "openvpn-tcp":
+ [
+ "943",
+ "943",
+ "tcp",
+ "OpenVPN"
+ ],
+ "openvpn-udp":
+ [
+ "1194",
+ "1194",
+ "udp",
+ "OpenVPN"
+ ],
+ "oracle-db-tcp":
+ [
+ "1521",
+ "1521",
+ "tcp",
+ "Oracle"
+ ],
+ "postgresql-tcp":
+ [
+ "5432",
+ "5432",
+ "tcp",
+ "PostgreSQL"
+ ],
+ "prometheus-http-tcp":
+ [
+ "9090",
+ "9090",
+ "tcp",
+ "Prometheus"
+ ],
+ "prometheus-node-exporter-http-tcp":
+ [
+ "9100",
+ "9100",
+ "tcp",
+ "Prometheus Node Exporter"
+ ],
+ "prometheus-pushgateway-http-tcp":
+ [
+ "9091",
+ "9091",
+ "tcp",
+ "Prometheus Pushgateway"
+ ],
+ "promtail-http":
+ [
+ "9200",
+ "9200",
+ "tcp",
+ "Promtail endpoint"
+ ],
+ "puppet-tcp":
+ [
+ "8140",
+ "8140",
+ "tcp",
+ "Puppet"
+ ],
+ "puppetdb-tcp":
+ [
+ "8081",
+ "8081",
+ "tcp",
+ "PuppetDB"
+ ],
+ "rabbitmq-15672-tcp":
+ [
+ "15672",
+ "15672",
+ "tcp",
+ "RabbitMQ"
+ ],
+ "rabbitmq-25672-tcp":
+ [
+ "25672",
+ "25672",
+ "tcp",
+ "RabbitMQ"
+ ],
+ "rabbitmq-4369-tcp":
+ [
+ "4369",
+ "4369",
+ "tcp",
+ "RabbitMQ epmd"
+ ],
+ "rabbitmq-5671-tcp":
+ [
+ "5671",
+ "5671",
+ "tcp",
+ "RabbitMQ"
+ ],
+ "rabbitmq-5672-tcp":
+ [
+ "5672",
+ "5672",
+ "tcp",
+ "RabbitMQ"
+ ],
+ "rdp-tcp":
+ [
+ "3389",
+ "3389",
+ "tcp",
+ "Remote Desktop"
+ ],
+ "rdp-udp":
+ [
+ "3389",
+ "3389",
+ "udp",
+ "Remote Desktop"
+ ],
+ "redis-tcp":
+ [
+ "6379",
+ "6379",
+ "tcp",
+ "Redis"
+ ],
+ "redshift-tcp":
+ [
+ "5439",
+ "5439",
+ "tcp",
+ "Redshift"
+ ],
+ "saltstack-tcp":
+ [
+ "4505",
+ "4506",
+ "tcp",
+ "SaltStack"
+ ],
+ "smtp-submission-2587-tcp":
+ [
+ "2587",
+ "2587",
+ "tcp",
+ "SMTP Submission"
+ ],
+ "smtp-submission-587-tcp":
+ [
+ "587",
+ "587",
+ "tcp",
+ "SMTP Submission"
+ ],
+ "smtp-tcp":
+ [
+ "25",
+ "25",
+ "tcp",
+ "SMTP"
+ ],
+ "smtps-2456-tcp":
+ [
+ "2465",
+ "2465",
+ "tcp",
+ "SMTPS"
+ ],
+ "smtps-465-tcp":
+ [
+ "465",
+ "465",
+ "tcp",
+ "SMTPS"
+ ],
+ "solr-tcp":
+ [
+ "8983",
+ "8987",
+ "tcp",
+ "Solr"
+ ],
+ "splunk-hec-tcp":
+ [
+ "8088",
+ "8088",
+ "tcp",
+ "Splunk HEC"
+ ],
+ "splunk-indexer-tcp":
+ [
+ "9997",
+ "9997",
+ "tcp",
+ "Splunk indexer"
+ ],
+ "splunk-splunkd-tcp":
+ [
+ "8089",
+ "8089",
+ "tcp",
+ "Splunkd"
+ ],
+ "splunk-web-tcp":
+ [
+ "8000",
+ "8000",
+ "tcp",
+ "Splunk Web"
+ ],
+ "squid-proxy-tcp":
+ [
+ "3128",
+ "3128",
+ "tcp",
+ "Squid default proxy"
+ ],
+ "ssh-tcp":
+ [
+ "22",
+ "22",
+ "tcp",
+ "SSH"
+ ],
+ "storm-nimbus-tcp":
+ [
+ "6627",
+ "6627",
+ "tcp",
+ "Nimbus"
+ ],
+ "storm-supervisor-tcp":
+ [
+ "6700",
+ "6703",
+ "tcp",
+ "Supervisor"
+ ],
+ "storm-ui-tcp":
+ [
+ "8080",
+ "8080",
+ "tcp",
+ "Storm UI"
+ ],
+ "vault-tcp":
+ [
+ "8200",
+ "8200",
+ "tcp",
+ "Vault"
+ ],
+ "wazuh-dashboard":
+ [
+ "443",
+ "443",
+ "tcp",
+ "Wazuh web user interface"
+ ],
+ "wazuh-indexer-restful-api":
+ [
+ "9200",
+ "9200",
+ "tcp",
+ "Wazuh indexer RESTful API"
+ ],
+ "wazuh-server-agent-cluster-daemon":
+ [
+ "1516",
+ "1516",
+ "tcp",
+ "Wazuh cluster daemon"
+ ],
+ "wazuh-server-agent-connection-tcp":
+ [
+ "1514",
+ "1514",
+ "tcp",
+ "Agent connection service(TCP)"
+ ],
+ "wazuh-server-agent-connection-udp":
+ [
+ "1514",
+ "1514",
+ "udp",
+ "Agent connection service(UDP)"
+ ],
+ "wazuh-server-agent-enrollment":
+ [
+ "1515",
+ "1515",
+ "tcp",
+ "Agent enrollment service"
+ ],
+ "wazuh-server-restful-api":
+ [
+ "55000",
+ "55000",
+ "tcp",
+ "Wazuh server RESTful API"
+ ],
+ "wazuh-server-syslog-collector-tcp":
+ [
+ "514",
+ "514",
+ "tcp",
+ "Wazuh Syslog collector(TCP)"
+ ],
+ "wazuh-server-syslog-collector-udp":
+ [
+ "514",
+ "514",
+ "udp",
+ "Wazuh Syslog collector(UDP)"
+ ],
+ "web-jmx-tcp":
+ [
+ "1099",
+ "1099",
+ "tcp",
+ "JMX"
+ ],
+ "winrm-http-tcp":
+ [
+ "5985",
+ "5985",
+ "tcp",
+ "WinRM HTTP"
+ ],
+ "winrm-https-tcp":
+ [
+ "5986",
+ "5986",
+ "tcp",
+ "WinRM HTTPS"
+ ],
+ "zabbix-agent":
+ [
+ "10050",
+ "10050",
+ "tcp",
+ "Zabbix Agent"
+ ],
+ "zabbix-proxy":
+ [
+ "10051",
+ "10051",
+ "tcp",
+ "Zabbix Proxy"
+ ],
+ "zabbix-server":
+ [
+ "10051",
+ "10051",
+ "tcp",
+ "Zabbix Server"
+ ],
+ "zipkin-admin-query-tcp":
+ [
+ "9901",
+ "9901",
+ "tcp",
+ "Zipkin Admin port query"
+ ],
+ "zipkin-admin-tcp":
+ [
+ "9990",
+ "9990",
+ "tcp",
+ "Zipkin Admin port collector"
+ ],
+ "zipkin-admin-web-tcp":
+ [
+ "9991",
+ "9991",
+ "tcp",
+ "Zipkin Admin port web"
+ ],
+ "zipkin-query-tcp":
+ [
+ "9411",
+ "9411",
+ "tcp",
+ "Zipkin query port"
+ ],
+ "zipkin-web-tcp":
+ [
+ "8080",
+ "8080",
+ "tcp",
+ "Zipkin web port"
+ ],
+ "zookeeper-2181-tcp":
+ [
+ "2181",
+ "2181",
+ "tcp",
+ "Zookeeper"
+ ],
+ "zookeeper-2182-tls-tcp":
+ [
+ "2182",
+ "2182",
+ "tcp",
+ "Zookeeper TLS (MSK specific)"
+ ],
+ "zookeeper-2888-tcp":
+ [
+ "2888",
+ "2888",
+ "tcp",
+ "Zookeeper"
+ ],
+ "zookeeper-3888-tcp":
+ [
+ "3888",
+ "3888",
+ "tcp",
+ "Zookeeper"
+ ],
+ "zookeeper-jmx-tcp":
+ [
+ "7199",
+ "7199",
+ "tcp",
+ "JMX"
+ ]
+ },
+ "description": "Map of known security group rules (define as 'name' = ['from port', 'to port', 'protocol', 'description'])"
+ },
+ "security_group_id":
+ {
+ "default": null,
+ "description": "ID of existing security group whose rules we will manage"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A mapping of tags to assign to security group"
+ },
+ "use_name_prefix":
+ {
+ "default": true,
+ "description": "Whether to use name_prefix or fixed name. Should be true to able to update security group name after initial creation"
+ },
+ "vpc_id":
+ {
+ "default": null,
+ "description": "ID of the VPC where to create security group"
+ }
+ }
+ },
+ "version_constraint": "~> 4.0"
+ },
+ "vpc":
+ {
+ "source": "terraform-aws-modules/vpc/aws",
+ "expressions":
+ {
+ "azs":
+ {
+ "references":
+ [
+ "local.region",
+ "local.region",
+ "local.region"
+ ]
+ },
+ "cidr":
+ {
+ "constant_value": "10.99.0.0/18"
+ },
+ "database_subnets":
+ {
+ "constant_value":
+ [
+ "10.99.7.0/24",
+ "10.99.8.0/24",
+ "10.99.9.0/24"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "local.name"
+ ]
+ },
+ "private_subnets":
+ {
+ "constant_value":
+ [
+ "10.99.3.0/24",
+ "10.99.4.0/24",
+ "10.99.5.0/24"
+ ]
+ },
+ "public_subnets":
+ {
+ "constant_value":
+ [
+ "10.99.0.0/24",
+ "10.99.1.0/24",
+ "10.99.2.0/24"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "local.tags"
+ ]
+ }
+ },
+ "module":
+ {
+ "outputs":
+ {
+ "azs":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "var.azs"
+ ]
+ },
+ "description": "A list of availability zones specified as argument to this module"
+ },
+ "cgw_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "List of ARNs of Customer Gateway"
+ },
+ "cgw_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "List of IDs of Customer Gateway"
+ },
+ "database_internet_gateway_route_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.database_internet_gateway[0].id",
+ "aws_route.database_internet_gateway[0]",
+ "aws_route.database_internet_gateway"
+ ]
+ },
+ "description": "ID of the database internet gateway route"
+ },
+ "database_ipv6_egress_route_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.database_ipv6_egress[0].id",
+ "aws_route.database_ipv6_egress[0]",
+ "aws_route.database_ipv6_egress"
+ ]
+ },
+ "description": "ID of the database IPv6 egress route"
+ },
+ "database_nat_gateway_route_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.database_nat_gateway"
+ ]
+ },
+ "description": "List of IDs of the database nat gateway route"
+ },
+ "database_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.database[0].arn",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "description": "ARN of the database network ACL"
+ },
+ "database_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "description": "ID of the database network ACL"
+ },
+ "database_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.database"
+ ]
+ },
+ "description": "List of IDs of the database route table association"
+ },
+ "database_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.database",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of database route tables"
+ },
+ "database_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of ARNs of database subnets"
+ },
+ "database_subnet_group":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_db_subnet_group.database[0].id",
+ "aws_db_subnet_group.database[0]",
+ "aws_db_subnet_group.database"
+ ]
+ },
+ "description": "ID of database subnet group"
+ },
+ "database_subnet_group_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_db_subnet_group.database[0].name",
+ "aws_db_subnet_group.database[0]",
+ "aws_db_subnet_group.database"
+ ]
+ },
+ "description": "Name of database subnet group"
+ },
+ "database_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of IDs of database subnets"
+ },
+ "database_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of cidr_blocks of database subnets"
+ },
+ "database_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of database subnets in an IPv6 enabled VPC"
+ },
+ "default_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].default_network_acl_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the default network ACL"
+ },
+ "default_route_table_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].default_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the default route table"
+ },
+ "default_security_group_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].default_security_group_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the security group created by default on VPC creation"
+ },
+ "default_vpc_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].arn",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ARN of the Default VPC"
+ },
+ "default_vpc_cidr_block":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].cidr_block",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The CIDR block of the Default VPC"
+ },
+ "default_vpc_default_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].default_network_acl_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the default network ACL of the Default VPC"
+ },
+ "default_vpc_default_route_table_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].default_route_table_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the default route table of the Default VPC"
+ },
+ "default_vpc_default_security_group_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].default_security_group_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the security group created by default on Default VPC creation"
+ },
+ "default_vpc_enable_dns_hostnames":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].enable_dns_hostnames",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Whether or not the Default VPC has DNS hostname support"
+ },
+ "default_vpc_enable_dns_support":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].enable_dns_support",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Whether or not the Default VPC has DNS support"
+ },
+ "default_vpc_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the Default VPC"
+ },
+ "default_vpc_instance_tenancy":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].instance_tenancy",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Tenancy of instances spin up within Default VPC"
+ },
+ "default_vpc_main_route_table_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_default_vpc.this[0].main_route_table_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the main route table associated with the Default VPC"
+ },
+ "dhcp_options_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc_dhcp_options.this[0].id",
+ "aws_vpc_dhcp_options.this[0]",
+ "aws_vpc_dhcp_options.this"
+ ]
+ },
+ "description": "The ID of the DHCP options"
+ },
+ "egress_only_internet_gateway_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_egress_only_internet_gateway.this[0].id",
+ "aws_egress_only_internet_gateway.this[0]",
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "description": "The ID of the egress only Internet Gateway"
+ },
+ "elasticache_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.elasticache[0].arn",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "description": "ARN of the elasticache network ACL"
+ },
+ "elasticache_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "description": "ID of the elasticache network ACL"
+ },
+ "elasticache_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.elasticache"
+ ]
+ },
+ "description": "List of IDs of the elasticache route table association"
+ },
+ "elasticache_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.elasticache",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of elasticache route tables"
+ },
+ "elasticache_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of ARNs of elasticache subnets"
+ },
+ "elasticache_subnet_group":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_elasticache_subnet_group.elasticache[0].id",
+ "aws_elasticache_subnet_group.elasticache[0]",
+ "aws_elasticache_subnet_group.elasticache"
+ ]
+ },
+ "description": "ID of elasticache subnet group"
+ },
+ "elasticache_subnet_group_name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_elasticache_subnet_group.elasticache[0].name",
+ "aws_elasticache_subnet_group.elasticache[0]",
+ "aws_elasticache_subnet_group.elasticache"
+ ]
+ },
+ "description": "Name of elasticache subnet group"
+ },
+ "elasticache_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of IDs of elasticache subnets"
+ },
+ "elasticache_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of cidr_blocks of elasticache subnets"
+ },
+ "elasticache_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of elasticache subnets in an IPv6 enabled VPC"
+ },
+ "igw_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_internet_gateway.this[0].arn",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "description": "The ARN of the Internet Gateway"
+ },
+ "igw_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "description": "The ID of the Internet Gateway"
+ },
+ "intra_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.intra[0].arn",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "description": "ARN of the intra network ACL"
+ },
+ "intra_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "description": "ID of the intra network ACL"
+ },
+ "intra_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.intra"
+ ]
+ },
+ "description": "List of IDs of the intra route table association"
+ },
+ "intra_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.intra"
+ ]
+ },
+ "description": "List of IDs of intra route tables"
+ },
+ "intra_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of ARNs of intra subnets"
+ },
+ "intra_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of IDs of intra subnets"
+ },
+ "intra_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of cidr_blocks of intra subnets"
+ },
+ "intra_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of intra subnets in an IPv6 enabled VPC"
+ },
+ "name":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "description": "The name of the VPC specified as argument to this module"
+ },
+ "nat_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_eip.nat"
+ ]
+ },
+ "description": "List of allocation ID of Elastic IPs created for AWS NAT Gateway"
+ },
+ "nat_public_ips":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "var.reuse_nat_ips",
+ "var.external_nat_ips",
+ "aws_eip.nat"
+ ]
+ },
+ "description": "List of public Elastic IPs created for AWS NAT Gateway"
+ },
+ "natgw_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_nat_gateway.this"
+ ]
+ },
+ "description": "List of NAT Gateway IDs"
+ },
+ "outpost_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.outpost[0].arn",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "description": "ARN of the outpost network ACL"
+ },
+ "outpost_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "description": "ID of the outpost network ACL"
+ },
+ "outpost_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of ARNs of outpost subnets"
+ },
+ "outpost_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of IDs of outpost subnets"
+ },
+ "outpost_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of cidr_blocks of outpost subnets"
+ },
+ "outpost_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of outpost subnets in an IPv6 enabled VPC"
+ },
+ "private_ipv6_egress_route_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.private_ipv6_egress"
+ ]
+ },
+ "description": "List of IDs of the ipv6 egress route"
+ },
+ "private_nat_gateway_route_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.private_nat_gateway"
+ ]
+ },
+ "description": "List of IDs of the private nat gateway route"
+ },
+ "private_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.private[0].arn",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "description": "ARN of the private network ACL"
+ },
+ "private_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "description": "ID of the private network ACL"
+ },
+ "private_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.private"
+ ]
+ },
+ "description": "List of IDs of the private route table association"
+ },
+ "private_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of private route tables"
+ },
+ "private_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of ARNs of private subnets"
+ },
+ "private_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of IDs of private subnets"
+ },
+ "private_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of cidr_blocks of private subnets"
+ },
+ "private_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of private subnets in an IPv6 enabled VPC"
+ },
+ "public_internet_gateway_ipv6_route_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.public_internet_gateway_ipv6[0].id",
+ "aws_route.public_internet_gateway_ipv6[0]",
+ "aws_route.public_internet_gateway_ipv6"
+ ]
+ },
+ "description": "ID of the IPv6 internet gateway route"
+ },
+ "public_internet_gateway_route_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route.public_internet_gateway[0].id",
+ "aws_route.public_internet_gateway[0]",
+ "aws_route.public_internet_gateway"
+ ]
+ },
+ "description": "ID of the internet gateway route"
+ },
+ "public_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.public[0].arn",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "description": "ARN of the public network ACL"
+ },
+ "public_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "description": "ID of the public network ACL"
+ },
+ "public_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.public"
+ ]
+ },
+ "description": "List of IDs of the public route table association"
+ },
+ "public_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.public"
+ ]
+ },
+ "description": "List of IDs of public route tables"
+ },
+ "public_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of ARNs of public subnets"
+ },
+ "public_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of IDs of public subnets"
+ },
+ "public_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of cidr_blocks of public subnets"
+ },
+ "public_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of public subnets in an IPv6 enabled VPC"
+ },
+ "redshift_network_acl_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.redshift[0].arn",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "description": "ARN of the redshift network ACL"
+ },
+ "redshift_network_acl_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "description": "ID of the redshift network ACL"
+ },
+ "redshift_public_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.redshift_public"
+ ]
+ },
+ "description": "List of IDs of the public redshift route table association"
+ },
+ "redshift_route_table_association_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table_association.redshift"
+ ]
+ },
+ "description": "List of IDs of the redshift route table association"
+ },
+ "redshift_route_table_ids":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_route_table.redshift",
+ "aws_route_table.redshift",
+ "var.enable_public_redshift",
+ "aws_route_table.public",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of redshift route tables"
+ },
+ "redshift_subnet_arns":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of ARNs of redshift subnets"
+ },
+ "redshift_subnet_group":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_redshift_subnet_group.redshift[0].id",
+ "aws_redshift_subnet_group.redshift[0]",
+ "aws_redshift_subnet_group.redshift"
+ ]
+ },
+ "description": "ID of redshift subnet group"
+ },
+ "redshift_subnets":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of IDs of redshift subnets"
+ },
+ "redshift_subnets_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of cidr_blocks of redshift subnets"
+ },
+ "redshift_subnets_ipv6_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of redshift subnets in an IPv6 enabled VPC"
+ },
+ "this_customer_gateway":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "Map of Customer Gateway attributes"
+ },
+ "vgw_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpn_gateway.this[0].arn",
+ "aws_vpn_gateway.this[0]",
+ "aws_vpn_gateway.this"
+ ]
+ },
+ "description": "The ARN of the VPN Gateway"
+ },
+ "vgw_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpn_gateway.this[0].id",
+ "aws_vpn_gateway.this[0]",
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this[0].vpn_gateway_id",
+ "aws_vpn_gateway_attachment.this[0]",
+ "aws_vpn_gateway_attachment.this"
+ ]
+ },
+ "description": "The ID of the VPN Gateway"
+ },
+ "vpc_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].arn",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ARN of the VPC"
+ },
+ "vpc_cidr_block":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The CIDR block of the VPC"
+ },
+ "vpc_enable_dns_hostnames":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].enable_dns_hostnames",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Whether or not the VPC has DNS hostname support"
+ },
+ "vpc_enable_dns_support":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].enable_dns_support",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Whether or not the VPC has DNS support"
+ },
+ "vpc_flow_log_cloudwatch_iam_role_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "local.flow_log_iam_role_arn"
+ ]
+ },
+ "description": "The ARN of the IAM role used when pushing logs to Cloudwatch log group"
+ },
+ "vpc_flow_log_destination_arn":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "local.flow_log_destination_arn"
+ ]
+ },
+ "description": "The ARN of the destination for VPC Flow Logs"
+ },
+ "vpc_flow_log_destination_type":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "var.flow_log_destination_type"
+ ]
+ },
+ "description": "The type of the destination for VPC Flow Logs"
+ },
+ "vpc_flow_log_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_flow_log.this[0].id",
+ "aws_flow_log.this[0]",
+ "aws_flow_log.this"
+ ]
+ },
+ "description": "The ID of the Flow Log resource"
+ },
+ "vpc_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the VPC"
+ },
+ "vpc_instance_tenancy":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].instance_tenancy",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Tenancy of instances spin up within VPC"
+ },
+ "vpc_ipv6_association_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].ipv6_association_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The association ID for the IPv6 CIDR block"
+ },
+ "vpc_ipv6_cidr_block":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The IPv6 CIDR block"
+ },
+ "vpc_main_route_table_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].main_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the main route table associated with this VPC"
+ },
+ "vpc_owner_id":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].owner_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the AWS account that owns the VPC"
+ },
+ "vpc_secondary_cidr_blocks":
+ {
+ "expression":
+ {
+ "references":
+ [
+ "aws_vpc_ipv4_cidr_block_association.this"
+ ]
+ },
+ "description": "List of secondary CIDR blocks of the VPC"
+ }
+ },
+ "resources":
+ [
+ {
+ "address": "aws_cloudwatch_log_group.flow_log",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "flow_log",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "kms_key_id":
+ {
+ "references":
+ [
+ "var.flow_log_cloudwatch_log_group_kms_key_id"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.flow_log_cloudwatch_log_group_name_prefix",
+ "local.flow_log_cloudwatch_log_group_name_suffix"
+ ]
+ },
+ "retention_in_days":
+ {
+ "references":
+ [
+ "var.flow_log_cloudwatch_log_group_retention_in_days"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_log_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_customer_gateway.this",
+ "mode": "managed",
+ "type": "aws_customer_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "bgp_asn":
+ {
+ "references":
+ [
+ "each.value[\"bgp_asn\"]",
+ "each.value"
+ ]
+ },
+ "device_name":
+ {
+ "references":
+ [
+ "each.value"
+ ]
+ },
+ "ip_address":
+ {
+ "references":
+ [
+ "each.value[\"ip_address\"]",
+ "each.value"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "each.key",
+ "var.tags",
+ "var.customer_gateway_tags"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "ipsec.1"
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression":
+ {
+ "references":
+ [
+ "var.customer_gateways"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_subnet_group.database",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.database_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.database_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.database_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.create_database_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_network_acl.this",
+ "mode": "managed",
+ "type": "aws_default_network_acl",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "default_network_acl_id":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].default_network_acl_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "subnet_ids":
+ {
+ "constant_value": null
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.default_network_acl_name",
+ "var.name",
+ "var.tags",
+ "var.default_network_acl_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.manage_default_network_acl"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_route_table.default",
+ "mode": "managed",
+ "type": "aws_default_route_table",
+ "name": "default",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "default_route_table_id":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].default_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "propagating_vgws":
+ {
+ "references":
+ [
+ "var.default_route_table_propagating_vgws"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.default_route_table_name",
+ "var.name",
+ "var.tags",
+ "var.default_route_table_tags"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ },
+ "update":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.manage_default_route_table"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_security_group.this",
+ "mode": "managed",
+ "type": "aws_default_security_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.default_security_group_name",
+ "var.name",
+ "var.tags",
+ "var.default_security_group_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.manage_default_security_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_vpc.this",
+ "mode": "managed",
+ "type": "aws_default_vpc",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "enable_classiclink":
+ {
+ "constant_value": null
+ },
+ "enable_dns_hostnames":
+ {
+ "references":
+ [
+ "var.default_vpc_enable_dns_hostnames"
+ ]
+ },
+ "enable_dns_support":
+ {
+ "references":
+ [
+ "var.default_vpc_enable_dns_support"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.default_vpc_name",
+ "var.tags",
+ "var.default_vpc_tags"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.manage_default_vpc"
+ ]
+ }
+ },
+ {
+ "address": "aws_egress_only_internet_gateway.this",
+ "mode": "managed",
+ "type": "aws_egress_only_internet_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags",
+ "var.igw_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "local.max_subnet_length"
+ ]
+ }
+ },
+ {
+ "address": "aws_eip.nat",
+ "mode": "managed",
+ "type": "aws_eip",
+ "name": "nat",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.azs",
+ "var.single_nat_gateway",
+ "count.index",
+ "var.tags",
+ "var.nat_eip_tags"
+ ]
+ },
+ "vpc":
+ {
+ "constant_value": true
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "var.reuse_nat_ips",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_elasticache_subnet_group.elasticache",
+ "mode": "managed",
+ "type": "aws_elasticache_subnet_group",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.elasticache_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.elasticache_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.elasticache_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.create_elasticache_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_flow_log.this",
+ "mode": "managed",
+ "type": "aws_flow_log",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "iam_role_arn":
+ {
+ "references":
+ [
+ "local.flow_log_iam_role_arn"
+ ]
+ },
+ "log_destination":
+ {
+ "references":
+ [
+ "local.flow_log_destination_arn"
+ ]
+ },
+ "log_destination_type":
+ {
+ "references":
+ [
+ "var.flow_log_destination_type"
+ ]
+ },
+ "log_format":
+ {
+ "references":
+ [
+ "var.flow_log_log_format"
+ ]
+ },
+ "max_aggregation_interval":
+ {
+ "references":
+ [
+ "var.flow_log_max_aggregation_interval"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ },
+ "traffic_type":
+ {
+ "references":
+ [
+ "var.flow_log_traffic_type"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.enable_flow_log"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_policy.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "name_prefix":
+ {
+ "constant_value": "vpc-flow-log-to-cloudwatch-"
+ },
+ "policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch[0].json",
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch[0]",
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assume_role_policy":
+ {
+ "references":
+ [
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role[0].json",
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role[0]",
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role"
+ ]
+ },
+ "name_prefix":
+ {
+ "constant_value": "vpc-flow-log-role-"
+ },
+ "permissions_boundary":
+ {
+ "references":
+ [
+ "var.vpc_flow_log_permissions_boundary"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "policy_arn":
+ {
+ "references":
+ [
+ "aws_iam_policy.vpc_flow_log_cloudwatch[0].arn",
+ "aws_iam_policy.vpc_flow_log_cloudwatch[0]",
+ "aws_iam_policy.vpc_flow_log_cloudwatch"
+ ]
+ },
+ "role":
+ {
+ "references":
+ [
+ "aws_iam_role.vpc_flow_log_cloudwatch[0].name",
+ "aws_iam_role.vpc_flow_log_cloudwatch[0]",
+ "aws_iam_role.vpc_flow_log_cloudwatch"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_internet_gateway.this",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags",
+ "var.igw_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_nat_gateway.this",
+ "mode": "managed",
+ "type": "aws_nat_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "allocation_id":
+ {
+ "references":
+ [
+ "local.nat_gateway_ips",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.public",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.azs",
+ "var.single_nat_gateway",
+ "count.index",
+ "var.tags",
+ "var.nat_gateway_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "local.nat_gateway_count"
+ ]
+ },
+ "depends_on":
+ [
+ "aws_internet_gateway.this"
+ ]
+ },
+ {
+ "address": "aws_network_acl.database",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.database"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.tags",
+ "var.database_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.elasticache",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.tags",
+ "var.elasticache_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.intra",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.intra"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.tags",
+ "var.intra_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.outpost",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.outpost"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.outpost_subnet_suffix",
+ "var.tags",
+ "var.outpost_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.private",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.private"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.tags",
+ "var.private_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.public",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.public"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.tags",
+ "var.public_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.redshift",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.tags",
+ "var.redshift_acl_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.database_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "database_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets",
+ "var.database_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.database_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "database_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets",
+ "var.database_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.elasticache_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "elasticache_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets",
+ "var.elasticache_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.elasticache_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "elasticache_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets",
+ "var.elasticache_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.intra_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "intra_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets",
+ "var.intra_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.intra_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "intra_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets",
+ "var.intra_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.outpost_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "outpost_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets",
+ "var.outpost_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.outpost_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "outpost_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets",
+ "var.outpost_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.private_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "private_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets",
+ "var.private_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.private_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "private_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets",
+ "var.private_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.public_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "public_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets",
+ "var.public_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.public_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "public_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets",
+ "var.public_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.redshift_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "redshift_inbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": false
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets",
+ "var.redshift_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.redshift_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "redshift_outbound",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress":
+ {
+ "constant_value": true
+ },
+ "from_port":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id":
+ {
+ "references":
+ [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "protocol":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port":
+ {
+ "references":
+ [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets",
+ "var.redshift_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_redshift_subnet_group.redshift",
+ "mode": "managed",
+ "type": "aws_redshift_subnet_group",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "description":
+ {
+ "references":
+ [
+ "var.name"
+ ]
+ },
+ "name":
+ {
+ "references":
+ [
+ "var.redshift_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids":
+ {
+ "references":
+ [
+ "aws_subnet.redshift"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.redshift_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.redshift_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.create_redshift_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_internet_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_internet_gateway",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_cidr_block":
+ {
+ "constant_value": "0.0.0.0/0"
+ },
+ "gateway_id":
+ {
+ "references":
+ [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.database[0].id",
+ "aws_route_table.database[0]",
+ "aws_route_table.database"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route",
+ "var.create_database_nat_gateway_route"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_ipv6_egress",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_ipv6_egress",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_ipv6_cidr_block":
+ {
+ "constant_value": "::/0"
+ },
+ "egress_only_gateway_id":
+ {
+ "references":
+ [
+ "aws_egress_only_internet_gateway.this[0].id",
+ "aws_egress_only_internet_gateway.this[0]",
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.database[0].id",
+ "aws_route_table.database[0]",
+ "aws_route_table.database"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_nat_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_nat_gateway",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_cidr_block":
+ {
+ "constant_value": "0.0.0.0/0"
+ },
+ "nat_gateway_id":
+ {
+ "references":
+ [
+ "aws_nat_gateway.this",
+ "count.index"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.database",
+ "count.index"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route",
+ "var.create_database_nat_gateway_route",
+ "var.enable_nat_gateway",
+ "var.single_nat_gateway",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.private_ipv6_egress",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "private_ipv6_egress",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_ipv6_cidr_block":
+ {
+ "constant_value": "::/0"
+ },
+ "egress_only_gateway_id":
+ {
+ "references":
+ [
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.private_nat_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "private_nat_gateway",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_cidr_block":
+ {
+ "references":
+ [
+ "var.nat_gateway_destination_cidr_block"
+ ]
+ },
+ "nat_gateway_id":
+ {
+ "references":
+ [
+ "aws_nat_gateway.this",
+ "count.index"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.public_internet_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_cidr_block":
+ {
+ "constant_value": "0.0.0.0/0"
+ },
+ "gateway_id":
+ {
+ "references":
+ [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ },
+ "timeouts":
+ {
+ "create":
+ {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.public_internet_gateway_ipv6",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway_ipv6",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "destination_ipv6_cidr_block":
+ {
+ "constant_value": "::/0"
+ },
+ "gateway_id":
+ {
+ "references":
+ [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.enable_ipv6",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.database",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.database_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.elasticache",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.tags",
+ "var.elasticache_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_elasticache_subnet_route_table",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.intra",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.tags",
+ "var.intra_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.private",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.single_nat_gateway",
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.private_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "local.max_subnet_length",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.public",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.tags",
+ "var.public_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.redshift",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.tags",
+ "var.redshift_route_table_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.create_redshift_subnet_route_table",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.database",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.database",
+ "aws_route_table.private",
+ "var.create_database_subnet_route_table",
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "count.index",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.database",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.elasticache",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.elasticache",
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "var.create_elasticache_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.elasticache",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.intra",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.intra"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.intra",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_subnets",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.outpost",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.outpost",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.outpost_subnets",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.private",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.private",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.private_subnets",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.public",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.public",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_subnets",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.redshift",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.redshift",
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "var.create_redshift_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.redshift",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.enable_public_redshift",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.redshift_public",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "redshift_public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.redshift",
+ "aws_route_table.public",
+ "var.single_nat_gateway",
+ "var.create_redshift_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id":
+ {
+ "references":
+ [
+ "aws_subnet.redshift",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.enable_public_redshift",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.database",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.database_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.database_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.database_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.database_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.database_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.database_subnet_names",
+ "count.index",
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.database_subnet_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.elasticache",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.elasticache_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.elasticache_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.elasticache_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.elasticache_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.elasticache_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.elasticache_subnet_names",
+ "count.index",
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.elasticache_subnet_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.intra",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.intra_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.intra_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.intra_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.intra_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.intra_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.intra_subnet_names",
+ "count.index",
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.intra_subnet_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.intra_subnets",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.outpost",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.outpost_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.outpost_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.outpost_az"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.outpost_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.outpost_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.outpost_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "outpost_arn":
+ {
+ "references":
+ [
+ "var.outpost_arn"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.outpost_subnet_names",
+ "count.index",
+ "var.name",
+ "var.outpost_subnet_suffix",
+ "var.outpost_az",
+ "var.tags",
+ "var.outpost_subnet_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.outpost_subnets",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.private",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.private_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.private_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.private_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.private_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.private_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.private_subnet_names",
+ "count.index",
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.private_subnet_tags",
+ "var.private_subnet_tags_per_az",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.private_subnets",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.public",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.public_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.public_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.public_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.public_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.public_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "map_public_ip_on_launch":
+ {
+ "references":
+ [
+ "var.map_public_ip_on_launch"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.public_subnet_names",
+ "count.index",
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.public_subnet_tags",
+ "var.public_subnet_tags_per_az",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.public_subnets",
+ "var.one_nat_gateway_per_az",
+ "var.public_subnets",
+ "var.azs",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.redshift",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_ipv6_address_on_creation":
+ {
+ "references":
+ [
+ "var.redshift_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.redshift_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id":
+ {
+ "references":
+ [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.redshift_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.redshift_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.redshift_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.redshift_subnet_names",
+ "count.index",
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.redshift_subnet_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc.this",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "assign_generated_ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.enable_ipv6",
+ "var.use_ipam_pool"
+ ]
+ },
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.use_ipam_pool",
+ "var.cidr"
+ ]
+ },
+ "enable_classiclink":
+ {
+ "constant_value": null
+ },
+ "enable_classiclink_dns_support":
+ {
+ "constant_value": null
+ },
+ "enable_dns_hostnames":
+ {
+ "references":
+ [
+ "var.enable_dns_hostnames"
+ ]
+ },
+ "enable_dns_support":
+ {
+ "references":
+ [
+ "var.enable_dns_support"
+ ]
+ },
+ "instance_tenancy":
+ {
+ "references":
+ [
+ "var.instance_tenancy"
+ ]
+ },
+ "ipv4_ipam_pool_id":
+ {
+ "references":
+ [
+ "var.ipv4_ipam_pool_id"
+ ]
+ },
+ "ipv4_netmask_length":
+ {
+ "references":
+ [
+ "var.ipv4_netmask_length"
+ ]
+ },
+ "ipv6_cidr_block":
+ {
+ "references":
+ [
+ "var.ipv6_cidr"
+ ]
+ },
+ "ipv6_ipam_pool_id":
+ {
+ "references":
+ [
+ "var.ipv6_ipam_pool_id"
+ ]
+ },
+ "ipv6_netmask_length":
+ {
+ "references":
+ [
+ "var.ipv6_netmask_length"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags",
+ "var.vpc_tags"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_dhcp_options.this",
+ "mode": "managed",
+ "type": "aws_vpc_dhcp_options",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "domain_name":
+ {
+ "references":
+ [
+ "var.dhcp_options_domain_name"
+ ]
+ },
+ "domain_name_servers":
+ {
+ "references":
+ [
+ "var.dhcp_options_domain_name_servers"
+ ]
+ },
+ "netbios_name_servers":
+ {
+ "references":
+ [
+ "var.dhcp_options_netbios_name_servers"
+ ]
+ },
+ "netbios_node_type":
+ {
+ "references":
+ [
+ "var.dhcp_options_netbios_node_type"
+ ]
+ },
+ "ntp_servers":
+ {
+ "references":
+ [
+ "var.dhcp_options_ntp_servers"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags",
+ "var.dhcp_options_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_dhcp_options"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_dhcp_options_association.this",
+ "mode": "managed",
+ "type": "aws_vpc_dhcp_options_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "dhcp_options_id":
+ {
+ "references":
+ [
+ "aws_vpc_dhcp_options.this[0].id",
+ "aws_vpc_dhcp_options.this[0]",
+ "aws_vpc_dhcp_options.this"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_dhcp_options"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_ipv4_cidr_block_association.this",
+ "mode": "managed",
+ "type": "aws_vpc_ipv4_cidr_block_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "cidr_block":
+ {
+ "references":
+ [
+ "var.secondary_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.secondary_cidr_blocks",
+ "var.secondary_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway.this",
+ "mode": "managed",
+ "type": "aws_vpn_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "amazon_side_asn":
+ {
+ "references":
+ [
+ "var.amazon_side_asn"
+ ]
+ },
+ "availability_zone":
+ {
+ "references":
+ [
+ "var.vpn_gateway_az"
+ ]
+ },
+ "tags":
+ {
+ "references":
+ [
+ "var.name",
+ "var.tags",
+ "var.vpn_gateway_tags"
+ ]
+ },
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.enable_vpn_gateway"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_attachment.this",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "vpc_id":
+ {
+ "references":
+ [
+ "local.vpc_id"
+ ]
+ },
+ "vpn_gateway_id":
+ {
+ "references":
+ [
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.intra",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.intra",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id":
+ {
+ "references":
+ [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.propagate_intra_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.private",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id":
+ {
+ "references":
+ [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.propagate_private_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.public",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "route_table_id":
+ {
+ "references":
+ [
+ "aws_route_table.public",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id":
+ {
+ "references":
+ [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_vpc",
+ "var.propagate_public_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "flow_log_cloudwatch_assume_role",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "sts:AssumeRole"
+ ]
+ },
+ "effect":
+ {
+ "constant_value": "Allow"
+ },
+ "principals":
+ [
+ {
+ "identifiers":
+ {
+ "constant_value":
+ [
+ "vpc-flow-logs.amazonaws.com"
+ ]
+ },
+ "type":
+ {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid":
+ {
+ "constant_value": "AWSVPCFlowLogsAssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.vpc_flow_log_cloudwatch",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions":
+ {
+ "statement":
+ [
+ {
+ "actions":
+ {
+ "constant_value":
+ [
+ "logs:CreateLogStream",
+ "logs:PutLogEvents",
+ "logs:DescribeLogGroups",
+ "logs:DescribeLogStreams"
+ ]
+ },
+ "effect":
+ {
+ "constant_value": "Allow"
+ },
+ "resources":
+ {
+ "constant_value":
+ [
+ "*"
+ ]
+ },
+ "sid":
+ {
+ "constant_value": "AWSVPCFlowLogsPushToCloudWatch"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression":
+ {
+ "references":
+ [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ }
+ ],
+ "variables":
+ {
+ "amazon_side_asn":
+ {
+ "default": "64512",
+ "description": "The Autonomous System Number (ASN) for the Amazon side of the gateway. By default the virtual private gateway is created with the current default Amazon ASN."
+ },
+ "assign_ipv6_address_on_creation":
+ {
+ "default": false,
+ "description": "Assign IPv6 address on subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "azs":
+ {
+ "default":
+ [],
+ "description": "A list of availability zones names or ids in the region"
+ },
+ "cidr":
+ {
+ "default": "0.0.0.0/0",
+ "description": "(Optional) The IPv4 CIDR block for the VPC. CIDR can be explicitly set or it can be derived from IPAM using `ipv4_netmask_length` & `ipv4_ipam_pool_id`"
+ },
+ "create_database_internet_gateway_route":
+ {
+ "default": false,
+ "description": "Controls if an internet gateway route for public database access should be created"
+ },
+ "create_database_nat_gateway_route":
+ {
+ "default": false,
+ "description": "Controls if a nat gateway route should be created to give internet access to the database subnets"
+ },
+ "create_database_subnet_group":
+ {
+ "default": true,
+ "description": "Controls if database subnet group should be created (n.b. database_subnets must also be set)"
+ },
+ "create_database_subnet_route_table":
+ {
+ "default": false,
+ "description": "Controls if separate route table for database should be created"
+ },
+ "create_egress_only_igw":
+ {
+ "default": true,
+ "description": "Controls if an Egress Only Internet Gateway is created and its related routes."
+ },
+ "create_elasticache_subnet_group":
+ {
+ "default": true,
+ "description": "Controls if elasticache subnet group should be created"
+ },
+ "create_elasticache_subnet_route_table":
+ {
+ "default": false,
+ "description": "Controls if separate route table for elasticache should be created"
+ },
+ "create_flow_log_cloudwatch_iam_role":
+ {
+ "default": false,
+ "description": "Whether to create IAM role for VPC Flow Logs"
+ },
+ "create_flow_log_cloudwatch_log_group":
+ {
+ "default": false,
+ "description": "Whether to create CloudWatch log group for VPC Flow Logs"
+ },
+ "create_igw":
+ {
+ "default": true,
+ "description": "Controls if an Internet Gateway is created for public subnets and the related routes that connect them."
+ },
+ "create_redshift_subnet_group":
+ {
+ "default": true,
+ "description": "Controls if redshift subnet group should be created"
+ },
+ "create_redshift_subnet_route_table":
+ {
+ "default": false,
+ "description": "Controls if separate route table for redshift should be created"
+ },
+ "create_vpc":
+ {
+ "default": true,
+ "description": "Controls if VPC should be created (it affects almost all resources)"
+ },
+ "customer_gateway_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the Customer Gateway"
+ },
+ "customer_gateways":
+ {
+ "default":
+ {},
+ "description": "Maps of Customer Gateway's attributes (BGP ASN and Gateway's Internet-routable external IP address)"
+ },
+ "database_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the database subnets network ACL"
+ },
+ "database_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for database subnets"
+ },
+ "database_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Database subnets inbound network ACL rules"
+ },
+ "database_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Database subnets outbound network ACL rules"
+ },
+ "database_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the database route tables"
+ },
+ "database_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on database subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "database_subnet_group_name":
+ {
+ "default": null,
+ "description": "Name of database subnet group"
+ },
+ "database_subnet_group_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the database subnet group"
+ },
+ "database_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 database subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "database_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on database subnets. If empty, Name tags are generated."
+ },
+ "database_subnet_suffix":
+ {
+ "default": "db",
+ "description": "Suffix to append to database subnets name"
+ },
+ "database_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the database subnets"
+ },
+ "database_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of database subnets"
+ },
+ "default_network_acl_egress":
+ {
+ "default":
+ [
+ {
+ "action": "allow",
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_no": "100",
+ "to_port": "0"
+ },
+ {
+ "action": "allow",
+ "from_port": "0",
+ "ipv6_cidr_block": "::/0",
+ "protocol": "-1",
+ "rule_no": "101",
+ "to_port": "0"
+ }
+ ],
+ "description": "List of maps of egress rules to set on the Default Network ACL"
+ },
+ "default_network_acl_ingress":
+ {
+ "default":
+ [
+ {
+ "action": "allow",
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_no": "100",
+ "to_port": "0"
+ },
+ {
+ "action": "allow",
+ "from_port": "0",
+ "ipv6_cidr_block": "::/0",
+ "protocol": "-1",
+ "rule_no": "101",
+ "to_port": "0"
+ }
+ ],
+ "description": "List of maps of ingress rules to set on the Default Network ACL"
+ },
+ "default_network_acl_name":
+ {
+ "default": null,
+ "description": "Name to be used on the Default Network ACL"
+ },
+ "default_network_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the Default Network ACL"
+ },
+ "default_route_table_name":
+ {
+ "default": null,
+ "description": "Name to be used on the default route table"
+ },
+ "default_route_table_propagating_vgws":
+ {
+ "default":
+ [],
+ "description": "List of virtual gateways for propagation"
+ },
+ "default_route_table_routes":
+ {
+ "default":
+ [],
+ "description": "Configuration block of routes. See https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/default_route_table#route"
+ },
+ "default_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the default route table"
+ },
+ "default_security_group_egress":
+ {
+ "default":
+ [],
+ "description": "List of maps of egress rules to set on the default security group"
+ },
+ "default_security_group_ingress":
+ {
+ "default":
+ [],
+ "description": "List of maps of ingress rules to set on the default security group"
+ },
+ "default_security_group_name":
+ {
+ "default": null,
+ "description": "Name to be used on the default security group"
+ },
+ "default_security_group_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the default security group"
+ },
+ "default_vpc_enable_classiclink":
+ {
+ "default": false,
+ "description": "[DEPRECATED](https://github.com/hashicorp/terraform/issues/31730) Should be true to enable ClassicLink in the Default VPC"
+ },
+ "default_vpc_enable_dns_hostnames":
+ {
+ "default": false,
+ "description": "Should be true to enable DNS hostnames in the Default VPC"
+ },
+ "default_vpc_enable_dns_support":
+ {
+ "default": true,
+ "description": "Should be true to enable DNS support in the Default VPC"
+ },
+ "default_vpc_name":
+ {
+ "default": null,
+ "description": "Name to be used on the Default VPC"
+ },
+ "default_vpc_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the Default VPC"
+ },
+ "dhcp_options_domain_name":
+ {
+ "default": "",
+ "description": "Specifies DNS name for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_domain_name_servers":
+ {
+ "default":
+ [
+ "AmazonProvidedDNS"
+ ],
+ "description": "Specify a list of DNS server addresses for DHCP options set, default to AWS provided (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_netbios_name_servers":
+ {
+ "default":
+ [],
+ "description": "Specify a list of netbios servers for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_netbios_node_type":
+ {
+ "default": "",
+ "description": "Specify netbios node_type for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_ntp_servers":
+ {
+ "default":
+ [],
+ "description": "Specify a list of NTP servers for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the DHCP option set (requires enable_dhcp_options set to true)"
+ },
+ "elasticache_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the elasticache subnets network ACL"
+ },
+ "elasticache_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for elasticache subnets"
+ },
+ "elasticache_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Elasticache subnets inbound network ACL rules"
+ },
+ "elasticache_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Elasticache subnets outbound network ACL rules"
+ },
+ "elasticache_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the elasticache route tables"
+ },
+ "elasticache_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on elasticache subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "elasticache_subnet_group_name":
+ {
+ "default": null,
+ "description": "Name of elasticache subnet group"
+ },
+ "elasticache_subnet_group_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the elasticache subnet group"
+ },
+ "elasticache_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 elasticache subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "elasticache_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on elasticache subnets. If empty, Name tags are generated."
+ },
+ "elasticache_subnet_suffix":
+ {
+ "default": "elasticache",
+ "description": "Suffix to append to elasticache subnets name"
+ },
+ "elasticache_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the elasticache subnets"
+ },
+ "elasticache_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of elasticache subnets"
+ },
+ "enable_classiclink":
+ {
+ "default": null,
+ "description": "[DEPRECATED](https://github.com/hashicorp/terraform/issues/31730) Should be true to enable ClassicLink for the VPC. Only valid in regions and accounts that support EC2 Classic."
+ },
+ "enable_classiclink_dns_support":
+ {
+ "default": null,
+ "description": "[DEPRECATED](https://github.com/hashicorp/terraform/issues/31730) Should be true to enable ClassicLink DNS Support for the VPC. Only valid in regions and accounts that support EC2 Classic."
+ },
+ "enable_dhcp_options":
+ {
+ "default": false,
+ "description": "Should be true if you want to specify a DHCP options set with a custom domain name, DNS servers, NTP servers, netbios servers, and/or netbios server type"
+ },
+ "enable_dns_hostnames":
+ {
+ "default": false,
+ "description": "Should be true to enable DNS hostnames in the VPC"
+ },
+ "enable_dns_support":
+ {
+ "default": true,
+ "description": "Should be true to enable DNS support in the VPC"
+ },
+ "enable_flow_log":
+ {
+ "default": false,
+ "description": "Whether or not to enable VPC Flow Logs"
+ },
+ "enable_ipv6":
+ {
+ "default": false,
+ "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block."
+ },
+ "enable_nat_gateway":
+ {
+ "default": false,
+ "description": "Should be true if you want to provision NAT Gateways for each of your private networks"
+ },
+ "enable_public_redshift":
+ {
+ "default": false,
+ "description": "Controls if redshift should have public routing table"
+ },
+ "enable_vpn_gateway":
+ {
+ "default": false,
+ "description": "Should be true if you want to create a new VPN Gateway resource and attach it to the VPC"
+ },
+ "external_nat_ip_ids":
+ {
+ "default":
+ [],
+ "description": "List of EIP IDs to be assigned to the NAT Gateways (used in combination with reuse_nat_ips)"
+ },
+ "external_nat_ips":
+ {
+ "default":
+ [],
+ "description": "List of EIPs to be used for `nat_public_ips` output (used in combination with reuse_nat_ips and external_nat_ip_ids)"
+ },
+ "flow_log_cloudwatch_iam_role_arn":
+ {
+ "default": "",
+ "description": "The ARN for the IAM role that's used to post flow logs to a CloudWatch Logs log group. When flow_log_destination_arn is set to ARN of Cloudwatch Logs, this argument needs to be provided."
+ },
+ "flow_log_cloudwatch_log_group_kms_key_id":
+ {
+ "default": null,
+ "description": "The ARN of the KMS Key to use when encrypting log data for VPC flow logs."
+ },
+ "flow_log_cloudwatch_log_group_name_prefix":
+ {
+ "default": "/aws/vpc-flow-log/",
+ "description": "Specifies the name prefix of CloudWatch Log Group for VPC flow logs."
+ },
+ "flow_log_cloudwatch_log_group_name_suffix":
+ {
+ "default": "",
+ "description": "Specifies the name suffix of CloudWatch Log Group for VPC flow logs."
+ },
+ "flow_log_cloudwatch_log_group_retention_in_days":
+ {
+ "default": null,
+ "description": "Specifies the number of days you want to retain log events in the specified log group for VPC flow logs."
+ },
+ "flow_log_destination_arn":
+ {
+ "default": "",
+ "description": "The ARN of the CloudWatch log group or S3 bucket where VPC Flow Logs will be pushed. If this ARN is a S3 bucket the appropriate permissions need to be set on that bucket's policy. When create_flow_log_cloudwatch_log_group is set to false this argument must be provided."
+ },
+ "flow_log_destination_type":
+ {
+ "default": "cloud-watch-logs",
+ "description": "Type of flow log destination. Can be s3 or cloud-watch-logs."
+ },
+ "flow_log_file_format":
+ {
+ "default": "plain-text",
+ "description": "(Optional) The format for the flow log. Valid values: `plain-text`, `parquet`."
+ },
+ "flow_log_hive_compatible_partitions":
+ {
+ "default": false,
+ "description": "(Optional) Indicates whether to use Hive-compatible prefixes for flow logs stored in Amazon S3."
+ },
+ "flow_log_log_format":
+ {
+ "default": null,
+ "description": "The fields to include in the flow log record, in the order in which they should appear."
+ },
+ "flow_log_max_aggregation_interval":
+ {
+ "default": 600,
+ "description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. Valid Values: `60` seconds or `600` seconds."
+ },
+ "flow_log_per_hour_partition":
+ {
+ "default": false,
+ "description": "(Optional) Indicates whether to partition the flow log per hour. This reduces the cost and response time for queries."
+ },
+ "flow_log_traffic_type":
+ {
+ "default": "ALL",
+ "description": "The type of traffic to capture. Valid values: ACCEPT, REJECT, ALL."
+ },
+ "igw_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the internet gateway"
+ },
+ "instance_tenancy":
+ {
+ "default": "default",
+ "description": "A tenancy option for instances launched into the VPC"
+ },
+ "intra_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the intra subnets network ACL"
+ },
+ "intra_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for intra subnets"
+ },
+ "intra_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Intra subnets inbound network ACLs"
+ },
+ "intra_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Intra subnets outbound network ACLs"
+ },
+ "intra_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the intra route tables"
+ },
+ "intra_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on intra subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "intra_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 intra subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "intra_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on intra subnets. If empty, Name tags are generated."
+ },
+ "intra_subnet_suffix":
+ {
+ "default": "intra",
+ "description": "Suffix to append to intra subnets name"
+ },
+ "intra_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the intra subnets"
+ },
+ "intra_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of intra subnets"
+ },
+ "ipv4_ipam_pool_id":
+ {
+ "default": null,
+ "description": "(Optional) The ID of an IPv4 IPAM pool you want to use for allocating this VPC's CIDR."
+ },
+ "ipv4_netmask_length":
+ {
+ "default": null,
+ "description": "(Optional) The netmask length of the IPv4 CIDR you want to allocate to this VPC. Requires specifying a ipv4_ipam_pool_id."
+ },
+ "ipv6_cidr":
+ {
+ "default": null,
+ "description": "(Optional) IPv6 CIDR block to request from an IPAM Pool. Can be set explicitly or derived from IPAM using `ipv6_netmask_length`."
+ },
+ "ipv6_ipam_pool_id":
+ {
+ "default": null,
+ "description": "(Optional) IPAM Pool ID for a IPv6 pool. Conflicts with `assign_generated_ipv6_cidr_block`."
+ },
+ "ipv6_netmask_length":
+ {
+ "default": null,
+ "description": "(Optional) Netmask length to request from IPAM Pool. Conflicts with `ipv6_cidr_block`. This can be omitted if IPAM pool as a `allocation_default_netmask_length` set. Valid values: `56`."
+ },
+ "manage_default_network_acl":
+ {
+ "default": false,
+ "description": "Should be true to adopt and manage Default Network ACL"
+ },
+ "manage_default_route_table":
+ {
+ "default": false,
+ "description": "Should be true to manage default route table"
+ },
+ "manage_default_security_group":
+ {
+ "default": false,
+ "description": "Should be true to adopt and manage default security group"
+ },
+ "manage_default_vpc":
+ {
+ "default": false,
+ "description": "Should be true to adopt and manage Default VPC"
+ },
+ "map_public_ip_on_launch":
+ {
+ "default": true,
+ "description": "Should be false if you do not want to auto-assign public IP on launch"
+ },
+ "name":
+ {
+ "default": "",
+ "description": "Name to be used on all the resources as identifier"
+ },
+ "nat_eip_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the NAT EIP"
+ },
+ "nat_gateway_destination_cidr_block":
+ {
+ "default": "0.0.0.0/0",
+ "description": "Used to pass a custom destination route for private NAT Gateway. If not specified, the default 0.0.0.0/0 is used as a destination route."
+ },
+ "nat_gateway_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the NAT gateways"
+ },
+ "one_nat_gateway_per_az":
+ {
+ "default": false,
+ "description": "Should be true if you want only one NAT Gateway per availability zone. Requires `var.azs` to be set, and the number of `public_subnets` created to be greater than or equal to the number of availability zones specified in `var.azs`."
+ },
+ "outpost_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the outpost subnets network ACL"
+ },
+ "outpost_arn":
+ {
+ "default": null,
+ "description": "ARN of Outpost you want to create a subnet in."
+ },
+ "outpost_az":
+ {
+ "default": null,
+ "description": "AZ where Outpost is anchored."
+ },
+ "outpost_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for outpost subnets"
+ },
+ "outpost_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Outpost subnets inbound network ACLs"
+ },
+ "outpost_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Outpost subnets outbound network ACLs"
+ },
+ "outpost_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on outpost subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "outpost_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 outpost subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "outpost_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on outpost subnets. If empty, Name tags are generated."
+ },
+ "outpost_subnet_suffix":
+ {
+ "default": "outpost",
+ "description": "Suffix to append to outpost subnets name"
+ },
+ "outpost_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the outpost subnets"
+ },
+ "outpost_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of outpost subnets inside the VPC"
+ },
+ "private_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the private subnets network ACL"
+ },
+ "private_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for private subnets"
+ },
+ "private_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Private subnets inbound network ACLs"
+ },
+ "private_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Private subnets outbound network ACLs"
+ },
+ "private_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the private route tables"
+ },
+ "private_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on private subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "private_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 private subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "private_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on private subnets. If empty, Name tags are generated."
+ },
+ "private_subnet_suffix":
+ {
+ "default": "private",
+ "description": "Suffix to append to private subnets name"
+ },
+ "private_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the private subnets"
+ },
+ "private_subnet_tags_per_az":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the private subnets where the primary key is the AZ"
+ },
+ "private_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of private subnets inside the VPC"
+ },
+ "propagate_intra_route_tables_vgw":
+ {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "propagate_private_route_tables_vgw":
+ {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "propagate_public_route_tables_vgw":
+ {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "public_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the public subnets network ACL"
+ },
+ "public_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for public subnets"
+ },
+ "public_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Public subnets inbound network ACLs"
+ },
+ "public_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Public subnets outbound network ACLs"
+ },
+ "public_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the public route tables"
+ },
+ "public_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on public subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "public_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 public subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "public_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on public subnets. If empty, Name tags are generated."
+ },
+ "public_subnet_suffix":
+ {
+ "default": "public",
+ "description": "Suffix to append to public subnets name"
+ },
+ "public_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the public subnets"
+ },
+ "public_subnet_tags_per_az":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the public subnets where the primary key is the AZ"
+ },
+ "public_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of public subnets inside the VPC"
+ },
+ "putin_khuylo":
+ {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "redshift_acl_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the redshift subnets network ACL"
+ },
+ "redshift_dedicated_network_acl":
+ {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for redshift subnets"
+ },
+ "redshift_inbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Redshift subnets inbound network ACL rules"
+ },
+ "redshift_outbound_acl_rules":
+ {
+ "default":
+ [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Redshift subnets outbound network ACL rules"
+ },
+ "redshift_route_table_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the redshift route tables"
+ },
+ "redshift_subnet_assign_ipv6_address_on_creation":
+ {
+ "default": null,
+ "description": "Assign IPv6 address on redshift subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "redshift_subnet_group_name":
+ {
+ "default": null,
+ "description": "Name of redshift subnet group"
+ },
+ "redshift_subnet_group_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the redshift subnet group"
+ },
+ "redshift_subnet_ipv6_prefixes":
+ {
+ "default":
+ [],
+ "description": "Assigns IPv6 redshift subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "redshift_subnet_names":
+ {
+ "default":
+ [],
+ "description": "Explicit values to use in the Name tag on redshift subnets. If empty, Name tags are generated."
+ },
+ "redshift_subnet_suffix":
+ {
+ "default": "redshift",
+ "description": "Suffix to append to redshift subnets name"
+ },
+ "redshift_subnet_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the redshift subnets"
+ },
+ "redshift_subnets":
+ {
+ "default":
+ [],
+ "description": "A list of redshift subnets"
+ },
+ "reuse_nat_ips":
+ {
+ "default": false,
+ "description": "Should be true if you don't want EIPs to be created for your NAT Gateways and will instead pass them in via the 'external_nat_ip_ids' variable"
+ },
+ "secondary_cidr_blocks":
+ {
+ "default":
+ [],
+ "description": "List of secondary CIDR blocks to associate with the VPC to extend the IP Address pool"
+ },
+ "single_nat_gateway":
+ {
+ "default": false,
+ "description": "Should be true if you want to provision a single shared NAT Gateway across all of your private networks"
+ },
+ "tags":
+ {
+ "default":
+ {},
+ "description": "A map of tags to add to all resources"
+ },
+ "use_ipam_pool":
+ {
+ "default": false,
+ "description": "Determines whether IPAM pool is used for CIDR allocation"
+ },
+ "vpc_flow_log_permissions_boundary":
+ {
+ "default": null,
+ "description": "The ARN of the Permissions Boundary for the VPC Flow Log IAM Role"
+ },
+ "vpc_flow_log_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the VPC Flow Logs"
+ },
+ "vpc_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the VPC"
+ },
+ "vpn_gateway_az":
+ {
+ "default": null,
+ "description": "The Availability Zone for the VPN Gateway"
+ },
+ "vpn_gateway_id":
+ {
+ "default": "",
+ "description": "ID of VPN Gateway to attach to the VPC"
+ },
+ "vpn_gateway_tags":
+ {
+ "default":
+ {},
+ "description": "Additional tags for the VPN gateway"
+ }
+ }
+ },
+ "version_constraint": "~> 3.0"
+ }
+ }
+ }
+ },
+ "relevant_attributes":
+ [
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.private",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.elasticache[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "ipv6_association_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.public_internet_gateway_ipv6[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "enable_dns_support"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_ipv4_cidr_block_association.this",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.outpost[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.intra",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_flow_log.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_internet_gateway[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.public[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_cloudwatch_log_group.flow_log[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.database",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_nat_gateway.this",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_internet_gateway.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.intra",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_elasticache_subnet_group.elasticache[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.private",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_egress_only_internet_gateway.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.public",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "enable_dns_hostnames"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.redshift[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "vpc_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "enable_dns_hostnames"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.database[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.database",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "cidr_block"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.elasticache",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.redshift",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_dhcp_options.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.database",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "owner_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.database[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway_attachment.this[0]",
+ "attribute":
+ [
+ "vpn_gateway_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.public[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.private_nat_gateway",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_redshift_subnet_group.redshift[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.public",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "ipv6_cidr_block"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "enable_dns_support"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_internet_gateway.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_ipv4_cidr_block_association.this[0]",
+ "attribute":
+ [
+ "vpc_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "default_security_group_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.private[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "description"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.public[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.elasticache",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.redshift[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.elasticache",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_customer_gateway.this",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.outpost[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "instance_tenancy"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.intra[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "main_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.intra[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.private",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "aws_ec2_capacity_reservation.targeted",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_eip.nat",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "cidr_block"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "owner_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "aws_kms_key.this",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "default_network_acl_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "owner_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "default_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.private[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.public",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.redshift",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "aws_placement_group.web",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.data.aws_iam_policy_document.assume_role_policy[0]",
+ "attribute":
+ [
+ "json"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "vpc_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.intra",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_elasticache_subnet_group.elasticache[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_egress_only_internet_gateway.this",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.redshift",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.public_internet_gateway[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_iam_role.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_db_subnet_group.database[0]",
+ "attribute":
+ [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "default_security_group_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "default_network_acl_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "private_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "instance_tenancy"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute":
+ [
+ "main_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "description"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_db_subnet_group.database[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.private_ipv6_egress",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "outpost_arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "ipv6_addresses"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.elasticache[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "aws_network_interface.this",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "default_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "aws_ec2_capacity_reservation.open",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.redshift_public",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this_name_prefix[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_bid_status"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_network_interface.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"two\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_open_capacity_reservation.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "primary_network_interface_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_targeted_capacity_reservation.aws_instance.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_iam_role.vpc_flow_log_cloudwatch[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "password_data"
+ ]
+ },
+ {
+ "resource": "module.ec2_complete.aws_iam_instance_profile.this[0]",
+ "attribute":
+ [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_instance.this[0]",
+ "attribute":
+ [
+ "public_dns"
+ ]
+ },
+ {
+ "resource": "module.ec2_disabled.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_nat_gateway",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_multiple[\"one\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_request_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_t2_unlimited.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "public_ip"
+ ]
+ },
+ {
+ "resource": "module.ec2_t3_unlimited.aws_instance.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple[\"three\"].aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "private_ip"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_ipv6_egress[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.security_group.aws_security_group.this[0]",
+ "attribute":
+ [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.ec2_metadata_options.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_instance.this[0]",
+ "attribute":
+ [
+ "tags_all"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute":
+ [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.outpost",
+ "attribute":
+ []
+ },
+ {
+ "resource": "module.ec2_spot_instance.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "instance_state"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_spot_instance_request.this[0]",
+ "attribute":
+ [
+ "spot_instance_id"
+ ]
+ },
+ {
+ "resource": "module.ec2_multiple.aws_instance.this[0]",
+ "attribute":
+ [
+ "capacity_reservation_specification"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan-graph.gv b/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan-graph.gv
new file mode 100644
index 00000000..671b636d
--- /dev/null
+++ b/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan-graph.gv
@@ -0,0 +1,2191 @@
+digraph {
+ compound = "true"
+ newrank = "true"
+ subgraph "root" {
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" [label = "aws_autoscaling_group.iriusrisk_api", shape = "box"]
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" [label = "aws_autoscaling_group.iriusrisk_web", shape = "box"]
+ "[root] aws_autoscaling_policy.iriusrisk_api_scaling_down (expand)" [label = "aws_autoscaling_policy.iriusrisk_api_scaling_down", shape = "box"]
+ "[root] aws_autoscaling_policy.iriusrisk_api_scaling_up (expand)" [label = "aws_autoscaling_policy.iriusrisk_api_scaling_up", shape = "box"]
+ "[root] aws_autoscaling_policy.iriusrisk_web_scaling_down (expand)" [label = "aws_autoscaling_policy.iriusrisk_web_scaling_down", shape = "box"]
+ "[root] aws_autoscaling_policy.iriusrisk_web_scaling_up (expand)" [label = "aws_autoscaling_policy.iriusrisk_web_scaling_up", shape = "box"]
+ "[root] aws_cloudwatch_log_group.cw_log_group (expand)" [label = "aws_cloudwatch_log_group.cw_log_group", shape = "box"]
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down (expand)" [label = "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down", shape = "box"]
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up (expand)" [label = "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up", shape = "box"]
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600 (expand)" [label = "aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600", shape = "box"]
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down (expand)" [label = "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down", shape = "box"]
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up (expand)" [label = "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up", shape = "box"]
+ "[root] aws_iam_instance_profile.instance_profile (expand)" [label = "aws_iam_instance_profile.instance_profile", shape = "box"]
+ "[root] aws_iam_policy.secret-access (expand)" [label = "aws_iam_policy.secret-access", shape = "box"]
+ "[root] aws_iam_role.access-role (expand)" [label = "aws_iam_role.access-role", shape = "box"]
+ "[root] aws_iam_role_policy_attachment.existing-policies-attachment (expand)" [label = "aws_iam_role_policy_attachment.existing-policies-attachment", shape = "box"]
+ "[root] aws_iam_role_policy_attachment.secret-access-attachment (expand)" [label = "aws_iam_role_policy_attachment.secret-access-attachment", shape = "box"]
+ "[root] aws_launch_template.iriusrisk (expand)" [label = "aws_launch_template.iriusrisk", shape = "box"]
+ "[root] aws_secretsmanager_secret.jwt-secret (expand)" [label = "aws_secretsmanager_secret.jwt-secret", shape = "box"]
+ "[root] aws_secretsmanager_secret_version.secret-value (expand)" [label = "aws_secretsmanager_secret_version.secret-value", shape = "box"]
+ "[root] aws_security_group.alb (expand)" [label = "aws_security_group.alb", shape = "box"]
+ "[root] aws_security_group.aurora-db-sg (expand)" [label = "aws_security_group.aurora-db-sg", shape = "box"]
+ "[root] aws_security_group.iriusrisk (expand)" [label = "aws_security_group.iriusrisk", shape = "box"]
+ "[root] cloudflare_record.dns_cname (expand)" [label = "cloudflare_record.dns_cname", shape = "box"]
+ "[root] data.aws_ami.iriusrisk (expand)" [label = "data.aws_ami.iriusrisk", shape = "box"]
+ "[root] data.newrelic_entity.api_monitor (expand)" [label = "data.newrelic_entity.api_monitor", shape = "box"]
+ "[root] data.newrelic_entity.web_monitor (expand)" [label = "data.newrelic_entity.web_monitor", shape = "box"]
+ "[root] data.template_file.iriusrisk (expand)" [label = "data.template_file.iriusrisk", shape = "box"]
+ "[root] module.analytics.aws_eip.ec2 (expand)" [label = "module.analytics.aws_eip.ec2", shape = "box"]
+ "[root] module.analytics.aws_instance.ec2 (expand)" [label = "module.analytics.aws_instance.ec2", shape = "box"]
+ "[root] module.analytics.aws_lb_listener_rule.static (expand)" [label = "module.analytics.aws_lb_listener_rule.static", shape = "box"]
+ "[root] module.analytics.aws_lb_target_group.tg (expand)" [label = "module.analytics.aws_lb_target_group.tg", shape = "box"]
+ "[root] module.analytics.aws_lb_target_group_attachment.tg_attachment (expand)" [label = "module.analytics.aws_lb_target_group_attachment.tg_attachment", shape = "box"]
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" [label = "module.analytics.aws_rds_cluster_instance.aurora-rds-instance", shape = "box"]
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" [label = "module.analytics.aws_security_group.ec2-analytics", shape = "box"]
+ "[root] module.analytics.aws_security_group_rule.ingress (expand)" [label = "module.analytics.aws_security_group_rule.ingress", shape = "box"]
+ "[root] module.analytics.data.template_file.user_data (expand)" [label = "module.analytics.data.template_file.user_data", shape = "box"]
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" [label = "module.aurora-db-blue.aws_appautoscaling_policy.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)" [label = "module.aurora-db-blue.aws_appautoscaling_target.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" [label = "module.aurora-db-blue.aws_db_parameter_group.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" [label = "module.aurora-db-blue.aws_db_subnet_group.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" [label = "module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring", shape = "box"]
+ "[root] module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" [label = "module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring", shape = "box"]
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" [label = "module.aurora-db-blue.aws_rds_cluster.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_rds_cluster_endpoint.this (expand)" [label = "module.aurora-db-blue.aws_rds_cluster_endpoint.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" [label = "module.aurora-db-blue.aws_rds_cluster_instance.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" [label = "module.aurora-db-blue.aws_rds_cluster_parameter_group.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_rds_cluster_role_association.this (expand)" [label = "module.aurora-db-blue.aws_rds_cluster_role_association.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" [label = "module.aurora-db-blue.aws_security_group.this", shape = "box"]
+ "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)" [label = "module.aurora-db-blue.aws_security_group_rule.cidr_ingress", shape = "box"]
+ "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)" [label = "module.aurora-db-blue.aws_security_group_rule.default_ingress", shape = "box"]
+ "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)" [label = "module.aurora-db-blue.aws_security_group_rule.egress", shape = "box"]
+ "[root] module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" [label = "module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role", shape = "box"]
+ "[root] module.aurora-db-blue.data.aws_partition.current (expand)" [label = "module.aurora-db-blue.data.aws_partition.current", shape = "box"]
+ "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)" [label = "module.aurora-db-blue.random_id.snapshot_identifier", shape = "box"]
+ "[root] module.aurora-db-blue.random_password.master_password (expand)" [label = "module.aurora-db-blue.random_password.master_password", shape = "box"]
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" [label = "module.aurora-db-green.aws_appautoscaling_policy.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)" [label = "module.aurora-db-green.aws_appautoscaling_target.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" [label = "module.aurora-db-green.aws_db_parameter_group.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" [label = "module.aurora-db-green.aws_db_subnet_group.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" [label = "module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring", shape = "box"]
+ "[root] module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" [label = "module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring", shape = "box"]
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" [label = "module.aurora-db-green.aws_rds_cluster.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_rds_cluster_endpoint.this (expand)" [label = "module.aurora-db-green.aws_rds_cluster_endpoint.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" [label = "module.aurora-db-green.aws_rds_cluster_instance.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" [label = "module.aurora-db-green.aws_rds_cluster_parameter_group.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_rds_cluster_role_association.this (expand)" [label = "module.aurora-db-green.aws_rds_cluster_role_association.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" [label = "module.aurora-db-green.aws_security_group.this", shape = "box"]
+ "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)" [label = "module.aurora-db-green.aws_security_group_rule.cidr_ingress", shape = "box"]
+ "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)" [label = "module.aurora-db-green.aws_security_group_rule.default_ingress", shape = "box"]
+ "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)" [label = "module.aurora-db-green.aws_security_group_rule.egress", shape = "box"]
+ "[root] module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" [label = "module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role", shape = "box"]
+ "[root] module.aurora-db-green.data.aws_partition.current (expand)" [label = "module.aurora-db-green.data.aws_partition.current", shape = "box"]
+ "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)" [label = "module.aurora-db-green.random_id.snapshot_identifier", shape = "box"]
+ "[root] module.aurora-db-green.random_password.master_password (expand)" [label = "module.aurora-db-green.random_password.master_password", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lambda_permission.lb (expand)" [label = "module.iriusrisk_alb.aws_lambda_permission.lb", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" [label = "module.iriusrisk_alb.aws_lb.this", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)" [label = "module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" [label = "module.iriusrisk_alb.aws_lb_listener.frontend_https", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_listener_certificate.https_listener (expand)" [label = "module.iriusrisk_alb.aws_lb_listener_certificate.https_listener", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)" [label = "module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)" [label = "module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" [label = "module.iriusrisk_alb.aws_lb_target_group.main", shape = "box"]
+ "[root] module.iriusrisk_alb.aws_lb_target_group_attachment.this (expand)" [label = "module.iriusrisk_alb.aws_lb_target_group_attachment.this", shape = "box"]
+ "[root] module.synthetic_monitor.data.newrelic_alert_policy.policy (expand)" [label = "module.synthetic_monitor.data.newrelic_alert_policy.policy", shape = "box"]
+ "[root] module.synthetic_monitor.newrelic_synthetics_alert_condition.condition (expand)" [label = "module.synthetic_monitor.newrelic_synthetics_alert_condition.condition", shape = "box"]
+ "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)" [label = "module.synthetic_monitor.newrelic_synthetics_monitor.monitor", shape = "box"]
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" [label = "module.vpc.aws_cloudwatch_log_group.flow_log", shape = "box"]
+ "[root] module.vpc.aws_customer_gateway.this (expand)" [label = "module.vpc.aws_customer_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" [label = "module.vpc.aws_db_subnet_group.database", shape = "box"]
+ "[root] module.vpc.aws_default_network_acl.this (expand)" [label = "module.vpc.aws_default_network_acl.this", shape = "box"]
+ "[root] module.vpc.aws_default_route_table.default (expand)" [label = "module.vpc.aws_default_route_table.default", shape = "box"]
+ "[root] module.vpc.aws_default_security_group.this (expand)" [label = "module.vpc.aws_default_security_group.this", shape = "box"]
+ "[root] module.vpc.aws_default_vpc.this (expand)" [label = "module.vpc.aws_default_vpc.this", shape = "box"]
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" [label = "module.vpc.aws_egress_only_internet_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_eip.nat (expand)" [label = "module.vpc.aws_eip.nat", shape = "box"]
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" [label = "module.vpc.aws_elasticache_subnet_group.elasticache", shape = "box"]
+ "[root] module.vpc.aws_flow_log.this (expand)" [label = "module.vpc.aws_flow_log.this", shape = "box"]
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_role.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] module.vpc.aws_internet_gateway.this (expand)" [label = "module.vpc.aws_internet_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_nat_gateway.this (expand)" [label = "module.vpc.aws_nat_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_network_acl.database (expand)" [label = "module.vpc.aws_network_acl.database", shape = "box"]
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" [label = "module.vpc.aws_network_acl.elasticache", shape = "box"]
+ "[root] module.vpc.aws_network_acl.intra (expand)" [label = "module.vpc.aws_network_acl.intra", shape = "box"]
+ "[root] module.vpc.aws_network_acl.outpost (expand)" [label = "module.vpc.aws_network_acl.outpost", shape = "box"]
+ "[root] module.vpc.aws_network_acl.private (expand)" [label = "module.vpc.aws_network_acl.private", shape = "box"]
+ "[root] module.vpc.aws_network_acl.public (expand)" [label = "module.vpc.aws_network_acl.public", shape = "box"]
+ "[root] module.vpc.aws_network_acl.redshift (expand)" [label = "module.vpc.aws_network_acl.redshift", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.database_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.database_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.elasticache_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.elasticache_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.intra_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.intra_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.outpost_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.outpost_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.private_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.private_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.public_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.public_outbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" [label = "module.vpc.aws_network_acl_rule.redshift_inbound", shape = "box"]
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" [label = "module.vpc.aws_network_acl_rule.redshift_outbound", shape = "box"]
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" [label = "module.vpc.aws_redshift_subnet_group.redshift", shape = "box"]
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" [label = "module.vpc.aws_route.database_internet_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" [label = "module.vpc.aws_route.database_ipv6_egress", shape = "box"]
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" [label = "module.vpc.aws_route.database_nat_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" [label = "module.vpc.aws_route.private_ipv6_egress", shape = "box"]
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" [label = "module.vpc.aws_route.private_nat_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" [label = "module.vpc.aws_route.public_internet_gateway", shape = "box"]
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" [label = "module.vpc.aws_route.public_internet_gateway_ipv6", shape = "box"]
+ "[root] module.vpc.aws_route_table.database (expand)" [label = "module.vpc.aws_route_table.database", shape = "box"]
+ "[root] module.vpc.aws_route_table.elasticache (expand)" [label = "module.vpc.aws_route_table.elasticache", shape = "box"]
+ "[root] module.vpc.aws_route_table.intra (expand)" [label = "module.vpc.aws_route_table.intra", shape = "box"]
+ "[root] module.vpc.aws_route_table.private (expand)" [label = "module.vpc.aws_route_table.private", shape = "box"]
+ "[root] module.vpc.aws_route_table.public (expand)" [label = "module.vpc.aws_route_table.public", shape = "box"]
+ "[root] module.vpc.aws_route_table.redshift (expand)" [label = "module.vpc.aws_route_table.redshift", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.database (expand)" [label = "module.vpc.aws_route_table_association.database", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" [label = "module.vpc.aws_route_table_association.elasticache", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.intra (expand)" [label = "module.vpc.aws_route_table_association.intra", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" [label = "module.vpc.aws_route_table_association.outpost", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.private (expand)" [label = "module.vpc.aws_route_table_association.private", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.public (expand)" [label = "module.vpc.aws_route_table_association.public", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" [label = "module.vpc.aws_route_table_association.redshift", shape = "box"]
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" [label = "module.vpc.aws_route_table_association.redshift_public", shape = "box"]
+ "[root] module.vpc.aws_subnet.database (expand)" [label = "module.vpc.aws_subnet.database", shape = "box"]
+ "[root] module.vpc.aws_subnet.elasticache (expand)" [label = "module.vpc.aws_subnet.elasticache", shape = "box"]
+ "[root] module.vpc.aws_subnet.intra (expand)" [label = "module.vpc.aws_subnet.intra", shape = "box"]
+ "[root] module.vpc.aws_subnet.outpost (expand)" [label = "module.vpc.aws_subnet.outpost", shape = "box"]
+ "[root] module.vpc.aws_subnet.private (expand)" [label = "module.vpc.aws_subnet.private", shape = "box"]
+ "[root] module.vpc.aws_subnet.public (expand)" [label = "module.vpc.aws_subnet.public", shape = "box"]
+ "[root] module.vpc.aws_subnet.redshift (expand)" [label = "module.vpc.aws_subnet.redshift", shape = "box"]
+ "[root] module.vpc.aws_vpc.this (expand)" [label = "module.vpc.aws_vpc.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" [label = "module.vpc.aws_vpc_dhcp_options.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" [label = "module.vpc.aws_vpc_dhcp_options_association.this", shape = "box"]
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" [label = "module.vpc.aws_vpc_ipv4_cidr_block_association.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" [label = "module.vpc.aws_vpn_gateway.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" [label = "module.vpc.aws_vpn_gateway_attachment.this", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.intra", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.private", shape = "box"]
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" [label = "module.vpc.aws_vpn_gateway_route_propagation.public", shape = "box"]
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" [label = "module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role", shape = "box"]
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" [label = "module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch", shape = "box"]
+ "[root] newrelic_alert_channel.slack (expand)" [label = "newrelic_alert_channel.slack", shape = "box"]
+ "[root] newrelic_alert_policy.policy (expand)" [label = "newrelic_alert_policy.policy", shape = "box"]
+ "[root] newrelic_alert_policy_channel.channel_subscribe_api (expand)" [label = "newrelic_alert_policy_channel.channel_subscribe_api", shape = "box"]
+ "[root] newrelic_alert_policy_channel.channel_subscribe_web (expand)" [label = "newrelic_alert_policy_channel.channel_subscribe_web", shape = "box"]
+ "[root] newrelic_nrql_alert_condition.rds-DBConnection-alert (expand)" [label = "newrelic_nrql_alert_condition.rds-DBConnection-alert", shape = "box"]
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-api (expand)" [label = "newrelic_nrql_alert_condition.tg-health-nrql-condition-api", shape = "box"]
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-web (expand)" [label = "newrelic_nrql_alert_condition.tg-health-nrql-condition-web", shape = "box"]
+ "[root] provider[\"registry.terraform.io/cloudflare/cloudflare\"]" [label = "provider[\"registry.terraform.io/cloudflare/cloudflare\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" [label = "provider[\"registry.terraform.io/hashicorp/aws\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/hashicorp/random\"]" [label = "provider[\"registry.terraform.io/hashicorp/random\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/hashicorp/template\"]" [label = "provider[\"registry.terraform.io/hashicorp/template\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/hashicorp/time\"]" [label = "provider[\"registry.terraform.io/hashicorp/time\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/hashicorp/tls\"]" [label = "provider[\"registry.terraform.io/hashicorp/tls\"]", shape = "diamond"]
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]" [label = "provider[\"registry.terraform.io/newrelic/newrelic\"]", shape = "diamond"]
+ "[root] time_sleep.wait_120_seconds (expand)" [label = "time_sleep.wait_120_seconds", shape = "box"]
+ "[root] time_sleep.wait_180_seconds (expand)" [label = "time_sleep.wait_180_seconds", shape = "box"]
+ "[root] tls_private_key.ec_private (expand)" [label = "tls_private_key.ec_private", shape = "box"]
+ "[root] var.analytics_build" [label = "var.analytics_build", shape = "note"]
+ "[root] var.analytics_enabled" [label = "var.analytics_enabled", shape = "note"]
+ "[root] var.api_desired_capacity" [label = "var.api_desired_capacity", shape = "note"]
+ "[root] var.api_max_size" [label = "var.api_max_size", shape = "note"]
+ "[root] var.api_min_size" [label = "var.api_min_size", shape = "note"]
+ "[root] var.availability_zones" [label = "var.availability_zones", shape = "note"]
+ "[root] var.aws_profile" [label = "var.aws_profile", shape = "note"]
+ "[root] var.aws_region" [label = "var.aws_region", shape = "note"]
+ "[root] var.bastion_host_cidrs" [label = "var.bastion_host_cidrs", shape = "note"]
+ "[root] var.bitbucket_repository" [label = "var.bitbucket_repository", shape = "note"]
+ "[root] var.certificate_arn" [label = "var.certificate_arn", shape = "note"]
+ "[root] var.cloudflare_dns_name" [label = "var.cloudflare_dns_name", shape = "note"]
+ "[root] var.cloudflare_token" [label = "var.cloudflare_token", shape = "note"]
+ "[root] var.cloudflare_zone_id" [label = "var.cloudflare_zone_id", shape = "note"]
+ "[root] var.create_synthetic_monitor" [label = "var.create_synthetic_monitor", shape = "note"]
+ "[root] var.database_subnet_cidrs" [label = "var.database_subnet_cidrs", shape = "note"]
+ "[root] var.dbname" [label = "var.dbname", shape = "note"]
+ "[root] var.dbpassword" [label = "var.dbpassword", shape = "note"]
+ "[root] var.dbuser" [label = "var.dbuser", shape = "note"]
+ "[root] var.deployment_flag" [label = "var.deployment_flag", shape = "note"]
+ "[root] var.ec2_instance_type" [label = "var.ec2_instance_type", shape = "note"]
+ "[root] var.environment" [label = "var.environment", shape = "note"]
+ "[root] var.iam_instance_profile_arn" [label = "var.iam_instance_profile_arn", shape = "note"]
+ "[root] var.iam_policy_arn" [label = "var.iam_policy_arn", shape = "note"]
+ "[root] var.iriusrisk_version" [label = "var.iriusrisk_version", shape = "note"]
+ "[root] var.is_rollback" [label = "var.is_rollback", shape = "note"]
+ "[root] var.keep_previous_rds" [label = "var.keep_previous_rds", shape = "note"]
+ "[root] var.key_name" [label = "var.key_name", shape = "note"]
+ "[root] var.major_engine_version" [label = "var.major_engine_version", shape = "note"]
+ "[root] var.newrelic_account_id" [label = "var.newrelic_account_id", shape = "note"]
+ "[root] var.newrelic_api_key" [label = "var.newrelic_api_key", shape = "note"]
+ "[root] var.newrelic_enabled" [label = "var.newrelic_enabled", shape = "note"]
+ "[root] var.newrelic_region" [label = "var.newrelic_region", shape = "note"]
+ "[root] var.private_subnet_cidrs" [label = "var.private_subnet_cidrs", shape = "note"]
+ "[root] var.public_subnet_cidrs" [label = "var.public_subnet_cidrs", shape = "note"]
+ "[root] var.rds_engine" [label = "var.rds_engine", shape = "note"]
+ "[root] var.rds_engine_version" [label = "var.rds_engine_version", shape = "note"]
+ "[root] var.rds_family" [label = "var.rds_family", shape = "note"]
+ "[root] var.rds_instance_type" [label = "var.rds_instance_type", shape = "note"]
+ "[root] var.rds_snapshot" [label = "var.rds_snapshot", shape = "note"]
+ "[root] var.slack_channel" [label = "var.slack_channel", shape = "note"]
+ "[root] var.slack_webhook_url" [label = "var.slack_webhook_url", shape = "note"]
+ "[root] var.stack_name" [label = "var.stack_name", shape = "note"]
+ "[root] var.startleft_version" [label = "var.startleft_version", shape = "note"]
+ "[root] var.type" [label = "var.type", shape = "note"]
+ "[root] var.vpc_cidr" [label = "var.vpc_cidr", shape = "note"]
+ "[root] var.web_desired_capacity" [label = "var.web_desired_capacity", shape = "note"]
+ "[root] var.web_max_size" [label = "var.web_max_size", shape = "note"]
+ "[root] var.web_min_size" [label = "var.web_min_size", shape = "note"]
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] aws_launch_template.iriusrisk (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] local.asg_tags (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] local.iriusrisk_api_asg_name (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] module.iriusrisk_alb.output.target_group_arns (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] var.api_desired_capacity"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] var.api_max_size"
+ "[root] aws_autoscaling_group.iriusrisk_api (expand)" -> "[root] var.api_min_size"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] aws_launch_template.iriusrisk (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] local.asg_tags (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] local.iriusrisk_web_asg_name (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] module.iriusrisk_alb.output.target_group_arns (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] var.web_desired_capacity"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] var.web_max_size"
+ "[root] aws_autoscaling_group.iriusrisk_web (expand)" -> "[root] var.web_min_size"
+ "[root] aws_autoscaling_policy.iriusrisk_api_scaling_down (expand)" -> "[root] aws_autoscaling_group.iriusrisk_api (expand)"
+ "[root] aws_autoscaling_policy.iriusrisk_api_scaling_up (expand)" -> "[root] aws_autoscaling_group.iriusrisk_api (expand)"
+ "[root] aws_autoscaling_policy.iriusrisk_web_scaling_down (expand)" -> "[root] aws_autoscaling_group.iriusrisk_web (expand)"
+ "[root] aws_autoscaling_policy.iriusrisk_web_scaling_up (expand)" -> "[root] aws_autoscaling_group.iriusrisk_web (expand)"
+ "[root] aws_cloudwatch_log_group.cw_log_group (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_cloudwatch_log_group.cw_log_group (expand)" -> "[root] var.environment"
+ "[root] aws_cloudwatch_log_group.cw_log_group (expand)" -> "[root] var.stack_name"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down (expand)" -> "[root] aws_autoscaling_policy.iriusrisk_api_scaling_down (expand)"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up (expand)" -> "[root] aws_autoscaling_policy.iriusrisk_api_scaling_up (expand)"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600 (expand)" -> "[root] module.aurora-db-blue.output.cluster_instances (expand)"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600 (expand)" -> "[root] module.aurora-db-green.output.cluster_instances (expand)"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down (expand)" -> "[root] aws_autoscaling_policy.iriusrisk_web_scaling_down (expand)"
+ "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up (expand)" -> "[root] aws_autoscaling_policy.iriusrisk_web_scaling_up (expand)"
+ "[root] aws_iam_instance_profile.instance_profile (expand)" -> "[root] aws_iam_role.access-role (expand)"
+ "[root] aws_iam_policy.secret-access (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_iam_policy.secret-access (expand)" -> "[root] var.stack_name"
+ "[root] aws_iam_role.access-role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_iam_role.access-role (expand)" -> "[root] var.stack_name"
+ "[root] aws_iam_role_policy_attachment.existing-policies-attachment (expand)" -> "[root] aws_iam_role.access-role (expand)"
+ "[root] aws_iam_role_policy_attachment.existing-policies-attachment (expand)" -> "[root] var.iam_policy_arn"
+ "[root] aws_iam_role_policy_attachment.secret-access-attachment (expand)" -> "[root] aws_iam_policy.secret-access (expand)"
+ "[root] aws_iam_role_policy_attachment.secret-access-attachment (expand)" -> "[root] aws_iam_role.access-role (expand)"
+ "[root] aws_launch_template.iriusrisk (expand)" -> "[root] aws_iam_instance_profile.instance_profile (expand)"
+ "[root] aws_launch_template.iriusrisk (expand)" -> "[root] data.aws_ami.iriusrisk (expand)"
+ "[root] aws_launch_template.iriusrisk (expand)" -> "[root] data.template_file.iriusrisk (expand)"
+ "[root] aws_launch_template.iriusrisk (expand)" -> "[root] var.ec2_instance_type"
+ "[root] aws_launch_template.iriusrisk (expand)" -> "[root] var.key_name"
+ "[root] aws_secretsmanager_secret.jwt-secret (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_secretsmanager_secret.jwt-secret (expand)" -> "[root] var.stack_name"
+ "[root] aws_secretsmanager_secret_version.secret-value (expand)" -> "[root] aws_secretsmanager_secret.jwt-secret (expand)"
+ "[root] aws_secretsmanager_secret_version.secret-value (expand)" -> "[root] tls_private_key.ec_private (expand)"
+ "[root] aws_security_group.alb (expand)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] aws_security_group.aurora-db-sg (expand)" -> "[root] aws_security_group.iriusrisk (expand)"
+ "[root] aws_security_group.iriusrisk (expand)" -> "[root] aws_security_group.alb (expand)"
+ "[root] aws_security_group.iriusrisk (expand)" -> "[root] var.bastion_host_cidrs"
+ "[root] cloudflare_record.dns_cname (expand)" -> "[root] module.iriusrisk_alb.output.lb_dns_name (expand)"
+ "[root] cloudflare_record.dns_cname (expand)" -> "[root] provider[\"registry.terraform.io/cloudflare/cloudflare\"]"
+ "[root] cloudflare_record.dns_cname (expand)" -> "[root] var.cloudflare_dns_name"
+ "[root] cloudflare_record.dns_cname (expand)" -> "[root] var.cloudflare_zone_id"
+ "[root] data.aws_ami.iriusrisk (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] data.aws_ami.iriusrisk (expand)" -> "[root] var.iriusrisk_version"
+ "[root] data.newrelic_entity.api_monitor (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] data.newrelic_entity.api_monitor (expand)" -> "[root] time_sleep.wait_120_seconds (expand)"
+ "[root] data.newrelic_entity.web_monitor (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] data.newrelic_entity.web_monitor (expand)" -> "[root] time_sleep.wait_120_seconds (expand)"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] aws_cloudwatch_log_group.cw_log_group (expand)"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] aws_secretsmanager_secret.jwt-secret (expand)"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] module.aurora-db-blue.output.cluster_endpoint (expand)"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] module.aurora-db-green.output.cluster_endpoint (expand)"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/template\"]"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] var.cloudflare_dns_name"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] var.iriusrisk_version"
+ "[root] data.template_file.iriusrisk (expand)" -> "[root] var.startleft_version"
+ "[root] local.asg_tags (expand)" -> "[root] var.bitbucket_repository"
+ "[root] local.asg_tags (expand)" -> "[root] var.cloudflare_dns_name"
+ "[root] local.asg_tags (expand)" -> "[root] var.environment"
+ "[root] local.asg_tags (expand)" -> "[root] var.type"
+ "[root] local.default_tags (expand)" -> "[root] var.bitbucket_repository"
+ "[root] local.default_tags (expand)" -> "[root] var.environment"
+ "[root] local.default_tags (expand)" -> "[root] var.type"
+ "[root] local.iriusrisk_api_asg_name (expand)" -> "[root] var.stack_name"
+ "[root] local.iriusrisk_web_asg_name (expand)" -> "[root] var.stack_name"
+ "[root] local.local_deployment_flag (expand)" -> "[root] var.deployment_flag"
+ "[root] local.local_deployment_flag (expand)" -> "[root] var.is_rollback"
+ "[root] local.newrelic_notification_channel (expand)" -> "[root] var.stack_name"
+ "[root] local.stack_endpoint (expand)" -> "[root] var.stack_name"
+ "[root] local.web_endpoint (expand)" -> "[root] cloudflare_record.dns_cname (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.aws_lb_listener_rule.static (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.aws_lb_target_group_attachment.tg_attachment (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.aws_security_group_rule.ingress (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.local.tags (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.output.ec2_id (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.output.eip_public_dns (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.output.security_group_id (expand)"
+ "[root] module.analytics (close)" -> "[root] module.analytics.output.target_group_id (expand)"
+ "[root] module.analytics (expand)" -> "[root] var.analytics_enabled"
+ "[root] module.analytics.aws_eip.ec2 (expand)" -> "[root] module.analytics.aws_instance.ec2 (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.aws_security_group.ec2-analytics (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.data.template_file.user_data (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.var.ami_id (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.var.ec2_instance_type (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.var.iam_instance_profile_name (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.var.key_name (expand)"
+ "[root] module.analytics.aws_instance.ec2 (expand)" -> "[root] module.analytics.var.public_subnet (expand)"
+ "[root] module.analytics.aws_lb_listener_rule.static (expand)" -> "[root] module.analytics.aws_lb_target_group.tg (expand)"
+ "[root] module.analytics.aws_lb_listener_rule.static (expand)" -> "[root] module.analytics.var.lb_https_listener_arn (expand)"
+ "[root] module.analytics.aws_lb_target_group.tg (expand)" -> "[root] module.analytics.var.stack_name (expand)"
+ "[root] module.analytics.aws_lb_target_group.tg (expand)" -> "[root] module.analytics.var.tags (expand)"
+ "[root] module.analytics.aws_lb_target_group.tg (expand)" -> "[root] module.analytics.var.vpc_id (expand)"
+ "[root] module.analytics.aws_lb_target_group_attachment.tg_attachment (expand)" -> "[root] module.analytics.aws_instance.ec2 (expand)"
+ "[root] module.analytics.aws_lb_target_group_attachment.tg_attachment (expand)" -> "[root] module.analytics.aws_lb_target_group.tg (expand)"
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" -> "[root] module.analytics.var.cluster_id (expand)"
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" -> "[root] module.analytics.var.db_subnet_group_name (expand)"
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" -> "[root] module.analytics.var.rds_instance_type (expand)"
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" -> "[root] module.analytics.var.stack_name (expand)"
+ "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)" -> "[root] module.analytics.var.tags (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.bastion_host_cidrs (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.iriusrisk_ec2_sg_id (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.iriusrisk_lb_sg_id (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.stack_name (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.tags (expand)"
+ "[root] module.analytics.aws_security_group.ec2-analytics (expand)" -> "[root] module.analytics.var.vpc_id (expand)"
+ "[root] module.analytics.aws_security_group_rule.ingress (expand)" -> "[root] module.analytics.aws_security_group.ec2-analytics (expand)"
+ "[root] module.analytics.aws_security_group_rule.ingress (expand)" -> "[root] module.analytics.var.database_sg_id (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.aws_region (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.build_version (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.dockerhub_account (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.elasticsearch_version (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.google_no_reply (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.iriurisk_certificate (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.iriurisk_key (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.log_group (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.stack_name (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.type (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] module.analytics.var.web_endpoint (expand)"
+ "[root] module.analytics.data.template_file.user_data (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/template\"]"
+ "[root] module.analytics.local.tags (expand)" -> "[root] module.analytics.var.tags (expand)"
+ "[root] module.analytics.output.ec2_id (expand)" -> "[root] module.analytics.aws_instance.ec2 (expand)"
+ "[root] module.analytics.output.eip_public_dns (expand)" -> "[root] module.analytics.aws_eip.ec2 (expand)"
+ "[root] module.analytics.output.security_group_id (expand)" -> "[root] module.analytics.aws_security_group.ec2-analytics (expand)"
+ "[root] module.analytics.output.target_group_id (expand)" -> "[root] module.analytics.aws_lb_target_group.tg (expand)"
+ "[root] module.analytics.var.ami_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.aws_region (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.aws_region (expand)" -> "[root] var.aws_region"
+ "[root] module.analytics.var.bastion_host_cidrs (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.build_version (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.build_version (expand)" -> "[root] var.analytics_build"
+ "[root] module.analytics.var.cluster_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.cluster_id (expand)" -> "[root] module.aurora-db-blue.output.cluster_id (expand)"
+ "[root] module.analytics.var.cluster_id (expand)" -> "[root] module.aurora-db-green.output.cluster_id (expand)"
+ "[root] module.analytics.var.database_sg_id (expand)" -> "[root] aws_security_group.aurora-db-sg (expand)"
+ "[root] module.analytics.var.database_sg_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.db_subnet_group_name (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue.output.db_subnet_group_name (expand)"
+ "[root] module.analytics.var.db_subnet_group_name (expand)" -> "[root] module.aurora-db-green.output.db_subnet_group_name (expand)"
+ "[root] module.analytics.var.dockerhub_account (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.ec2_instance_type (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.elasticsearch_version (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.google_no_reply (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.iam_instance_profile_name (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.iriurisk_certificate (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.iriurisk_key (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.iriusrisk_ec2_sg_id (expand)" -> "[root] aws_security_group.iriusrisk (expand)"
+ "[root] module.analytics.var.iriusrisk_ec2_sg_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.iriusrisk_lb_sg_id (expand)" -> "[root] aws_security_group.alb (expand)"
+ "[root] module.analytics.var.iriusrisk_lb_sg_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.key_name (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.lb_https_listener_arn (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.lb_https_listener_arn (expand)" -> "[root] module.iriusrisk_alb.output.https_listener_arns (expand)"
+ "[root] module.analytics.var.log_group (expand)" -> "[root] aws_cloudwatch_log_group.cw_log_group (expand)"
+ "[root] module.analytics.var.log_group (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.public_subnet (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.public_subnet (expand)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] module.analytics.var.rds_instance_type (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.stack_name (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.stack_name (expand)" -> "[root] var.stack_name"
+ "[root] module.analytics.var.tags (expand)" -> "[root] local.default_tags (expand)"
+ "[root] module.analytics.var.tags (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.type (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.type (expand)" -> "[root] var.type"
+ "[root] module.analytics.var.vpc_id (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.analytics.var.vpc_id (expand)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] module.analytics.var.web_endpoint (expand)" -> "[root] local.stack_endpoint (expand)"
+ "[root] module.analytics.var.web_endpoint (expand)" -> "[root] module.analytics (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.additional_cluster_endpoints (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_arn (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_database_name (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_endpoint (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_engine_version_actual (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_hosted_zone_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_instances (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_master_password (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_master_username (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_members (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_port (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_reader_endpoint (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_resource_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.cluster_role_associations (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.db_cluster_parameter_group_arn (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.db_cluster_parameter_group_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.db_parameter_group_arn (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.db_parameter_group_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_arn (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_name (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_unique_id (expand)"
+ "[root] module.aurora-db-blue (close)" -> "[root] module.aurora-db-blue.output.security_group_id (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_policy_name (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_scale_in_cooldown (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_scale_out_cooldown (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_target_connections (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_target_cpu (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-blue.var.predefined_metric_type (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_enabled (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_max_capacity (expand)"
+ "[root] module.aurora-db-blue.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-blue.var.autoscaling_min_capacity (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.local.db_parameter_group_name (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.create_db_parameter_group (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_parameter_group_description (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_parameter_group_family (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_parameter_group_parameters (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_parameter_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.tags (expand)"
+ "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-blue.local.internal_db_subnet_group_name (expand)"
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-blue.var.create_db_subnet_group (expand)"
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-blue.var.subnets (expand)"
+ "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-blue.var.tags (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.create_monitoring_role (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_description (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_force_detach_policies (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_managed_policy_arns (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_max_session_duration (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_name (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_path (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_permissions_boundary (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.iam_role_use_name_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.monitoring_interval (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.var.tags (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-blue.data.aws_partition.current (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.aws_security_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.backtrack_window (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.final_snapshot_identifier_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.is_serverless (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.master_password (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.local.port (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.allocated_storage (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.allow_major_version_upgrade (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.apply_immediately (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.availability_zones (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.backup_retention_period (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.cluster_members (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.cluster_tags (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.cluster_timeouts (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.cluster_use_name_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.copy_tags_to_snapshot (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.database_name (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_db_instance_parameter_group_name (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_instance_class (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.deletion_protection (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.enable_global_write_forwarding (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.enable_http_endpoint (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.enabled_cloudwatch_logs_exports (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.engine_version (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.global_cluster_identifier (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.iam_database_authentication_enabled (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.iops (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.is_primary_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.kms_key_id (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.master_username (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.network_type (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.preferred_backup_window (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.preferred_maintenance_window (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.replication_source_identifier (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.restore_to_point_in_time (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.s3_import (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.scaling_configuration (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.serverlessv2_scaling_configuration (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.snapshot_identifier (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.source_region (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.storage_encrypted (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.storage_type (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-blue.var.vpc_security_group_ids (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_endpoint.this (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_endpoint.this (expand)" -> "[root] module.aurora-db-blue.var.endpoints (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.auto_minor_version_upgrade (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.ca_cert_identifier (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.instance_class (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.instance_timeouts (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.instances (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.instances_use_identifier_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.monitoring_role_arn (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.performance_insights_enabled (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.performance_insights_kms_key_id (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.performance_insights_retention_period (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-blue.var.publicly_accessible (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.local.cluster_parameter_group_name (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.create_db_cluster_parameter_group (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_parameter_group_description (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_parameter_group_family (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_parameter_group_parameters (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_parameter_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-blue.var.tags (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-blue.aws_rds_cluster_role_association.this (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.aws_rds_cluster_role_association.this (expand)" -> "[root] module.aurora-db-blue.var.iam_roles (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.create_security_group (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.name (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.security_group_description (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.security_group_tags (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.security_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.tags (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] module.aurora-db-blue.var.vpc_id (expand)"
+ "[root] module.aurora-db-blue.aws_security_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-blue.aws_security_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-blue.local.port (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-blue.var.allowed_cidr_blocks (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-blue.aws_security_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-blue.local.port (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-blue.var.allowed_security_groups (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-blue.aws_security_group.this (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-blue.local.port (expand)"
+ "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-blue.var.security_group_egress_rules (expand)"
+ "[root] module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-blue.data.aws_partition.current (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-blue.local.backtrack_window (expand)" -> "[root] module.aurora-db-blue.var.backtrack_window (expand)"
+ "[root] module.aurora-db-blue.local.backtrack_window (expand)" -> "[root] module.aurora-db-blue.var.engine (expand)"
+ "[root] module.aurora-db-blue.local.backtrack_window (expand)" -> "[root] module.aurora-db-blue.var.engine_mode (expand)"
+ "[root] module.aurora-db-blue.local.cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-blue.var.db_cluster_parameter_group_name (expand)"
+ "[root] module.aurora-db-blue.local.cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-blue.var.name (expand)"
+ "[root] module.aurora-db-blue.local.create_cluster (expand)" -> "[root] module.aurora-db-blue.var.create_cluster (expand)"
+ "[root] module.aurora-db-blue.local.create_cluster (expand)" -> "[root] module.aurora-db-blue.var.putin_khuylo (expand)"
+ "[root] module.aurora-db-blue.local.db_parameter_group_name (expand)" -> "[root] module.aurora-db-blue.var.db_parameter_group_name (expand)"
+ "[root] module.aurora-db-blue.local.db_parameter_group_name (expand)" -> "[root] module.aurora-db-blue.var.name (expand)"
+ "[root] module.aurora-db-blue.local.db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue.aws_db_subnet_group.this (expand)"
+ "[root] module.aurora-db-blue.local.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)"
+ "[root] module.aurora-db-blue.local.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-blue.var.final_snapshot_identifier_prefix (expand)"
+ "[root] module.aurora-db-blue.local.internal_db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue.var.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-blue.local.internal_db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue.var.name (expand)"
+ "[root] module.aurora-db-blue.local.is_serverless (expand)" -> "[root] module.aurora-db-blue.var.engine_mode (expand)"
+ "[root] module.aurora-db-blue.local.master_password (expand)" -> "[root] module.aurora-db-blue.random_password.master_password (expand)"
+ "[root] module.aurora-db-blue.local.master_password (expand)" -> "[root] module.aurora-db-blue.var.master_password (expand)"
+ "[root] module.aurora-db-blue.local.port (expand)" -> "[root] module.aurora-db-blue.var.engine (expand)"
+ "[root] module.aurora-db-blue.local.port (expand)" -> "[root] module.aurora-db-blue.var.port (expand)"
+ "[root] module.aurora-db-blue.output.additional_cluster_endpoints (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_endpoint.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_arn (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_database_name (expand)" -> "[root] module.aurora-db-blue.var.database_name (expand)"
+ "[root] module.aurora-db-blue.output.cluster_endpoint (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_engine_version_actual (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_hosted_zone_id (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_id (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_instances (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_instance.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_master_password (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_master_username (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_members (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_port (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_reader_endpoint (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_resource_id (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-blue.output.cluster_role_associations (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_role_association.this (expand)"
+ "[root] module.aurora-db-blue.output.db_cluster_parameter_group_arn (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.output.db_cluster_parameter_group_id (expand)" -> "[root] module.aurora-db-blue.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.output.db_parameter_group_arn (expand)" -> "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.output.db_parameter_group_id (expand)" -> "[root] module.aurora-db-blue.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-blue.output.db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue.local.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_arn (expand)" -> "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_name (expand)" -> "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue.output.enhanced_monitoring_iam_role_unique_id (expand)" -> "[root] module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-blue.output.security_group_id (expand)" -> "[root] module.aurora-db-blue.aws_security_group.this (expand)"
+ "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-blue.var.name (expand)"
+ "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-blue.var.skip_final_snapshot (expand)"
+ "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/random\"]"
+ "[root] module.aurora-db-blue.random_password.master_password (expand)" -> "[root] module.aurora-db-blue.local.create_cluster (expand)"
+ "[root] module.aurora-db-blue.random_password.master_password (expand)" -> "[root] module.aurora-db-blue.var.create_random_password (expand)"
+ "[root] module.aurora-db-blue.random_password.master_password (expand)" -> "[root] module.aurora-db-blue.var.random_password_length (expand)"
+ "[root] module.aurora-db-blue.random_password.master_password (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/random\"]"
+ "[root] module.aurora-db-blue.var.allocated_storage (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.allow_major_version_upgrade (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.allowed_cidr_blocks (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.allowed_security_groups (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.apply_immediately (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.auto_minor_version_upgrade (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.auto_minor_version_upgrade (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-blue.var.autoscaling_enabled (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_max_capacity (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_min_capacity (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_policy_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_scale_in_cooldown (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_scale_out_cooldown (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_target_connections (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.autoscaling_target_cpu (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.availability_zones (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.backtrack_window (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.backup_retention_period (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.ca_cert_identifier (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.cluster_members (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.cluster_tags (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.cluster_timeouts (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.cluster_use_name_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.copy_tags_to_snapshot (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_cluster (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-blue.var.create_cluster (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_cluster (expand)" -> "[root] var.keep_previous_rds"
+ "[root] module.aurora-db-blue.var.create_db_cluster_parameter_group (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_db_parameter_group (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_db_subnet_group (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_monitoring_role (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_random_password (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.create_security_group (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.database_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.database_name (expand)" -> "[root] var.dbname"
+ "[root] module.aurora-db-blue.var.db_cluster_db_instance_parameter_group_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_instance_class (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_parameter_group_description (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_parameter_group_family (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_parameter_group_parameters (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_cluster_parameter_group_use_name_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_parameter_group_description (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_parameter_group_family (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_parameter_group_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_parameter_group_parameters (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_parameter_group_use_name_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_subnet_group_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.db_subnet_group_name (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-blue.var.deletion_protection (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-blue.var.deletion_protection (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.deletion_protection (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-blue.var.enable_global_write_forwarding (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.enable_http_endpoint (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.enabled_cloudwatch_logs_exports (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.endpoints (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.engine (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.engine (expand)" -> "[root] var.rds_engine"
+ "[root] module.aurora-db-blue.var.engine_mode (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.engine_version (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.engine_version (expand)" -> "[root] var.rds_engine_version"
+ "[root] module.aurora-db-blue.var.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.global_cluster_identifier (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_database_authentication_enabled (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_description (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_force_detach_policies (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_managed_policy_arns (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_max_session_duration (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_path (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_permissions_boundary (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_role_use_name_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iam_roles (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.instance_class (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.instance_class (expand)" -> "[root] var.rds_instance_type"
+ "[root] module.aurora-db-blue.var.instance_timeouts (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.instances (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.instances_use_identifier_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.iops (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.is_primary_cluster (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.kms_key_id (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.master_password (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.master_password (expand)" -> "[root] var.dbpassword"
+ "[root] module.aurora-db-blue.var.master_username (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.master_username (expand)" -> "[root] var.dbuser"
+ "[root] module.aurora-db-blue.var.monitoring_interval (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.monitoring_role_arn (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.name (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.name (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-blue.var.network_type (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.performance_insights_enabled (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.performance_insights_kms_key_id (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.performance_insights_retention_period (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.port (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.predefined_metric_type (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.preferred_backup_window (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.preferred_maintenance_window (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.publicly_accessible (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.putin_khuylo (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.random_password_length (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.replication_source_identifier (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.restore_to_point_in_time (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.s3_import (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.scaling_configuration (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.security_group_description (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.security_group_egress_rules (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.security_group_tags (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.security_group_use_name_prefix (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.serverlessv2_scaling_configuration (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.skip_final_snapshot (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.skip_final_snapshot (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-blue.var.snapshot_identifier (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-blue.var.snapshot_identifier (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.snapshot_identifier (expand)" -> "[root] var.rds_snapshot"
+ "[root] module.aurora-db-blue.var.source_region (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.storage_encrypted (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.storage_type (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.subnets (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.subnets (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.aurora-db-blue.var.tags (expand)" -> "[root] local.default_tags (expand)"
+ "[root] module.aurora-db-blue.var.tags (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.tags (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-blue.var.vpc_id (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-blue.var.vpc_security_group_ids (expand)" -> "[root] aws_security_group.aurora-db-sg (expand)"
+ "[root] module.aurora-db-blue.var.vpc_security_group_ids (expand)" -> "[root] module.aurora-db-blue (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.additional_cluster_endpoints (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_arn (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_database_name (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_endpoint (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_engine_version_actual (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_hosted_zone_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_instances (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_master_password (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_master_username (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_members (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_port (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_reader_endpoint (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_resource_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.cluster_role_associations (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.db_cluster_parameter_group_arn (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.db_cluster_parameter_group_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.db_parameter_group_arn (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.db_parameter_group_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_arn (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_name (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_unique_id (expand)"
+ "[root] module.aurora-db-green (close)" -> "[root] module.aurora-db-green.output.security_group_id (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_policy_name (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_scale_in_cooldown (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_scale_out_cooldown (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_target_connections (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_target_cpu (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)" -> "[root] module.aurora-db-green.var.predefined_metric_type (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_enabled (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_max_capacity (expand)"
+ "[root] module.aurora-db-green.aws_appautoscaling_target.this (expand)" -> "[root] module.aurora-db-green.var.autoscaling_min_capacity (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.local.db_parameter_group_name (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.create_db_parameter_group (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_parameter_group_description (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_parameter_group_family (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_parameter_group_parameters (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_parameter_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.tags (expand)"
+ "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-green.local.internal_db_subnet_group_name (expand)"
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-green.var.create_db_subnet_group (expand)"
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-green.var.subnets (expand)"
+ "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)" -> "[root] module.aurora-db-green.var.tags (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.create_monitoring_role (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_description (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_force_detach_policies (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_managed_policy_arns (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_max_session_duration (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_name (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_path (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_permissions_boundary (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.iam_role_use_name_prefix (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.monitoring_interval (expand)"
+ "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.var.tags (expand)"
+ "[root] module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)" -> "[root] module.aurora-db-green.data.aws_partition.current (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.aws_security_group.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.backtrack_window (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.final_snapshot_identifier_prefix (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.is_serverless (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.master_password (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.local.port (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.allocated_storage (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.allow_major_version_upgrade (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.apply_immediately (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.availability_zones (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.backup_retention_period (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.cluster_members (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.cluster_tags (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.cluster_timeouts (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.cluster_use_name_prefix (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.copy_tags_to_snapshot (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.database_name (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_db_instance_parameter_group_name (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_instance_class (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.deletion_protection (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.enable_global_write_forwarding (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.enable_http_endpoint (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.enabled_cloudwatch_logs_exports (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.engine_version (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.global_cluster_identifier (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.iam_database_authentication_enabled (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.iops (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.is_primary_cluster (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.kms_key_id (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.master_username (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.network_type (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.preferred_backup_window (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.preferred_maintenance_window (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.replication_source_identifier (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.restore_to_point_in_time (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.s3_import (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.scaling_configuration (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.serverlessv2_scaling_configuration (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.snapshot_identifier (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.source_region (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.storage_encrypted (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.storage_type (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster.this (expand)" -> "[root] module.aurora-db-green.var.vpc_security_group_ids (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_endpoint.this (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_endpoint.this (expand)" -> "[root] module.aurora-db-green.var.endpoints (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.auto_minor_version_upgrade (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.ca_cert_identifier (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.instance_class (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.instance_timeouts (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.instances (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.instances_use_identifier_prefix (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.monitoring_role_arn (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.performance_insights_enabled (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.performance_insights_kms_key_id (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.performance_insights_retention_period (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)" -> "[root] module.aurora-db-green.var.publicly_accessible (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.local.cluster_parameter_group_name (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.create_db_cluster_parameter_group (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_parameter_group_description (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_parameter_group_family (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_parameter_group_parameters (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.db_cluster_parameter_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] module.aurora-db-green.var.tags (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-green.aws_rds_cluster_role_association.this (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.aws_rds_cluster_role_association.this (expand)" -> "[root] module.aurora-db-green.var.iam_roles (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.create_security_group (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.name (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.security_group_description (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.security_group_tags (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.security_group_use_name_prefix (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.tags (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] module.aurora-db-green.var.vpc_id (expand)"
+ "[root] module.aurora-db-green.aws_security_group.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-green.aws_security_group.this (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-green.local.port (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)" -> "[root] module.aurora-db-green.var.allowed_cidr_blocks (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-green.aws_security_group.this (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-green.local.port (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)" -> "[root] module.aurora-db-green.var.allowed_security_groups (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-green.aws_security_group.this (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-green.local.port (expand)"
+ "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)" -> "[root] module.aurora-db-green.var.security_group_egress_rules (expand)"
+ "[root] module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-green.data.aws_partition.current (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.data.aws_partition.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.aurora-db-green.local.backtrack_window (expand)" -> "[root] module.aurora-db-green.var.backtrack_window (expand)"
+ "[root] module.aurora-db-green.local.backtrack_window (expand)" -> "[root] module.aurora-db-green.var.engine (expand)"
+ "[root] module.aurora-db-green.local.backtrack_window (expand)" -> "[root] module.aurora-db-green.var.engine_mode (expand)"
+ "[root] module.aurora-db-green.local.cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-green.var.db_cluster_parameter_group_name (expand)"
+ "[root] module.aurora-db-green.local.cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-green.var.name (expand)"
+ "[root] module.aurora-db-green.local.create_cluster (expand)" -> "[root] module.aurora-db-green.var.create_cluster (expand)"
+ "[root] module.aurora-db-green.local.create_cluster (expand)" -> "[root] module.aurora-db-green.var.putin_khuylo (expand)"
+ "[root] module.aurora-db-green.local.db_parameter_group_name (expand)" -> "[root] module.aurora-db-green.var.db_parameter_group_name (expand)"
+ "[root] module.aurora-db-green.local.db_parameter_group_name (expand)" -> "[root] module.aurora-db-green.var.name (expand)"
+ "[root] module.aurora-db-green.local.db_subnet_group_name (expand)" -> "[root] module.aurora-db-green.aws_db_subnet_group.this (expand)"
+ "[root] module.aurora-db-green.local.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)"
+ "[root] module.aurora-db-green.local.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-green.var.final_snapshot_identifier_prefix (expand)"
+ "[root] module.aurora-db-green.local.internal_db_subnet_group_name (expand)" -> "[root] module.aurora-db-green.var.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-green.local.internal_db_subnet_group_name (expand)" -> "[root] module.aurora-db-green.var.name (expand)"
+ "[root] module.aurora-db-green.local.is_serverless (expand)" -> "[root] module.aurora-db-green.var.engine_mode (expand)"
+ "[root] module.aurora-db-green.local.master_password (expand)" -> "[root] module.aurora-db-green.random_password.master_password (expand)"
+ "[root] module.aurora-db-green.local.master_password (expand)" -> "[root] module.aurora-db-green.var.master_password (expand)"
+ "[root] module.aurora-db-green.local.port (expand)" -> "[root] module.aurora-db-green.var.engine (expand)"
+ "[root] module.aurora-db-green.local.port (expand)" -> "[root] module.aurora-db-green.var.port (expand)"
+ "[root] module.aurora-db-green.output.additional_cluster_endpoints (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_endpoint.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_arn (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_database_name (expand)" -> "[root] module.aurora-db-green.var.database_name (expand)"
+ "[root] module.aurora-db-green.output.cluster_endpoint (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_engine_version_actual (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_hosted_zone_id (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_id (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_instances (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_instance.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_master_password (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_master_username (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_members (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_port (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_reader_endpoint (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_resource_id (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster.this (expand)"
+ "[root] module.aurora-db-green.output.cluster_role_associations (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_role_association.this (expand)"
+ "[root] module.aurora-db-green.output.db_cluster_parameter_group_arn (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.output.db_cluster_parameter_group_id (expand)" -> "[root] module.aurora-db-green.aws_rds_cluster_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.output.db_parameter_group_arn (expand)" -> "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.output.db_parameter_group_id (expand)" -> "[root] module.aurora-db-green.aws_db_parameter_group.this (expand)"
+ "[root] module.aurora-db-green.output.db_subnet_group_name (expand)" -> "[root] module.aurora-db-green.local.db_subnet_group_name (expand)"
+ "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_arn (expand)" -> "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_name (expand)" -> "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green.output.enhanced_monitoring_iam_role_unique_id (expand)" -> "[root] module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring (expand)"
+ "[root] module.aurora-db-green.output.security_group_id (expand)" -> "[root] module.aurora-db-green.aws_security_group.this (expand)"
+ "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-green.var.name (expand)"
+ "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)" -> "[root] module.aurora-db-green.var.skip_final_snapshot (expand)"
+ "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/random\"]"
+ "[root] module.aurora-db-green.random_password.master_password (expand)" -> "[root] module.aurora-db-green.local.create_cluster (expand)"
+ "[root] module.aurora-db-green.random_password.master_password (expand)" -> "[root] module.aurora-db-green.var.create_random_password (expand)"
+ "[root] module.aurora-db-green.random_password.master_password (expand)" -> "[root] module.aurora-db-green.var.random_password_length (expand)"
+ "[root] module.aurora-db-green.random_password.master_password (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/random\"]"
+ "[root] module.aurora-db-green.var.allocated_storage (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.allow_major_version_upgrade (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.allowed_cidr_blocks (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.allowed_security_groups (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.apply_immediately (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.auto_minor_version_upgrade (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.auto_minor_version_upgrade (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-green.var.autoscaling_enabled (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_max_capacity (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_min_capacity (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_policy_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_scale_in_cooldown (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_scale_out_cooldown (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_target_connections (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.autoscaling_target_cpu (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.availability_zones (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.backtrack_window (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.backup_retention_period (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.ca_cert_identifier (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.cluster_members (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.cluster_tags (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.cluster_timeouts (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.cluster_use_name_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.copy_tags_to_snapshot (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_cluster (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-green.var.create_cluster (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_cluster (expand)" -> "[root] var.keep_previous_rds"
+ "[root] module.aurora-db-green.var.create_db_cluster_parameter_group (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_db_parameter_group (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_db_subnet_group (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_monitoring_role (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_random_password (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.create_security_group (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.database_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.database_name (expand)" -> "[root] var.dbname"
+ "[root] module.aurora-db-green.var.db_cluster_db_instance_parameter_group_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_instance_class (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_parameter_group_description (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_parameter_group_family (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_parameter_group_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_parameter_group_parameters (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_cluster_parameter_group_use_name_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_parameter_group_description (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_parameter_group_family (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_parameter_group_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_parameter_group_parameters (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_parameter_group_use_name_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_subnet_group_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.db_subnet_group_name (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-green.var.deletion_protection (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-green.var.deletion_protection (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.deletion_protection (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-green.var.enable_global_write_forwarding (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.enable_http_endpoint (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.enabled_cloudwatch_logs_exports (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.endpoints (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.engine (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.engine (expand)" -> "[root] var.rds_engine"
+ "[root] module.aurora-db-green.var.engine_mode (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.engine_version (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.engine_version (expand)" -> "[root] var.rds_engine_version"
+ "[root] module.aurora-db-green.var.final_snapshot_identifier_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.global_cluster_identifier (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_database_authentication_enabled (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_description (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_force_detach_policies (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_managed_policy_arns (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_max_session_duration (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_path (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_permissions_boundary (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_role_use_name_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iam_roles (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.instance_class (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.instance_class (expand)" -> "[root] var.rds_instance_type"
+ "[root] module.aurora-db-green.var.instance_timeouts (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.instances (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.instances_use_identifier_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.iops (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.is_primary_cluster (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.kms_key_id (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.master_password (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.master_password (expand)" -> "[root] var.dbpassword"
+ "[root] module.aurora-db-green.var.master_username (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.master_username (expand)" -> "[root] var.dbuser"
+ "[root] module.aurora-db-green.var.monitoring_interval (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.monitoring_role_arn (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.name (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.name (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-green.var.network_type (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.performance_insights_enabled (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.performance_insights_kms_key_id (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.performance_insights_retention_period (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.port (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.predefined_metric_type (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.preferred_backup_window (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.preferred_maintenance_window (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.publicly_accessible (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.putin_khuylo (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.random_password_length (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.replication_source_identifier (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.restore_to_point_in_time (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.s3_import (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.scaling_configuration (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.security_group_description (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.security_group_egress_rules (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.security_group_tags (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.security_group_use_name_prefix (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.serverlessv2_scaling_configuration (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.skip_final_snapshot (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.skip_final_snapshot (expand)" -> "[root] var.environment"
+ "[root] module.aurora-db-green.var.snapshot_identifier (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] module.aurora-db-green.var.snapshot_identifier (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.snapshot_identifier (expand)" -> "[root] var.rds_snapshot"
+ "[root] module.aurora-db-green.var.source_region (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.storage_encrypted (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.storage_type (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.subnets (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.subnets (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.aurora-db-green.var.tags (expand)" -> "[root] local.default_tags (expand)"
+ "[root] module.aurora-db-green.var.tags (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.tags (expand)" -> "[root] var.stack_name"
+ "[root] module.aurora-db-green.var.vpc_id (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.aurora-db-green.var.vpc_security_group_ids (expand)" -> "[root] aws_security_group.aurora-db-sg (expand)"
+ "[root] module.aurora-db-green.var.vpc_security_group_ids (expand)" -> "[root] module.aurora-db-green (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_certificate.https_listener (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.http_tcp_listener_arns (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.http_tcp_listener_ids (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.https_listener_arns (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.https_listener_ids (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.lb_arn (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.lb_arn_suffix (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.lb_dns_name (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.lb_id (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.lb_zone_id (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.target_group_arn_suffixes (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.target_group_arns (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.target_group_attachments (expand)"
+ "[root] module.iriusrisk_alb (close)" -> "[root] module.iriusrisk_alb.output.target_group_names (expand)"
+ "[root] module.iriusrisk_alb.aws_lambda_permission.lb (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.aws_lambda_permission.lb (expand)" -> "[root] module.iriusrisk_alb.local.target_group_attachments_lambda (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.local.create_lb (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.access_logs (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.desync_mitigation_mode (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.drop_invalid_header_fields (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.enable_cross_zone_load_balancing (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.enable_deletion_protection (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.enable_http2 (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.enable_waf_fail_open (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.idle_timeout (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.internal (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.ip_address_type (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.lb_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.load_balancer_create_timeout (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.load_balancer_delete_timeout (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.load_balancer_type (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.load_balancer_update_timeout (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.name (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.name_prefix (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.security_groups (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.subnet_mapping (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.subnets (expand)"
+ "[root] module.iriusrisk_alb.aws_lb.this (expand)" -> "[root] module.iriusrisk_alb.var.tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)" -> "[root] module.iriusrisk_alb.var.http_tcp_listeners (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)" -> "[root] module.iriusrisk_alb.var.http_tcp_listeners_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" -> "[root] module.iriusrisk_alb.var.https_listeners (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" -> "[root] module.iriusrisk_alb.var.https_listeners_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)" -> "[root] module.iriusrisk_alb.var.listener_ssl_policy_default (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_certificate.https_listener (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_certificate.https_listener (expand)" -> "[root] module.iriusrisk_alb.var.extra_ssl_certs (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)" -> "[root] module.iriusrisk_alb.var.http_tcp_listener_rules (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)" -> "[root] module.iriusrisk_alb.var.http_tcp_listener_rules_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)" -> "[root] module.iriusrisk_alb.var.https_listener_rules (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)" -> "[root] module.iriusrisk_alb.var.https_listener_rules_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" -> "[root] module.iriusrisk_alb.local.create_lb (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" -> "[root] module.iriusrisk_alb.var.tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" -> "[root] module.iriusrisk_alb.var.target_group_tags (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" -> "[root] module.iriusrisk_alb.var.target_groups (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)" -> "[root] module.iriusrisk_alb.var.vpc_id (expand)"
+ "[root] module.iriusrisk_alb.aws_lb_target_group_attachment.this (expand)" -> "[root] module.iriusrisk_alb.aws_lambda_permission.lb (expand)"
+ "[root] module.iriusrisk_alb.local.create_lb (expand)" -> "[root] module.iriusrisk_alb.var.create_lb (expand)"
+ "[root] module.iriusrisk_alb.local.create_lb (expand)" -> "[root] module.iriusrisk_alb.var.putin_khuylo (expand)"
+ "[root] module.iriusrisk_alb.local.target_group_attachments (expand)" -> "[root] module.iriusrisk_alb.var.target_groups (expand)"
+ "[root] module.iriusrisk_alb.local.target_group_attachments_lambda (expand)" -> "[root] module.iriusrisk_alb.local.target_group_attachments (expand)"
+ "[root] module.iriusrisk_alb.output.http_tcp_listener_arns (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)"
+ "[root] module.iriusrisk_alb.output.http_tcp_listener_ids (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp (expand)"
+ "[root] module.iriusrisk_alb.output.https_listener_arns (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)"
+ "[root] module.iriusrisk_alb.output.https_listener_ids (expand)" -> "[root] module.iriusrisk_alb.aws_lb_listener.frontend_https (expand)"
+ "[root] module.iriusrisk_alb.output.lb_arn (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.output.lb_arn_suffix (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.output.lb_dns_name (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.output.lb_id (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.output.lb_zone_id (expand)" -> "[root] module.iriusrisk_alb.aws_lb.this (expand)"
+ "[root] module.iriusrisk_alb.output.target_group_arn_suffixes (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.output.target_group_arns (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.output.target_group_attachments (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group_attachment.this (expand)"
+ "[root] module.iriusrisk_alb.output.target_group_names (expand)" -> "[root] module.iriusrisk_alb.aws_lb_target_group.main (expand)"
+ "[root] module.iriusrisk_alb.var.access_logs (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.create_lb (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.desync_mitigation_mode (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.drop_invalid_header_fields (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.enable_cross_zone_load_balancing (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.enable_deletion_protection (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.enable_http2 (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.enable_waf_fail_open (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.extra_ssl_certs (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.http_tcp_listener_rules (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.http_tcp_listener_rules_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.http_tcp_listeners (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.http_tcp_listeners_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.https_listener_rules (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.https_listener_rules_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.https_listeners (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.https_listeners (expand)" -> "[root] var.certificate_arn"
+ "[root] module.iriusrisk_alb.var.https_listeners_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.idle_timeout (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.internal (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.ip_address_type (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.lb_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.listener_ssl_policy_default (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.load_balancer_create_timeout (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.load_balancer_delete_timeout (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.load_balancer_type (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.load_balancer_update_timeout (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.name (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.name (expand)" -> "[root] var.stack_name"
+ "[root] module.iriusrisk_alb.var.name_prefix (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.putin_khuylo (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.security_groups (expand)" -> "[root] aws_security_group.alb (expand)"
+ "[root] module.iriusrisk_alb.var.security_groups (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.subnet_mapping (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.subnets (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.subnets (expand)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] module.iriusrisk_alb.var.tags (expand)" -> "[root] local.default_tags (expand)"
+ "[root] module.iriusrisk_alb.var.tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.tags (expand)" -> "[root] var.stack_name"
+ "[root] module.iriusrisk_alb.var.target_group_tags (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.target_groups (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.target_groups (expand)" -> "[root] var.stack_name"
+ "[root] module.iriusrisk_alb.var.vpc_id (expand)" -> "[root] module.iriusrisk_alb (expand)"
+ "[root] module.iriusrisk_alb.var.vpc_id (expand)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] module.synthetic_monitor (close)" -> "[root] module.synthetic_monitor.output.alert_condition_name (expand)"
+ "[root] module.synthetic_monitor (close)" -> "[root] module.synthetic_monitor.output.policy_name (expand)"
+ "[root] module.synthetic_monitor (close)" -> "[root] module.synthetic_monitor.output.synthetic_monitor_frequency (expand)"
+ "[root] module.synthetic_monitor (close)" -> "[root] module.synthetic_monitor.output.synthetic_monitor_name (expand)"
+ "[root] module.synthetic_monitor (close)" -> "[root] module.synthetic_monitor.output.synthetic_monitor_uri (expand)"
+ "[root] module.synthetic_monitor (expand)" -> "[root] var.create_synthetic_monitor"
+ "[root] module.synthetic_monitor.data.newrelic_alert_policy.policy (expand)" -> "[root] module.synthetic_monitor.var.policy_name (expand)"
+ "[root] module.synthetic_monitor.data.newrelic_alert_policy.policy (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] module.synthetic_monitor.local.health_endpoint (expand)" -> "[root] module.synthetic_monitor.var.dns_name (expand)"
+ "[root] module.synthetic_monitor.local.health_endpoint (expand)" -> "[root] module.synthetic_monitor.var.health_endpoint (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_alert_condition.condition (expand)" -> "[root] module.synthetic_monitor.data.newrelic_alert_policy.policy (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_alert_condition.condition (expand)" -> "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)" -> "[root] module.synthetic_monitor.local.health_endpoint (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)" -> "[root] module.synthetic_monitor.var.aws_region (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)" -> "[root] module.synthetic_monitor.var.frequency (expand)"
+ "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] module.synthetic_monitor.output.alert_condition_name (expand)" -> "[root] module.synthetic_monitor.newrelic_synthetics_alert_condition.condition (expand)"
+ "[root] module.synthetic_monitor.output.policy_name (expand)" -> "[root] module.synthetic_monitor.data.newrelic_alert_policy.policy (expand)"
+ "[root] module.synthetic_monitor.output.synthetic_monitor_frequency (expand)" -> "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)"
+ "[root] module.synthetic_monitor.output.synthetic_monitor_name (expand)" -> "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)"
+ "[root] module.synthetic_monitor.output.synthetic_monitor_uri (expand)" -> "[root] module.synthetic_monitor.newrelic_synthetics_monitor.monitor (expand)"
+ "[root] module.synthetic_monitor.var.aws_region (expand)" -> "[root] module.synthetic_monitor (expand)"
+ "[root] module.synthetic_monitor.var.aws_region (expand)" -> "[root] var.aws_region"
+ "[root] module.synthetic_monitor.var.dns_name (expand)" -> "[root] local.web_endpoint (expand)"
+ "[root] module.synthetic_monitor.var.dns_name (expand)" -> "[root] module.synthetic_monitor (expand)"
+ "[root] module.synthetic_monitor.var.frequency (expand)" -> "[root] module.synthetic_monitor (expand)"
+ "[root] module.synthetic_monitor.var.health_endpoint (expand)" -> "[root] module.synthetic_monitor (expand)"
+ "[root] module.synthetic_monitor.var.policy_name (expand)" -> "[root] module.synthetic_monitor (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_network_acl.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_route_table.default (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_default_security_group.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_route_table_association.outpost (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.azs (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.cgw_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.cgw_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_internet_gateway_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_ipv6_egress_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_nat_gateway_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnet_group_name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.database_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_security_group_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_default_security_group_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_enable_dns_support (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_instance_tenancy (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.default_vpc_main_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.dhcp_options_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.egress_only_internet_gateway_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnet_group_name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.elasticache_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.igw_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.igw_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.intra_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.name (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.nat_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.nat_public_ips (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.natgw_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.outpost_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_ipv6_egress_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_nat_gateway_route_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.private_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_internet_gateway_ipv6_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_internet_gateway_route_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.public_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_network_acl_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_network_acl_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_public_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_route_table_association_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_route_table_ids (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnet_arns (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnet_group (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.redshift_subnets_ipv6_cidr_blocks (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.this_customer_gateway (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vgw_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vgw_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_enable_dns_support (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_cloudwatch_iam_role_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_destination_arn (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_destination_type (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_flow_log_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_instance_tenancy (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_ipv6_association_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_ipv6_cidr_block (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_main_route_table_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_owner_id (expand)"
+ "[root] module.vpc (close)" -> "[root] module.vpc.output.vpc_secondary_cidr_blocks (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_kms_key_id (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_prefix (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_log_group_retention_in_days (expand)"
+ "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.customer_gateway_tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.customer_gateways (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_customer_gateway.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.create_database_subnet_group (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.database_subnet_group_name (expand)"
+ "[root] module.vpc.aws_db_subnet_group.database (expand)" -> "[root] module.vpc.var.database_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_egress (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_ingress (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_name (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.default_network_acl_tags (expand)"
+ "[root] module.vpc.aws_default_network_acl.this (expand)" -> "[root] module.vpc.var.manage_default_network_acl (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_name (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_propagating_vgws (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_routes (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.default_route_table_tags (expand)"
+ "[root] module.vpc.aws_default_route_table.default (expand)" -> "[root] module.vpc.var.manage_default_route_table (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_egress (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_ingress (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_name (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.default_security_group_tags (expand)"
+ "[root] module.vpc.aws_default_security_group.this (expand)" -> "[root] module.vpc.var.manage_default_security_group (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_enable_classiclink (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_enable_dns_hostnames (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_enable_dns_support (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_name (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.default_vpc_tags (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.manage_default_vpc (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_default_vpc.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.local.max_subnet_length (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.var.create_egress_only_igw (expand)"
+ "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)" -> "[root] module.vpc.var.igw_tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.local.nat_gateway_count (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.enable_nat_gateway (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.nat_eip_tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.reuse_nat_ips (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_eip.nat (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.create_elasticache_subnet_group (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_group_name (expand)"
+ "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.local.flow_log_destination_arn (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.local.flow_log_iam_role_arn (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_file_format (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_hive_compatible_partitions (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_log_format (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_max_aggregation_interval (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_per_hour_partition (expand)"
+ "[root] module.vpc.aws_flow_log.this (expand)" -> "[root] module.vpc.var.flow_log_traffic_type (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_permissions_boundary (expand)"
+ "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.var.vpc_flow_log_tags (expand)"
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.aws_iam_policy.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.create_igw (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.igw_tags (expand)"
+ "[root] module.vpc.aws_internet_gateway.this (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.local.nat_gateway_ips (expand)"
+ "[root] module.vpc.aws_nat_gateway.this (expand)" -> "[root] module.vpc.var.nat_gateway_tags (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.var.database_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.database (expand)" -> "[root] module.vpc.var.database_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.var.elasticache_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.elasticache (expand)" -> "[root] module.vpc.var.elasticache_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.var.intra_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.intra (expand)" -> "[root] module.vpc.var.intra_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.var.outpost_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.outpost (expand)" -> "[root] module.vpc.var.outpost_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.var.private_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.private (expand)" -> "[root] module.vpc.var.private_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.var.public_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.public (expand)" -> "[root] module.vpc.var.public_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.var.redshift_acl_tags (expand)"
+ "[root] module.vpc.aws_network_acl.redshift (expand)" -> "[root] module.vpc.var.redshift_dedicated_network_acl (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)" -> "[root] module.vpc.var.database_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)" -> "[root] module.vpc.var.database_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)" -> "[root] module.vpc.var.elasticache_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)" -> "[root] module.vpc.var.elasticache_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)" -> "[root] module.vpc.var.intra_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)" -> "[root] module.vpc.var.intra_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)" -> "[root] module.vpc.var.outpost_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)" -> "[root] module.vpc.var.outpost_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)" -> "[root] module.vpc.var.private_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)" -> "[root] module.vpc.var.private_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)" -> "[root] module.vpc.var.public_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)" -> "[root] module.vpc.var.public_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)" -> "[root] module.vpc.var.redshift_inbound_acl_rules (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)" -> "[root] module.vpc.var.redshift_outbound_acl_rules (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.create_redshift_subnet_group (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_group_name (expand)"
+ "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_group_tags (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_internet_gateway (expand)" -> "[root] module.vpc.var.create_database_nat_gateway_route (expand)"
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_ipv6_egress (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route.database_nat_gateway (expand)" -> "[root] module.vpc.var.create_database_nat_gateway_route (expand)"
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.private_ipv6_egress (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route.private_nat_gateway (expand)" -> "[root] module.vpc.var.nat_gateway_destination_cidr_block (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.create_database_internet_gateway_route (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.create_database_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.aws_route_table.database (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.create_elasticache_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.intra (expand)" -> "[root] module.vpc.var.intra_subnets (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.local.nat_gateway_count (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.var.private_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.private (expand)" -> "[root] module.vpc.var.private_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.public (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.create_redshift_subnet_route_table (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_route_table_tags (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_suffix (expand)"
+ "[root] module.vpc.aws_route_table.redshift (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.database (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_route_table.elasticache (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.elasticache (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.aws_route_table_association.intra (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.aws_route_table_association.intra (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.outpost (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.aws_route_table_association.private (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.private (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.aws_route_table_association.public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table_association.public (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.aws_route_table_association.redshift_public (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.database (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.elasticache (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.intra (expand)" -> "[root] module.vpc.var.intra_subnets (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_arn (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_az (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.outpost (expand)" -> "[root] module.vpc.var.outpost_subnets (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.private (expand)" -> "[root] module.vpc.var.private_subnets (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.map_public_ip_on_launch (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.one_nat_gateway_per_az (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.public (expand)" -> "[root] module.vpc.var.public_subnets (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_assign_ipv6_address_on_creation (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_ipv6_prefixes (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_suffix (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnet_tags (expand)"
+ "[root] module.vpc.aws_subnet.redshift (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.cidr (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_classiclink (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_classiclink_dns_support (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_dns_hostnames (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_dns_support (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.enable_ipv6 (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.instance_tenancy (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] module.vpc.var.vpc_tags (expand)"
+ "[root] module.vpc.aws_vpc.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.local.create_vpc (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_domain_name (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_domain_name_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_netbios_name_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_netbios_node_type (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_ntp_servers (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.dhcp_options_tags (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.enable_dhcp_options (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] module.vpc.var.tags (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options.this (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" -> "[root] module.vpc.aws_vpc_dhcp_options.this (expand)"
+ "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)" -> "[root] module.vpc.var.secondary_cidr_blocks (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.amazon_side_asn (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.enable_vpn_gateway (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.vpn_gateway_az (expand)"
+ "[root] module.vpc.aws_vpn_gateway.this (expand)" -> "[root] module.vpc.var.vpn_gateway_tags (expand)"
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" -> "[root] module.vpc.local.vpc_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)" -> "[root] module.vpc.var.vpn_gateway_id (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)" -> "[root] module.vpc.var.propagate_intra_route_tables_vgw (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)" -> "[root] module.vpc.var.propagate_private_route_tables_vgw (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)" -> "[root] module.vpc.var.propagate_public_route_tables_vgw (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.flow_log_cloudwatch_assume_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" -> "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.data.aws_iam_policy_document.vpc_flow_log_cloudwatch (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.local.enable_flow_log (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.var.create_flow_log_cloudwatch_iam_role (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.local.enable_flow_log (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.var.create_flow_log_cloudwatch_log_group (expand)"
+ "[root] module.vpc.local.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.local.create_vpc (expand)" -> "[root] module.vpc.var.create_vpc (expand)"
+ "[root] module.vpc.local.create_vpc (expand)" -> "[root] module.vpc.var.putin_khuylo (expand)"
+ "[root] module.vpc.local.enable_flow_log (expand)" -> "[root] module.vpc.var.create_vpc (expand)"
+ "[root] module.vpc.local.enable_flow_log (expand)" -> "[root] module.vpc.var.enable_flow_log (expand)"
+ "[root] module.vpc.local.flow_log_destination_arn (expand)" -> "[root] module.vpc.aws_cloudwatch_log_group.flow_log (expand)"
+ "[root] module.vpc.local.flow_log_destination_arn (expand)" -> "[root] module.vpc.var.flow_log_destination_arn (expand)"
+ "[root] module.vpc.local.flow_log_iam_role_arn (expand)" -> "[root] module.vpc.aws_iam_role.vpc_flow_log_cloudwatch (expand)"
+ "[root] module.vpc.local.flow_log_iam_role_arn (expand)" -> "[root] module.vpc.var.flow_log_cloudwatch_iam_role_arn (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.database_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.elasticache_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.private_subnets (expand)"
+ "[root] module.vpc.local.max_subnet_length (expand)" -> "[root] module.vpc.var.redshift_subnets (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.local.max_subnet_length (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.one_nat_gateway_per_az (expand)"
+ "[root] module.vpc.local.nat_gateway_count (expand)" -> "[root] module.vpc.var.single_nat_gateway (expand)"
+ "[root] module.vpc.local.nat_gateway_ips (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.local.nat_gateway_ips (expand)" -> "[root] module.vpc.var.external_nat_ip_ids (expand)"
+ "[root] module.vpc.local.vpc_id (expand)" -> "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)"
+ "[root] module.vpc.output.azs (expand)" -> "[root] module.vpc.var.azs (expand)"
+ "[root] module.vpc.output.cgw_arns (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.cgw_ids (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.database_internet_gateway_route_id (expand)" -> "[root] module.vpc.aws_route.database_internet_gateway (expand)"
+ "[root] module.vpc.output.database_ipv6_egress_route_id (expand)" -> "[root] module.vpc.aws_route.database_ipv6_egress (expand)"
+ "[root] module.vpc.output.database_nat_gateway_route_ids (expand)" -> "[root] module.vpc.aws_route.database_nat_gateway (expand)"
+ "[root] module.vpc.output.database_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.output.database_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.database (expand)"
+ "[root] module.vpc.output.database_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.database (expand)"
+ "[root] module.vpc.output.database_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.database (expand)"
+ "[root] module.vpc.output.database_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.database_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnet_group (expand)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] module.vpc.output.database_subnet_group_name (expand)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] module.vpc.output.database_subnets (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.database_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.database (expand)"
+ "[root] module.vpc.output.default_network_acl_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_route_table_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_security_group_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_arn (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_cidr_block (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_network_acl_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_route_table_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_default_security_group_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_enable_dns_support (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_instance_tenancy (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.default_vpc_main_route_table_id (expand)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] module.vpc.output.dhcp_options_id (expand)" -> "[root] module.vpc.aws_vpc_dhcp_options.this (expand)"
+ "[root] module.vpc.output.egress_only_internet_gateway_id (expand)" -> "[root] module.vpc.aws_egress_only_internet_gateway.this (expand)"
+ "[root] module.vpc.output.elasticache_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.elasticache_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnet_group (expand)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnet_group_name (expand)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.elasticache_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.elasticache (expand)"
+ "[root] module.vpc.output.igw_arn (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.output.igw_id (expand)" -> "[root] module.vpc.aws_internet_gateway.this (expand)"
+ "[root] module.vpc.output.intra_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.output.intra_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.intra (expand)"
+ "[root] module.vpc.output.intra_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.intra (expand)"
+ "[root] module.vpc.output.intra_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.intra (expand)"
+ "[root] module.vpc.output.intra_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.intra_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.intra (expand)"
+ "[root] module.vpc.output.name (expand)" -> "[root] module.vpc.var.name (expand)"
+ "[root] module.vpc.output.nat_ids (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.output.nat_public_ips (expand)" -> "[root] module.vpc.aws_eip.nat (expand)"
+ "[root] module.vpc.output.nat_public_ips (expand)" -> "[root] module.vpc.var.external_nat_ips (expand)"
+ "[root] module.vpc.output.natgw_ids (expand)" -> "[root] module.vpc.aws_nat_gateway.this (expand)"
+ "[root] module.vpc.output.outpost_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.output.outpost_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.outpost_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.outpost (expand)"
+ "[root] module.vpc.output.private_ipv6_egress_route_ids (expand)" -> "[root] module.vpc.aws_route.private_ipv6_egress (expand)"
+ "[root] module.vpc.output.private_nat_gateway_route_ids (expand)" -> "[root] module.vpc.aws_route.private_nat_gateway (expand)"
+ "[root] module.vpc.output.private_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.output.private_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.private (expand)"
+ "[root] module.vpc.output.private_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.private (expand)"
+ "[root] module.vpc.output.private_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.private_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.private_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.private (expand)"
+ "[root] module.vpc.output.public_internet_gateway_ipv6_route_id (expand)" -> "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)"
+ "[root] module.vpc.output.public_internet_gateway_route_id (expand)" -> "[root] module.vpc.aws_route.public_internet_gateway (expand)"
+ "[root] module.vpc.output.public_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.output.public_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.public (expand)"
+ "[root] module.vpc.output.public_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.public (expand)"
+ "[root] module.vpc.output.public_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.output.public_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.public_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.public (expand)"
+ "[root] module.vpc.output.redshift_network_acl_arn (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.output.redshift_network_acl_id (expand)" -> "[root] module.vpc.aws_network_acl.redshift (expand)"
+ "[root] module.vpc.output.redshift_public_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.redshift_public (expand)"
+ "[root] module.vpc.output.redshift_route_table_association_ids (expand)" -> "[root] module.vpc.aws_route_table_association.redshift (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.private (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.public (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.aws_route_table.redshift (expand)"
+ "[root] module.vpc.output.redshift_route_table_ids (expand)" -> "[root] module.vpc.var.enable_public_redshift (expand)"
+ "[root] module.vpc.output.redshift_subnet_arns (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnet_group (expand)" -> "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.redshift_subnets_ipv6_cidr_blocks (expand)" -> "[root] module.vpc.aws_subnet.redshift (expand)"
+ "[root] module.vpc.output.this_customer_gateway (expand)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_arn (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_id (expand)" -> "[root] module.vpc.aws_vpn_gateway.this (expand)"
+ "[root] module.vpc.output.vgw_id (expand)" -> "[root] module.vpc.aws_vpn_gateway_attachment.this (expand)"
+ "[root] module.vpc.output.vpc_arn (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_cidr_block (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_enable_dns_support (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_flow_log_cloudwatch_iam_role_arn (expand)" -> "[root] module.vpc.local.flow_log_iam_role_arn (expand)"
+ "[root] module.vpc.output.vpc_flow_log_destination_arn (expand)" -> "[root] module.vpc.local.flow_log_destination_arn (expand)"
+ "[root] module.vpc.output.vpc_flow_log_destination_type (expand)" -> "[root] module.vpc.var.flow_log_destination_type (expand)"
+ "[root] module.vpc.output.vpc_flow_log_id (expand)" -> "[root] module.vpc.aws_flow_log.this (expand)"
+ "[root] module.vpc.output.vpc_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_instance_tenancy (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_ipv6_association_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_ipv6_cidr_block (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_main_route_table_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_owner_id (expand)" -> "[root] module.vpc.aws_vpc.this (expand)"
+ "[root] module.vpc.output.vpc_secondary_cidr_blocks (expand)" -> "[root] module.vpc.aws_vpc_ipv4_cidr_block_association.this (expand)"
+ "[root] module.vpc.var.amazon_side_asn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.azs (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.azs (expand)" -> "[root] var.availability_zones"
+ "[root] module.vpc.var.cidr (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.cidr (expand)" -> "[root] var.vpc_cidr"
+ "[root] module.vpc.var.create_database_internet_gateway_route (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_nat_gateway_route (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_database_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_egress_only_igw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_elasticache_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_elasticache_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_flow_log_cloudwatch_iam_role (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_flow_log_cloudwatch_log_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_igw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_redshift_subnet_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_redshift_subnet_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.create_vpc (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.customer_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.customer_gateways (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.database_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_egress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_ingress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_network_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_propagating_vgws (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_routes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_egress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_ingress (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_security_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_classiclink (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_dns_hostnames (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_enable_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.default_vpc_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_domain_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_domain_name_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_netbios_name_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_netbios_node_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_ntp_servers (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.dhcp_options_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.elasticache_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_classiclink (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_classiclink_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dhcp_options (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dns_hostnames (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_dns_support (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_flow_log (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_ipv6 (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_nat_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_public_redshift (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.enable_vpn_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.external_nat_ip_ids (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.external_nat_ips (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_iam_role_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_kms_key_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_name_prefix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_cloudwatch_log_group_retention_in_days (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_destination_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_destination_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_file_format (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_hive_compatible_partitions (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_log_format (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_max_aggregation_interval (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_per_hour_partition (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.flow_log_traffic_type (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.igw_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.instance_tenancy (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.intra_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_route_table (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_security_group (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.manage_default_vpc (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.map_public_ip_on_launch (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.name (expand)" -> "[root] var.stack_name"
+ "[root] module.vpc.var.nat_eip_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.nat_gateway_destination_cidr_block (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.nat_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.one_nat_gateway_per_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_arn (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.outpost_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.private_subnets (expand)" -> "[root] var.private_subnet_cidrs"
+ "[root] module.vpc.var.propagate_intra_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.propagate_private_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.propagate_public_route_tables_vgw (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.public_subnets (expand)" -> "[root] var.public_subnet_cidrs"
+ "[root] module.vpc.var.putin_khuylo (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_acl_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_dedicated_network_acl (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_inbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_outbound_acl_rules (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_route_table_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_assign_ipv6_address_on_creation (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_group_name (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_group_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_ipv6_prefixes (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_suffix (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnet_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.redshift_subnets (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.reuse_nat_ips (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.secondary_cidr_blocks (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.single_nat_gateway (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.tags (expand)" -> "[root] local.default_tags (expand)"
+ "[root] module.vpc.var.tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_flow_log_permissions_boundary (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_flow_log_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpc_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_az (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_id (expand)" -> "[root] module.vpc (expand)"
+ "[root] module.vpc.var.vpn_gateway_tags (expand)" -> "[root] module.vpc (expand)"
+ "[root] newrelic_alert_channel.slack (expand)" -> "[root] local.newrelic_notification_channel (expand)"
+ "[root] newrelic_alert_channel.slack (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] newrelic_alert_channel.slack (expand)" -> "[root] var.newrelic_enabled"
+ "[root] newrelic_alert_channel.slack (expand)" -> "[root] var.slack_channel"
+ "[root] newrelic_alert_channel.slack (expand)" -> "[root] var.slack_webhook_url"
+ "[root] newrelic_alert_policy.policy (expand)" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]"
+ "[root] newrelic_alert_policy.policy (expand)" -> "[root] var.cloudflare_dns_name"
+ "[root] newrelic_alert_policy.policy (expand)" -> "[root] var.newrelic_enabled"
+ "[root] newrelic_alert_policy_channel.channel_subscribe_api (expand)" -> "[root] newrelic_alert_channel.slack (expand)"
+ "[root] newrelic_alert_policy_channel.channel_subscribe_api (expand)" -> "[root] newrelic_alert_policy.policy (expand)"
+ "[root] newrelic_alert_policy_channel.channel_subscribe_web (expand)" -> "[root] newrelic_alert_channel.slack (expand)"
+ "[root] newrelic_alert_policy_channel.channel_subscribe_web (expand)" -> "[root] newrelic_alert_policy.policy (expand)"
+ "[root] newrelic_nrql_alert_condition.rds-DBConnection-alert (expand)" -> "[root] module.aurora-db-blue.output.cluster_instances (expand)"
+ "[root] newrelic_nrql_alert_condition.rds-DBConnection-alert (expand)" -> "[root] module.aurora-db-green.output.cluster_instances (expand)"
+ "[root] newrelic_nrql_alert_condition.rds-DBConnection-alert (expand)" -> "[root] newrelic_alert_policy.policy (expand)"
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-api (expand)" -> "[root] data.newrelic_entity.api_monitor (expand)"
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-api (expand)" -> "[root] newrelic_alert_policy.policy (expand)"
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-web (expand)" -> "[root] data.newrelic_entity.web_monitor (expand)"
+ "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-web (expand)" -> "[root] newrelic_alert_policy.policy (expand)"
+ "[root] output.analytics_build (expand)" -> "[root] var.analytics_build"
+ "[root] output.asg_api_id (expand)" -> "[root] aws_autoscaling_group.iriusrisk_api (expand)"
+ "[root] output.asg_web_id (expand)" -> "[root] aws_autoscaling_group.iriusrisk_web (expand)"
+ "[root] output.aurora_db_sg_id (expand)" -> "[root] aws_security_group.aurora-db-sg (expand)"
+ "[root] output.aws_ami_id (expand)" -> "[root] data.aws_ami.iriusrisk (expand)"
+ "[root] output.deployment_flag (expand)" -> "[root] local.local_deployment_flag (expand)"
+ "[root] output.iriusrisk_lb_sg_id (expand)" -> "[root] aws_security_group.alb (expand)"
+ "[root] output.iriusrisk_version (expand)" -> "[root] var.iriusrisk_version"
+ "[root] output.lb_arn (expand)" -> "[root] module.iriusrisk_alb.output.lb_arn (expand)"
+ "[root] output.lb_dns_name (expand)" -> "[root] module.iriusrisk_alb.output.lb_dns_name (expand)"
+ "[root] output.lb_https_listeners_arn (expand)" -> "[root] module.iriusrisk_alb.output.https_listener_arns (expand)"
+ "[root] output.log_group (expand)" -> "[root] aws_cloudwatch_log_group.cw_log_group (expand)"
+ "[root] output.private_subnets (expand)" -> "[root] module.vpc.output.private_subnets (expand)"
+ "[root] output.public_subnets (expand)" -> "[root] module.vpc.output.public_subnets (expand)"
+ "[root] output.rds_arn (expand)" -> "[root] module.aurora-db-blue.output.cluster_arn (expand)"
+ "[root] output.rds_arn (expand)" -> "[root] module.aurora-db-green.output.cluster_arn (expand)"
+ "[root] output.rds_endpoint (expand)" -> "[root] module.aurora-db-blue.output.cluster_endpoint (expand)"
+ "[root] output.rds_endpoint (expand)" -> "[root] module.aurora-db-green.output.cluster_endpoint (expand)"
+ "[root] output.rds_identifier (expand)" -> "[root] module.aurora-db-blue.output.cluster_id (expand)"
+ "[root] output.rds_identifier (expand)" -> "[root] module.aurora-db-green.output.cluster_id (expand)"
+ "[root] output.startleft_version (expand)" -> "[root] var.startleft_version"
+ "[root] output.vpc_id (expand)" -> "[root] module.vpc.output.vpc_id (expand)"
+ "[root] output.web_endpoint (expand)" -> "[root] local.web_endpoint (expand)"
+ "[root] provider[\"registry.terraform.io/cloudflare/cloudflare\"] (close)" -> "[root] cloudflare_record.dns_cname (expand)"
+ "[root] provider[\"registry.terraform.io/cloudflare/cloudflare\"]" -> "[root] var.cloudflare_token"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600 (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy_attachment.existing-policies-attachment (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy_attachment.secret-access-attachment (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_secretsmanager_secret_version.secret-value (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.analytics.aws_eip.ec2 (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.analytics.aws_lb_listener_rule.static (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.analytics.aws_lb_target_group_attachment.tg_attachment (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.analytics.aws_rds_cluster_instance.aurora-rds-instance (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.analytics.aws_security_group_rule.ingress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_appautoscaling_policy.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_rds_cluster_endpoint.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_rds_cluster_role_association.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.cidr_ingress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.default_ingress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-blue.aws_security_group_rule.egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_appautoscaling_policy.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_iam_role_policy_attachment.rds_enhanced_monitoring (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_rds_cluster_endpoint.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_rds_cluster_role_association.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.cidr_ingress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.default_ingress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.aurora-db-green.aws_security_group_rule.egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_certificate.https_listener (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_rule.http_tcp_listener_rule (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.iriusrisk_alb.aws_lb_target_group_attachment.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_customer_gateway.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_db_subnet_group.database (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_network_acl.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_route_table.default (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_security_group.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_default_vpc.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_elasticache_subnet_group.elasticache (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_flow_log.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.database_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.database_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.elasticache_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.intra_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.outpost_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.private_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.private_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.public_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.public_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_inbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_network_acl_rule.redshift_outbound (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_redshift_subnet_group.redshift (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_internet_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_ipv6_egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.database_nat_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.private_ipv6_egress (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.private_nat_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.public_internet_gateway (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route.public_internet_gateway_ipv6 (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.database (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.elasticache (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.intra (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.outpost (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.private (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.redshift (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_route_table_association.redshift_public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpc_dhcp_options_association.this (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.intra (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.private (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] module.vpc.aws_vpn_gateway_route_propagation.public (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" -> "[root] var.aws_profile"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" -> "[root] var.aws_region"
+ "[root] provider[\"registry.terraform.io/hashicorp/random\"] (close)" -> "[root] module.aurora-db-blue.random_id.snapshot_identifier (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/random\"] (close)" -> "[root] module.aurora-db-blue.random_password.master_password (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/random\"] (close)" -> "[root] module.aurora-db-green.random_id.snapshot_identifier (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/random\"] (close)" -> "[root] module.aurora-db-green.random_password.master_password (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/template\"] (close)" -> "[root] data.template_file.iriusrisk (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/template\"] (close)" -> "[root] module.analytics.data.template_file.user_data (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/time\"] (close)" -> "[root] time_sleep.wait_120_seconds (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/time\"] (close)" -> "[root] time_sleep.wait_180_seconds (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/tls\"] (close)" -> "[root] tls_private_key.ec_private (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] module.synthetic_monitor.newrelic_synthetics_alert_condition.condition (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] newrelic_alert_policy_channel.channel_subscribe_api (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] newrelic_alert_policy_channel.channel_subscribe_web (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] newrelic_nrql_alert_condition.rds-DBConnection-alert (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-api (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)" -> "[root] newrelic_nrql_alert_condition.tg-health-nrql-condition-web (expand)"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]" -> "[root] var.newrelic_account_id"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]" -> "[root] var.newrelic_api_key"
+ "[root] provider[\"registry.terraform.io/newrelic/newrelic\"]" -> "[root] var.newrelic_region"
+ "[root] root" -> "[root] module.analytics (close)"
+ "[root] root" -> "[root] module.aurora-db-blue (close)"
+ "[root] root" -> "[root] module.aurora-db-green (close)"
+ "[root] root" -> "[root] module.iriusrisk_alb (close)"
+ "[root] root" -> "[root] module.synthetic_monitor (close)"
+ "[root] root" -> "[root] module.vpc (close)"
+ "[root] root" -> "[root] output.analytics_build (expand)"
+ "[root] root" -> "[root] output.asg_api_id (expand)"
+ "[root] root" -> "[root] output.asg_web_id (expand)"
+ "[root] root" -> "[root] output.aurora_db_sg_id (expand)"
+ "[root] root" -> "[root] output.aws_ami_id (expand)"
+ "[root] root" -> "[root] output.deployment_flag (expand)"
+ "[root] root" -> "[root] output.iriusrisk_lb_sg_id (expand)"
+ "[root] root" -> "[root] output.iriusrisk_version (expand)"
+ "[root] root" -> "[root] output.lb_arn (expand)"
+ "[root] root" -> "[root] output.lb_dns_name (expand)"
+ "[root] root" -> "[root] output.lb_https_listeners_arn (expand)"
+ "[root] root" -> "[root] output.log_group (expand)"
+ "[root] root" -> "[root] output.private_subnets (expand)"
+ "[root] root" -> "[root] output.public_subnets (expand)"
+ "[root] root" -> "[root] output.rds_arn (expand)"
+ "[root] root" -> "[root] output.rds_endpoint (expand)"
+ "[root] root" -> "[root] output.rds_identifier (expand)"
+ "[root] root" -> "[root] output.startleft_version (expand)"
+ "[root] root" -> "[root] output.vpc_id (expand)"
+ "[root] root" -> "[root] output.web_endpoint (expand)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/cloudflare/cloudflare\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/random\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/template\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/time\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/tls\"] (close)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/newrelic/newrelic\"] (close)"
+ "[root] root" -> "[root] var.database_subnet_cidrs"
+ "[root] root" -> "[root] var.iam_instance_profile_arn"
+ "[root] root" -> "[root] var.major_engine_version"
+ "[root] root" -> "[root] var.rds_family"
+ "[root] time_sleep.wait_120_seconds (expand)" -> "[root] aws_autoscaling_group.iriusrisk_web (expand)"
+ "[root] time_sleep.wait_120_seconds (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/time\"]"
+ "[root] time_sleep.wait_120_seconds (expand)" -> "[root] var.newrelic_enabled"
+ "[root] time_sleep.wait_180_seconds (expand)" -> "[root] aws_autoscaling_group.iriusrisk_web (expand)"
+ "[root] time_sleep.wait_180_seconds (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/time\"]"
+ "[root] tls_private_key.ec_private (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/tls\"]"
+ }
+}
+
diff --git a/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan.json b/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan.json
new file mode 100644
index 00000000..e204cc4c
--- /dev/null
+++ b/slp_tfplan/tests/resources/tfplan/ha-base-terraform-plan.json
@@ -0,0 +1,20386 @@
+{
+ "format_version": "1.1",
+ "terraform_version": "1.3.1",
+ "variables": {
+ "analytics_build": {
+ "value": ""
+ },
+ "analytics_enabled": {
+ "value": false
+ },
+ "api_desired_capacity": {
+ "value": 3
+ },
+ "api_max_size": {
+ "value": 5
+ },
+ "api_min_size": {
+ "value": 3
+ },
+ "availability_zones": {
+ "value": [
+ "eu-west-1a",
+ "eu-west-1b",
+ "eu-west-1c"
+ ]
+ },
+ "aws_profile": {
+ "value": "iriusrisk"
+ },
+ "aws_region": {
+ "value": "eu-west-1"
+ },
+ "bastion_host_cidrs": {
+ "value": [
+ "52.30.97.44/32"
+ ]
+ },
+ "bitbucket_repository": {
+ "value": "adominfguez-local"
+ },
+ "certificate_arn": {
+ "value": "arn:aws:iam::154977180039:server-certificate/wildcard-iriusrisk-com-until-27-oct-2023"
+ },
+ "cloudflare_dns_name": {
+ "value": "habase-test"
+ },
+ "cloudflare_token": {
+ "value": "sensitive"
+ },
+ "cloudflare_zone_id": {
+ "value": "322584a91b72b6a7f152b5f548cad339"
+ },
+ "create_synthetic_monitor": {
+ "value": false
+ },
+ "database_subnet_cidrs": {
+ "value": [
+ "10.125.30.0/24",
+ "10.125.31.0/24"
+ ]
+ },
+ "dbname": {
+ "value": "iriusprod"
+ },
+ "dbpassword": {
+ "value": "alongandcomplexpassword1234"
+ },
+ "dbuser": {
+ "value": "iriusprod"
+ },
+ "deployment_flag": {
+ "value": "green"
+ },
+ "ec2_instance_type": {
+ "value": "c5.xlarge"
+ },
+ "environment": {
+ "value": "test"
+ },
+ "iam_instance_profile_arn": {
+ "value": "arn:aws:iam::154977180039:instance-profile/myManagedInstanceRoleforSSM"
+ },
+ "iam_policy_arn": {
+ "value": [
+ "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM",
+ "arn:aws:iam::aws:policy/AmazonS3FullAccess",
+ "arn:aws:iam::154977180039:policy/AllowLogRetentionUpdate",
+ "arn:aws:iam::154977180039:policy/allow-invoke-lambda-ascii-banner",
+ "arn:aws:iam::154977180039:policy/AccessSecretsProdCertificateIriusrisk",
+ "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
+ ]
+ },
+ "iriusrisk_version": {
+ "value": "4.12.1"
+ },
+ "is_rollback": {
+ "value": false
+ },
+ "keep_previous_rds": {
+ "value": false
+ },
+ "key_name": {
+ "value": "IriusRisk"
+ },
+ "major_engine_version": {
+ "value": "11"
+ },
+ "newrelic_account_id": {
+ "value": "3012056"
+ },
+ "newrelic_api_key": {
+ "value": "sensitive"
+ },
+ "newrelic_enabled": {
+ "value": false
+ },
+ "newrelic_region": {
+ "value": "EU"
+ },
+ "private_subnet_cidrs": {
+ "value": [
+ "10.125.20.0/24",
+ "10.125.21.0/24"
+ ]
+ },
+ "public_subnet_cidrs": {
+ "value": [
+ "10.125.10.0/24",
+ "10.125.11.0/24"
+ ]
+ },
+ "rds_engine": {
+ "value": "aurora-postgresql"
+ },
+ "rds_engine_version": {
+ "value": "11.16"
+ },
+ "rds_family": {
+ "value": "postgres11"
+ },
+ "rds_instance_type": {
+ "value": "db.r6g.xlarge"
+ },
+ "rds_snapshot": {
+ "value": ""
+ },
+ "slack_channel": {
+ "value": "ops_monitoring"
+ },
+ "slack_webhook_url": {
+ "value": "asd"
+ },
+ "stack_name": {
+ "value": "habase-test"
+ },
+ "startleft_version": {
+ "value": "1.10.0"
+ },
+ "type": {
+ "value": "internal"
+ },
+ "vpc_cidr": {
+ "value": "10.125.0.0/16"
+ },
+ "web_desired_capacity": {
+ "value": 3
+ },
+ "web_max_size": {
+ "value": 5
+ },
+ "web_min_size": {
+ "value": 3
+ }
+ },
+ "planned_values": {
+ "outputs": {
+ "analytics_build": {
+ "sensitive": false,
+ "type": "string",
+ "value": ""
+ },
+ "asg_api_id": {
+ "sensitive": false
+ },
+ "asg_web_id": {
+ "sensitive": false
+ },
+ "aurora_db_sg_id": {
+ "sensitive": false
+ },
+ "aws_ami_id": {
+ "sensitive": false,
+ "type": "string",
+ "value": "ami-0893e738795aad326"
+ },
+ "deployment_flag": {
+ "sensitive": false,
+ "type": "string",
+ "value": "green"
+ },
+ "iriusrisk_lb_sg_id": {
+ "sensitive": false
+ },
+ "iriusrisk_version": {
+ "sensitive": false,
+ "type": "string",
+ "value": "4.12.1"
+ },
+ "lb_arn": {
+ "sensitive": false
+ },
+ "lb_dns_name": {
+ "sensitive": false
+ },
+ "lb_https_listeners_arn": {
+ "sensitive": false
+ },
+ "log_group": {
+ "sensitive": false,
+ "type": "string",
+ "value": "/clients/test/habase-test"
+ },
+ "private_subnets": {
+ "sensitive": false
+ },
+ "public_subnets": {
+ "sensitive": false
+ },
+ "rds_arn": {
+ "sensitive": false
+ },
+ "rds_endpoint": {
+ "sensitive": false
+ },
+ "rds_identifier": {
+ "sensitive": false
+ },
+ "startleft_version": {
+ "sensitive": false,
+ "type": "string",
+ "value": "1.10.0"
+ },
+ "vpc_id": {
+ "sensitive": false
+ },
+ "web_endpoint": {
+ "sensitive": false,
+ "type": "string",
+ "value": "habase-test.iriusrisk.com"
+ }
+ },
+ "root_module": {
+ "resources": [
+ {
+ "address": "aws_autoscaling_group.iriusrisk_api",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_api",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "capacity_rebalance": null,
+ "context": null,
+ "default_instance_warmup": null,
+ "desired_capacity": 3,
+ "desired_capacity_type": null,
+ "enabled_metrics": [
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity",
+ "GroupDesiredCapacity",
+ "GroupInServiceCapacity",
+ "GroupInServiceInstances",
+ "GroupMaxSize",
+ "GroupMinSize",
+ "GroupPendingCapacity",
+ "GroupPendingInstances",
+ "GroupStandbyCapacity",
+ "GroupStandbyInstances",
+ "GroupTerminatingCapacity",
+ "GroupTerminatingInstances",
+ "GroupTotalCapacity",
+ "GroupTotalInstances"
+ ],
+ "force_delete": true,
+ "force_delete_warm_pool": false,
+ "health_check_grace_period": 1100,
+ "health_check_type": "ELB",
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_configuration": null,
+ "launch_template": [
+ {
+ "version": "$Latest"
+ }
+ ],
+ "load_balancers": null,
+ "max_instance_lifetime": null,
+ "max_size": 5,
+ "metrics_granularity": "1Minute",
+ "min_elb_capacity": null,
+ "min_size": 3,
+ "mixed_instances_policy": [],
+ "name": "habase-test-api-ASG",
+ "placement_group": null,
+ "protect_from_scale_in": false,
+ "suspended_processes": null,
+ "tag": [
+ {
+ "key": "Name",
+ "propagate_at_launch": true,
+ "value": "habase-test ApiServer"
+ },
+ {
+ "key": "asg-name",
+ "propagate_at_launch": true,
+ "value": "habase-test-api-ASG"
+ },
+ {
+ "key": "endpoint",
+ "propagate_at_launch": true,
+ "value": "habase-test.iriusrisk.com"
+ },
+ {
+ "key": "environment",
+ "propagate_at_launch": true,
+ "value": "test"
+ },
+ {
+ "key": "iriusrisk",
+ "propagate_at_launch": true,
+ "value": "true"
+ },
+ {
+ "key": "terraform.repository",
+ "propagate_at_launch": true,
+ "value": "adominfguez-local"
+ },
+ {
+ "key": "type",
+ "propagate_at_launch": true,
+ "value": "internal"
+ },
+ {
+ "key": "update_scenario",
+ "propagate_at_launch": true,
+ "value": "exceptional"
+ }
+ ],
+ "tags": null,
+ "termination_policies": null,
+ "timeouts": null,
+ "wait_for_capacity_timeout": "10m",
+ "wait_for_elb_capacity": null,
+ "warm_pool": []
+ },
+ "sensitive_values": {
+ "availability_zones": [],
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {}
+ ],
+ "mixed_instances_policy": [],
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": [],
+ "vpc_zone_identifier": [],
+ "warm_pool": []
+ }
+ },
+ {
+ "address": "aws_autoscaling_group.iriusrisk_web",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_web",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "capacity_rebalance": null,
+ "context": null,
+ "default_instance_warmup": null,
+ "desired_capacity": 3,
+ "desired_capacity_type": null,
+ "enabled_metrics": [
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity",
+ "GroupDesiredCapacity",
+ "GroupInServiceCapacity",
+ "GroupInServiceInstances",
+ "GroupMaxSize",
+ "GroupMinSize",
+ "GroupPendingCapacity",
+ "GroupPendingInstances",
+ "GroupStandbyCapacity",
+ "GroupStandbyInstances",
+ "GroupTerminatingCapacity",
+ "GroupTerminatingInstances",
+ "GroupTotalCapacity",
+ "GroupTotalInstances"
+ ],
+ "force_delete": true,
+ "force_delete_warm_pool": false,
+ "health_check_grace_period": 1100,
+ "health_check_type": "ELB",
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_configuration": null,
+ "launch_template": [
+ {
+ "version": "$Latest"
+ }
+ ],
+ "load_balancers": null,
+ "max_instance_lifetime": null,
+ "max_size": 5,
+ "metrics_granularity": "1Minute",
+ "min_elb_capacity": null,
+ "min_size": 3,
+ "mixed_instances_policy": [],
+ "name": "habase-test-web-ASG",
+ "placement_group": null,
+ "protect_from_scale_in": false,
+ "suspended_processes": null,
+ "tag": [
+ {
+ "key": "Name",
+ "propagate_at_launch": true,
+ "value": "habase-test WebServer"
+ },
+ {
+ "key": "asg-name",
+ "propagate_at_launch": true,
+ "value": "habase-test-web-ASG"
+ },
+ {
+ "key": "endpoint",
+ "propagate_at_launch": true,
+ "value": "habase-test.iriusrisk.com"
+ },
+ {
+ "key": "environment",
+ "propagate_at_launch": true,
+ "value": "test"
+ },
+ {
+ "key": "iriusrisk",
+ "propagate_at_launch": true,
+ "value": "true"
+ },
+ {
+ "key": "terraform.repository",
+ "propagate_at_launch": true,
+ "value": "adominfguez-local"
+ },
+ {
+ "key": "type",
+ "propagate_at_launch": true,
+ "value": "internal"
+ },
+ {
+ "key": "update_scenario",
+ "propagate_at_launch": true,
+ "value": "exceptional"
+ }
+ ],
+ "tags": null,
+ "termination_policies": null,
+ "timeouts": null,
+ "wait_for_capacity_timeout": "10m",
+ "wait_for_elb_capacity": null,
+ "warm_pool": []
+ },
+ "sensitive_values": {
+ "availability_zones": [],
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {}
+ ],
+ "mixed_instances_policy": [],
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": [],
+ "vpc_zone_identifier": [],
+ "warm_pool": []
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-api-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_api_asg_scaling_down_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": -1,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "sensitive_values": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-api-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_api_asg_scaling_up_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": 2,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "sensitive_values": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-web-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_web_asg_scaling_down_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": -1,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "sensitive_values": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-web-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_web_asg_scaling_up_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": 2,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "sensitive_values": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ },
+ {
+ "address": "aws_cloudwatch_log_group.cw_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "cw_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "kms_key_id": null,
+ "name": "/clients/test/habase-test",
+ "retention_in_days": 365,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-down if CPU \u003c 30% for 10 minutes",
+ "alarm_name": "habase-test-iriusrisk-api-cpu-below-30",
+ "comparison_operator": "LessThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-api-ASG"
+ },
+ "evaluation_periods": 2,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 30,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "sensitive_values": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-up if CPU \u003e 70% for 2 minutes",
+ "alarm_name": "habase-test-iriusrisk-api-cpu-above-70",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-api-ASG"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 120,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 70,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "sensitive_values": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_db_cloudwatch_alarm_above_600",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "actions_enabled": true,
+ "alarm_actions": null,
+ "alarm_description": "DB connections \u003e 600",
+ "alarm_name": "habase-test-iriusrisk-db-connections-above-600",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "DBInstanceIdentifier": "habase-test-rds-green-one"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "DatabaseConnections",
+ "metric_query": [],
+ "namespace": "AWS/RDS",
+ "ok_actions": null,
+ "period": 60,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 600,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "sensitive_values": {
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-down if CPU \u003c 30% for 10 minutes",
+ "alarm_name": "habase-test-iriusrisk-web-cpu-below-30",
+ "comparison_operator": "LessThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-web-ASG"
+ },
+ "evaluation_periods": 2,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 30,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "sensitive_values": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-up if CPU \u003e 70% for 5 minutes",
+ "alarm_name": "habase-test-iriusrisk-web-cpu-above-70",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-web-ASG"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 70,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "sensitive_values": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_iam_instance_profile.instance_profile",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "instance_profile",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "name": "habase-test-instance-profile",
+ "name_prefix": null,
+ "path": "/",
+ "role": "habase-test-access-role",
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_iam_policy.secret-access",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "secret-access",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "habase-test policy to secrets access. TERRAFORM GENERATED",
+ "name": "habase-test-secret-access",
+ "name_prefix": null,
+ "path": "/",
+ "policy": "{\"Statement\":[{\"Action\":[\"secretsmanager:GetSecretValue\",\"secretsmanager:DescribeSecret\"],\"Effect\":\"Allow\",\"Resource\":\"arn:aws:secretsmanager:eu-west-1:154977180039:secret:prod/certificate/habase-test/*\",\"Sid\":\"TerraformGenerated0\"}],\"Version\":\"2012-10-17\"}",
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_iam_role.access-role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "access-role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ec2.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": "habase-test role. TERRAFORM GENERATED",
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "habase-test-access-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[0]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[1]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::aws:policy/AmazonS3FullAccess",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[2]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/AllowLogRetentionUpdate",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[3]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 3,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/allow-invoke-lambda-ascii-banner",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[4]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 4,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/AccessSecretsProdCertificateIriusrisk",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[5]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 5,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy",
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.secret-access-attachment",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "secret-access-attachment",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "role": "habase-test-access-role"
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "aws_launch_template.iriusrisk",
+ "mode": "managed",
+ "type": "aws_launch_template",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "block_device_mappings": [
+ {
+ "device_name": "/dev/xvda",
+ "ebs": [
+ {
+ "delete_on_termination": "true",
+ "encrypted": "true",
+ "kms_key_id": null,
+ "snapshot_id": null,
+ "volume_size": 32,
+ "volume_type": "gp3"
+ }
+ ],
+ "no_device": null,
+ "virtual_name": null
+ }
+ ],
+ "capacity_reservation_specification": [],
+ "cpu_options": [],
+ "credit_specification": [],
+ "description": null,
+ "disable_api_stop": null,
+ "disable_api_termination": null,
+ "ebs_optimized": null,
+ "elastic_gpu_specifications": [],
+ "elastic_inference_accelerator": [],
+ "enclave_options": [],
+ "hibernation_options": [],
+ "iam_instance_profile": [
+ {
+ "arn": null,
+ "name": "habase-test-instance-profile"
+ }
+ ],
+ "image_id": "ami-0893e738795aad326",
+ "instance_initiated_shutdown_behavior": null,
+ "instance_market_options": [],
+ "instance_requirements": [],
+ "instance_type": "c5.xlarge",
+ "kernel_id": null,
+ "key_name": "IriusRisk",
+ "license_specification": [],
+ "maintenance_options": [],
+ "monitoring": [],
+ "name_prefix": "habase-test-LT",
+ "network_interfaces": [
+ {
+ "associate_carrier_ip_address": null,
+ "associate_public_ip_address": "true",
+ "delete_on_termination": "true",
+ "description": "primary interface",
+ "device_index": 0,
+ "interface_type": null,
+ "ipv4_address_count": null,
+ "ipv4_addresses": null,
+ "ipv4_prefix_count": null,
+ "ipv4_prefixes": null,
+ "ipv6_address_count": null,
+ "ipv6_addresses": null,
+ "ipv6_prefix_count": null,
+ "ipv6_prefixes": null,
+ "network_card_index": null,
+ "network_interface_id": null,
+ "private_ip_address": null,
+ "subnet_id": null
+ }
+ ],
+ "placement": [],
+ "private_dns_name_options": [],
+ "ram_disk_id": null,
+ "security_group_names": null,
+ "tag_specifications": [],
+ "tags": null,
+ "update_default_version": null,
+ "vpc_security_group_ids": null
+ },
+ "sensitive_values": {
+ "block_device_mappings": [
+ {
+ "ebs": [
+ {}
+ ]
+ }
+ ],
+ "capacity_reservation_specification": [],
+ "cpu_options": [],
+ "credit_specification": [],
+ "elastic_gpu_specifications": [],
+ "elastic_inference_accelerator": [],
+ "enclave_options": [],
+ "hibernation_options": [],
+ "iam_instance_profile": [
+ {}
+ ],
+ "instance_market_options": [],
+ "instance_requirements": [],
+ "license_specification": [],
+ "maintenance_options": [],
+ "metadata_options": [],
+ "monitoring": [],
+ "network_interfaces": [
+ {
+ "security_groups": []
+ }
+ ],
+ "placement": [],
+ "private_dns_name_options": [],
+ "tag_specifications": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_secretsmanager_secret.jwt-secret",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret",
+ "name": "jwt-secret",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "JWT certificate for habase-test",
+ "force_overwrite_replica_secret": false,
+ "kms_key_id": null,
+ "name": "prod/certificate/habase-test/jwt",
+ "recovery_window_in_days": 0,
+ "tags": null
+ },
+ "sensitive_values": {
+ "replica": [],
+ "rotation_rules": [],
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_secretsmanager_secret_version.secret-value",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret_version",
+ "name": "secret-value",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "secret_binary": null
+ },
+ "sensitive_values": {
+ "secret_string": true,
+ "version_stages": []
+ }
+ },
+ {
+ "address": "aws_security_group.alb",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "alb",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "description": "Allow access HTTP \u0026 HTTPS traffic to ALB",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTP access from the world",
+ "from_port": 80,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 80
+ },
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTPS access from the world",
+ "from_port": 443,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 443
+ }
+ ],
+ "name": "habase-test ALB SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test ALB SG",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test ALB SG",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_security_group.aurora-db-sg",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "aurora-db-sg",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "description": "Allow access to RDS database",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [],
+ "description": "PSQL access from worker nodes",
+ "from_port": 5432,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "self": false,
+ "to_port": 5432
+ }
+ ],
+ "name": "habase-test RDS SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test RDS SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test RDS SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "aws_security_group.iriusrisk",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "description": "Allow access HTTP and SSH traffic to WebServerInstance",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ "52.30.97.44/32"
+ ],
+ "description": "SSH access from bastion host",
+ "from_port": 22,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 22
+ },
+ {
+ "cidr_blocks": [],
+ "description": "HTTP access from ALB",
+ "from_port": 8080,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "self": false,
+ "to_port": 8080
+ }
+ ],
+ "name": "habase-test WebServer SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test WebServer SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test WebServer SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "cloudflare_record.dns_cname",
+ "mode": "managed",
+ "type": "cloudflare_record",
+ "name": "dns_cname",
+ "provider_name": "registry.terraform.io/cloudflare/cloudflare",
+ "schema_version": 2,
+ "values": {
+ "allow_overwrite": false,
+ "comment": null,
+ "data": [],
+ "name": "habase-test",
+ "priority": null,
+ "proxied": true,
+ "tags": null,
+ "timeouts": null,
+ "type": "CNAME",
+ "zone_id": "322584a91b72b6a7f152b5f548cad339"
+ },
+ "sensitive_values": {
+ "data": [],
+ "metadata": {}
+ }
+ },
+ {
+ "address": "data.template_file.iriusrisk",
+ "mode": "data",
+ "type": "template_file",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/template",
+ "schema_version": 0,
+ "values": {
+ "filename": null,
+ "template": "#!/bin/bash -xe\n\n# Update instance\n#yum update -y\n\n# Redirect web \u0026 RDS endpoints in docker-compose file\nsed -i 's/rds.iriusrisk.com/${rds_endpoint}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Download ec_private.pem from secrets manager\naws secretsmanager get-secret-value --secret-id prod/certificate/${stack_name}/jwt --query SecretString --output text --region ${aws_region} \u003e /home/ec2-user/docker/ec_private.pem\n\n# Change CW log group (Check log group into docker-compose file in ansible repository)\nsed -i 's/\\/clients\\/prod\\/{customerName}/${log_group}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Change user, password, URL and edition\n# Download ec_private.pem from secrets manager\naws secretsmanager get-secret-value --secret-id ${jwt_secret_name} --query SecretString --output text --region ${aws_region} \u003e /home/ec2-user/docker/ec_private.pem\nsed -i 's/iriusprod/${dbname}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/dbuser/${dbuser}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/dbpassword/${dbpassword}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/http\\\\:\\/\\/ha.iriusrisk.com/https\\\\:\\/\\/${dns_name}.iriusrisk.com/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/ir_edition/saas/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{region}/${aws_region}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{customerName}/${stack_name}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{instance_id}/${stack_name}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Change docker image\nsed -i \"s/container_name\\:tag/iriusrisk-prod\\:tomcat-${iriusrisk_version}/g\" /home/ec2-user/docker/docker-compose.yml\nsed -i \"s/container_name\\:startleft-tag/iriusrisk-prod\\:startleft-${startleft_version}/g\" /home/ec2-user/docker/docker-compose.yml\n\n# Remove SAML and disbale issue tracker for non-production environment\nif [ ${env} != 'prod' ];\nthen\n sed -i 's,\\\"-Dsaml.config.path=\\/etc\\/irius\\/SAMLv2-config.groovy\\\" ,,g' /home/ec2-user/docker/docker-compose.yml\n sed -i '/IRIUS_EDITION=saas/a\\ - ISSUE_TRACKER_AUTO_SYNC_DISABLED=true' /home/ec2-user/docker/docker-compose.yml\nfi\n\n# Change hostname\necho '${stack_name}-web' \u003e /etc/hostname\nhostname ${stack_name}-web\nbash /tmp/change_motd_ec2.sh ${stack_name}-web\n# Start and enable docker-compose service\nsystemctl start docker-compose.service\nsystemctl enable docker-compose.service",
+ "vars": {
+ "aws_region": "eu-west-1",
+ "dbname": "iriusprod",
+ "dbpassword": "alongandcomplexpassword1234",
+ "dbuser": "iriusprod",
+ "dns_name": "habase-test",
+ "env": "test",
+ "iriusrisk_version": "4.12.1",
+ "jwt_secret_name": "prod/certificate/habase-test/jwt",
+ "log_group": "\\/clients\\/test\\/habase-test",
+ "stack_name": "habase-test",
+ "startleft_version": "1.10.0",
+ "type": "internal"
+ }
+ },
+ "sensitive_values": {
+ "vars": {
+ "dbpassword": true
+ }
+ }
+ },
+ {
+ "address": "time_sleep.wait_180_seconds",
+ "mode": "managed",
+ "type": "time_sleep",
+ "name": "wait_180_seconds",
+ "provider_name": "registry.terraform.io/hashicorp/time",
+ "schema_version": 0,
+ "values": {
+ "create_duration": "180s",
+ "destroy_duration": null,
+ "triggers": null
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "tls_private_key.ec_private",
+ "mode": "managed",
+ "type": "tls_private_key",
+ "name": "ec_private",
+ "provider_name": "registry.terraform.io/hashicorp/tls",
+ "schema_version": 1,
+ "values": {
+ "algorithm": "ECDSA",
+ "ecdsa_curve": "P256",
+ "rsa_bits": 2048
+ },
+ "sensitive_values": {}
+ }
+ ],
+ "child_modules": [
+ {
+ "resources": [
+ {
+ "address": "module.aurora-db-green.aws_db_subnet_group.this[0]",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "For Aurora cluster habase-test-rds-green",
+ "name": "habase-test-rds-subnets-green",
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "sensitive_values": {
+ "subnet_ids": [],
+ "supported_network_types": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "mode": "managed",
+ "type": "aws_rds_cluster",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "allow_major_version_upgrade": false,
+ "backtrack_window": 0,
+ "backup_retention_period": 35,
+ "cluster_identifier": "habase-test-rds-green",
+ "copy_tags_to_snapshot": true,
+ "database_name": "iriusprod",
+ "db_cluster_instance_class": null,
+ "db_instance_parameter_group_name": null,
+ "db_subnet_group_name": "habase-test-rds-subnets-green",
+ "deletion_protection": false,
+ "enable_global_write_forwarding": false,
+ "enable_http_endpoint": false,
+ "enabled_cloudwatch_logs_exports": null,
+ "engine": "aurora-postgresql",
+ "engine_mode": "provisioned",
+ "engine_version": "11.16",
+ "final_snapshot_identifier": null,
+ "global_cluster_identifier": null,
+ "iam_database_authentication_enabled": null,
+ "iops": null,
+ "master_password": "alongandcomplexpassword1234",
+ "master_username": "iriusprod",
+ "port": 5432,
+ "preferred_backup_window": "16:50-18:50",
+ "preferred_maintenance_window": "mon:02:00-mon:03:00",
+ "replication_source_identifier": null,
+ "restore_to_point_in_time": [],
+ "s3_import": [],
+ "scaling_configuration": [],
+ "serverlessv2_scaling_configuration": [],
+ "skip_final_snapshot": true,
+ "snapshot_identifier": null,
+ "source_region": null,
+ "storage_encrypted": true,
+ "storage_type": null,
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": null,
+ "delete": null,
+ "update": null
+ }
+ },
+ "sensitive_values": {
+ "availability_zones": [],
+ "cluster_members": [],
+ "iam_roles": [],
+ "master_password": true,
+ "restore_to_point_in_time": [],
+ "s3_import": [],
+ "scaling_configuration": [],
+ "serverlessv2_scaling_configuration": [],
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {},
+ "vpc_security_group_ids": []
+ }
+ },
+ {
+ "address": "module.aurora-db-green.aws_rds_cluster_instance.this[\"one\"]",
+ "mode": "managed",
+ "type": "aws_rds_cluster_instance",
+ "name": "this",
+ "index": "one",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "auto_minor_version_upgrade": false,
+ "copy_tags_to_snapshot": true,
+ "db_subnet_group_name": "habase-test-rds-subnets-green",
+ "engine": "aurora-postgresql",
+ "engine_version": "11.16",
+ "identifier": "habase-test-rds-green-one",
+ "instance_class": "db.r6g.xlarge",
+ "monitoring_interval": 0,
+ "performance_insights_enabled": true,
+ "performance_insights_retention_period": 31,
+ "preferred_maintenance_window": "mon:02:00-mon:03:00",
+ "promotion_tier": 0,
+ "publicly_accessible": false,
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": null,
+ "delete": null,
+ "update": null
+ }
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {}
+ }
+ }
+ ],
+ "address": "module.aurora-db-green"
+ },
+ {
+ "resources": [
+ {
+ "address": "module.iriusrisk_alb.aws_lb.this[0]",
+ "mode": "managed",
+ "type": "aws_lb",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "access_logs": [],
+ "customer_owned_ipv4_pool": null,
+ "desync_mitigation_mode": "defensive",
+ "drop_invalid_header_fields": false,
+ "enable_cross_zone_load_balancing": null,
+ "enable_deletion_protection": false,
+ "enable_http2": true,
+ "enable_waf_fail_open": false,
+ "idle_timeout": 900,
+ "internal": false,
+ "ip_address_type": "ipv4",
+ "load_balancer_type": "application",
+ "name": "habase-test-alb",
+ "name_prefix": null,
+ "preserve_host_header": false,
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": "10m",
+ "delete": "10m",
+ "update": "10m"
+ }
+ },
+ "sensitive_values": {
+ "access_logs": [],
+ "security_groups": [],
+ "subnet_mapping": [],
+ "subnets": [],
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {}
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp[0]",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_http_tcp",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "alpn_policy": null,
+ "certificate_arn": null,
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [
+ {
+ "host": "#{host}",
+ "path": "/#{path}",
+ "port": "443",
+ "protocol": "HTTPS",
+ "query": "#{query}",
+ "status_code": "HTTP_302"
+ }
+ ],
+ "target_group_arn": null,
+ "type": "redirect"
+ }
+ ],
+ "port": 80,
+ "protocol": "HTTP",
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [
+ {}
+ ]
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener.frontend_https[0]",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_https",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "alpn_policy": null,
+ "certificate_arn": "arn:aws:iam::154977180039:server-certificate/wildcard-iriusrisk-com-until-27-oct-2023",
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [],
+ "type": "forward"
+ }
+ ],
+ "port": 443,
+ "protocol": "HTTPS",
+ "ssl_policy": "ELBSecurityPolicy-2016-08",
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule[0]",
+ "mode": "managed",
+ "type": "aws_lb_listener_rule",
+ "name": "https_listener_rule",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [],
+ "type": "forward"
+ }
+ ],
+ "condition": [
+ {
+ "host_header": [],
+ "http_header": [],
+ "http_request_method": [],
+ "path_pattern": [
+ {
+ "values": [
+ "/api",
+ "/api/*"
+ ]
+ }
+ ],
+ "query_string": [],
+ "source_ip": []
+ }
+ ],
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "sensitive_values": {
+ "action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": []
+ }
+ ],
+ "condition": [
+ {
+ "host_header": [],
+ "http_header": [],
+ "http_request_method": [],
+ "path_pattern": [
+ {
+ "values": [
+ false,
+ false
+ ]
+ }
+ ],
+ "query_string": [],
+ "source_ip": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_target_group.main[0]",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "main",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "connection_termination": false,
+ "deregistration_delay": "30",
+ "health_check": [
+ {
+ "enabled": true,
+ "healthy_threshold": 4,
+ "interval": 20,
+ "path": "/health",
+ "port": "traffic-port",
+ "protocol": "HTTP",
+ "timeout": 5,
+ "unhealthy_threshold": 2
+ }
+ ],
+ "lambda_multi_value_headers_enabled": false,
+ "load_balancing_algorithm_type": "round_robin",
+ "name": "habase-test-web-TG",
+ "name_prefix": null,
+ "port": 8080,
+ "protocol": "HTTP",
+ "proxy_protocol_v2": false,
+ "slow_start": 0,
+ "stickiness": [
+ {
+ "cookie_duration": 600,
+ "cookie_name": null,
+ "enabled": true,
+ "type": "lb_cookie"
+ }
+ ],
+ "tags": {
+ "Name": "habase-test-web-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-web-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "target_type": "instance"
+ },
+ "sensitive_values": {
+ "health_check": [
+ {}
+ ],
+ "stickiness": [
+ {}
+ ],
+ "tags": {},
+ "tags_all": {},
+ "target_failover": []
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_target_group.main[1]",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "main",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "connection_termination": false,
+ "deregistration_delay": "30",
+ "health_check": [
+ {
+ "enabled": true,
+ "healthy_threshold": 4,
+ "interval": 20,
+ "path": "/health",
+ "port": "traffic-port",
+ "protocol": "HTTP",
+ "timeout": 5,
+ "unhealthy_threshold": 2
+ }
+ ],
+ "lambda_multi_value_headers_enabled": false,
+ "load_balancing_algorithm_type": "round_robin",
+ "name": "habase-test-api-TG",
+ "name_prefix": null,
+ "port": 8080,
+ "protocol": "HTTP",
+ "proxy_protocol_v2": false,
+ "slow_start": 0,
+ "tags": {
+ "Name": "habase-test-api-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-api-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "target_type": "instance"
+ },
+ "sensitive_values": {
+ "health_check": [
+ {}
+ ],
+ "stickiness": [],
+ "tags": {},
+ "tags_all": {},
+ "target_failover": []
+ }
+ }
+ ],
+ "address": "module.iriusrisk_alb"
+ },
+ {
+ "resources": [
+ {
+ "address": "module.vpc.aws_internet_gateway.this[0]",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "tags": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route.public_internet_gateway[0]",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "carrier_gateway_id": null,
+ "core_network_arn": null,
+ "destination_cidr_block": "0.0.0.0/0",
+ "destination_ipv6_cidr_block": null,
+ "destination_prefix_list_id": null,
+ "egress_only_gateway_id": null,
+ "local_gateway_id": null,
+ "nat_gateway_id": null,
+ "timeouts": {
+ "create": "5m",
+ "delete": null,
+ "update": null
+ },
+ "transit_gateway_id": null,
+ "vpc_endpoint_id": null,
+ "vpc_peering_connection_id": null
+ },
+ "sensitive_values": {
+ "timeouts": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[0]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[1]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.public[0]",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "tags": {
+ "Name": "habase-test-VPC-public",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[0]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "gateway_id": null
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[1]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "gateway_id": null
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[0]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "gateway_id": null
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[1]",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "gateway_id": null
+ },
+ "sensitive_values": {}
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[0]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.125.20.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[1]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.125.21.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[0]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.125.10.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-public-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[1]",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.125.11.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-public-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_vpc.this[0]",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "assign_generated_ipv6_cidr_block": false,
+ "cidr_block": "10.125.0.0/16",
+ "enable_dns_hostnames": true,
+ "enable_dns_support": true,
+ "instance_tenancy": "default",
+ "ipv4_ipam_pool_id": null,
+ "ipv4_netmask_length": null,
+ "ipv6_ipam_pool_id": null,
+ "ipv6_netmask_length": null,
+ "tags": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "sensitive_values": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ ],
+ "address": "module.vpc"
+ }
+ ]
+ }
+ },
+ "resource_changes": [
+ {
+ "address": "aws_autoscaling_group.iriusrisk_api",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_api",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "capacity_rebalance": null,
+ "context": null,
+ "default_instance_warmup": null,
+ "desired_capacity": 3,
+ "desired_capacity_type": null,
+ "enabled_metrics": [
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity",
+ "GroupDesiredCapacity",
+ "GroupInServiceCapacity",
+ "GroupInServiceInstances",
+ "GroupMaxSize",
+ "GroupMinSize",
+ "GroupPendingCapacity",
+ "GroupPendingInstances",
+ "GroupStandbyCapacity",
+ "GroupStandbyInstances",
+ "GroupTerminatingCapacity",
+ "GroupTerminatingInstances",
+ "GroupTotalCapacity",
+ "GroupTotalInstances"
+ ],
+ "force_delete": true,
+ "force_delete_warm_pool": false,
+ "health_check_grace_period": 1100,
+ "health_check_type": "ELB",
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_configuration": null,
+ "launch_template": [
+ {
+ "version": "$Latest"
+ }
+ ],
+ "load_balancers": null,
+ "max_instance_lifetime": null,
+ "max_size": 5,
+ "metrics_granularity": "1Minute",
+ "min_elb_capacity": null,
+ "min_size": 3,
+ "mixed_instances_policy": [],
+ "name": "habase-test-api-ASG",
+ "placement_group": null,
+ "protect_from_scale_in": false,
+ "suspended_processes": null,
+ "tag": [
+ {
+ "key": "Name",
+ "propagate_at_launch": true,
+ "value": "habase-test ApiServer"
+ },
+ {
+ "key": "asg-name",
+ "propagate_at_launch": true,
+ "value": "habase-test-api-ASG"
+ },
+ {
+ "key": "endpoint",
+ "propagate_at_launch": true,
+ "value": "habase-test.iriusrisk.com"
+ },
+ {
+ "key": "environment",
+ "propagate_at_launch": true,
+ "value": "test"
+ },
+ {
+ "key": "iriusrisk",
+ "propagate_at_launch": true,
+ "value": "true"
+ },
+ {
+ "key": "terraform.repository",
+ "propagate_at_launch": true,
+ "value": "adominfguez-local"
+ },
+ {
+ "key": "type",
+ "propagate_at_launch": true,
+ "value": "internal"
+ },
+ {
+ "key": "update_scenario",
+ "propagate_at_launch": true,
+ "value": "exceptional"
+ }
+ ],
+ "tags": null,
+ "termination_policies": null,
+ "timeouts": null,
+ "wait_for_capacity_timeout": "10m",
+ "wait_for_elb_capacity": null,
+ "warm_pool": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zones": true,
+ "default_cooldown": true,
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "id": true,
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {
+ "id": true,
+ "name": true
+ }
+ ],
+ "mixed_instances_policy": [],
+ "name_prefix": true,
+ "service_linked_role_arn": true,
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": true,
+ "vpc_zone_identifier": true,
+ "warm_pool": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "availability_zones": [],
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {}
+ ],
+ "mixed_instances_policy": [],
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": [],
+ "vpc_zone_identifier": [],
+ "warm_pool": []
+ }
+ }
+ },
+ {
+ "address": "aws_autoscaling_group.iriusrisk_web",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_web",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "capacity_rebalance": null,
+ "context": null,
+ "default_instance_warmup": null,
+ "desired_capacity": 3,
+ "desired_capacity_type": null,
+ "enabled_metrics": [
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity",
+ "GroupDesiredCapacity",
+ "GroupInServiceCapacity",
+ "GroupInServiceInstances",
+ "GroupMaxSize",
+ "GroupMinSize",
+ "GroupPendingCapacity",
+ "GroupPendingInstances",
+ "GroupStandbyCapacity",
+ "GroupStandbyInstances",
+ "GroupTerminatingCapacity",
+ "GroupTerminatingInstances",
+ "GroupTotalCapacity",
+ "GroupTotalInstances"
+ ],
+ "force_delete": true,
+ "force_delete_warm_pool": false,
+ "health_check_grace_period": 1100,
+ "health_check_type": "ELB",
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_configuration": null,
+ "launch_template": [
+ {
+ "version": "$Latest"
+ }
+ ],
+ "load_balancers": null,
+ "max_instance_lifetime": null,
+ "max_size": 5,
+ "metrics_granularity": "1Minute",
+ "min_elb_capacity": null,
+ "min_size": 3,
+ "mixed_instances_policy": [],
+ "name": "habase-test-web-ASG",
+ "placement_group": null,
+ "protect_from_scale_in": false,
+ "suspended_processes": null,
+ "tag": [
+ {
+ "key": "Name",
+ "propagate_at_launch": true,
+ "value": "habase-test WebServer"
+ },
+ {
+ "key": "asg-name",
+ "propagate_at_launch": true,
+ "value": "habase-test-web-ASG"
+ },
+ {
+ "key": "endpoint",
+ "propagate_at_launch": true,
+ "value": "habase-test.iriusrisk.com"
+ },
+ {
+ "key": "environment",
+ "propagate_at_launch": true,
+ "value": "test"
+ },
+ {
+ "key": "iriusrisk",
+ "propagate_at_launch": true,
+ "value": "true"
+ },
+ {
+ "key": "terraform.repository",
+ "propagate_at_launch": true,
+ "value": "adominfguez-local"
+ },
+ {
+ "key": "type",
+ "propagate_at_launch": true,
+ "value": "internal"
+ },
+ {
+ "key": "update_scenario",
+ "propagate_at_launch": true,
+ "value": "exceptional"
+ }
+ ],
+ "tags": null,
+ "termination_policies": null,
+ "timeouts": null,
+ "wait_for_capacity_timeout": "10m",
+ "wait_for_elb_capacity": null,
+ "warm_pool": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zones": true,
+ "default_cooldown": true,
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "id": true,
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {
+ "id": true,
+ "name": true
+ }
+ ],
+ "mixed_instances_policy": [],
+ "name_prefix": true,
+ "service_linked_role_arn": true,
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": true,
+ "vpc_zone_identifier": true,
+ "warm_pool": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "availability_zones": [],
+ "enabled_metrics": [
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ ],
+ "initial_lifecycle_hook": [],
+ "instance_refresh": [],
+ "launch_template": [
+ {}
+ ],
+ "mixed_instances_policy": [],
+ "tag": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "target_group_arns": [],
+ "vpc_zone_identifier": [],
+ "warm_pool": []
+ }
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-api-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_api_asg_scaling_down_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": -1,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "metric_aggregation_type": true,
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-api-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_api_asg_scaling_up_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": 2,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "metric_aggregation_type": true,
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-web-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_web_asg_scaling_down_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": -1,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "metric_aggregation_type": true,
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ }
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "adjustment_type": "ChangeInCapacity",
+ "autoscaling_group_name": "habase-test-web-ASG",
+ "cooldown": 400,
+ "enabled": true,
+ "estimated_instance_warmup": null,
+ "min_adjustment_magnitude": null,
+ "name": "habase-test_web_asg_scaling_up_policy",
+ "policy_type": "SimpleScaling",
+ "predictive_scaling_configuration": [],
+ "scaling_adjustment": 2,
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "metric_aggregation_type": true,
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "predictive_scaling_configuration": [],
+ "step_adjustment": [],
+ "target_tracking_configuration": []
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_log_group.cw_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "cw_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "kms_key_id": null,
+ "name": "/clients/test/habase-test",
+ "retention_in_days": 365,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-down if CPU \u003c 30% for 10 minutes",
+ "alarm_name": "habase-test-iriusrisk-api-cpu-below-30",
+ "comparison_operator": "LessThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-api-ASG"
+ },
+ "evaluation_periods": 2,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 30,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "after_unknown": {
+ "alarm_actions": true,
+ "arn": true,
+ "dimensions": {},
+ "evaluate_low_sample_count_percentiles": true,
+ "id": true,
+ "metric_query": [],
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-up if CPU \u003e 70% for 2 minutes",
+ "alarm_name": "habase-test-iriusrisk-api-cpu-above-70",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-api-ASG"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 120,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 70,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "after_unknown": {
+ "alarm_actions": true,
+ "arn": true,
+ "dimensions": {},
+ "evaluate_low_sample_count_percentiles": true,
+ "id": true,
+ "metric_query": [],
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_db_cloudwatch_alarm_above_600",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "actions_enabled": true,
+ "alarm_actions": null,
+ "alarm_description": "DB connections \u003e 600",
+ "alarm_name": "habase-test-iriusrisk-db-connections-above-600",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "DBInstanceIdentifier": "habase-test-rds-green-one"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "DatabaseConnections",
+ "metric_query": [],
+ "namespace": "AWS/RDS",
+ "ok_actions": null,
+ "period": 60,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 600,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "dimensions": {},
+ "evaluate_low_sample_count_percentiles": true,
+ "id": true,
+ "metric_query": [],
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_down",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-down if CPU \u003c 30% for 10 minutes",
+ "alarm_name": "habase-test-iriusrisk-web-cpu-below-30",
+ "comparison_operator": "LessThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-web-ASG"
+ },
+ "evaluation_periods": 2,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 30,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "after_unknown": {
+ "alarm_actions": true,
+ "arn": true,
+ "dimensions": {},
+ "evaluate_low_sample_count_percentiles": true,
+ "id": true,
+ "metric_query": [],
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_up",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "actions_enabled": true,
+ "alarm_description": "Scale-up if CPU \u003e 70% for 5 minutes",
+ "alarm_name": "habase-test-iriusrisk-web-cpu-above-70",
+ "comparison_operator": "GreaterThanThreshold",
+ "datapoints_to_alarm": null,
+ "dimensions": {
+ "AutoScalingGroupName": "habase-test-web-ASG"
+ },
+ "evaluation_periods": 1,
+ "extended_statistic": null,
+ "insufficient_data_actions": null,
+ "metric_name": "CPUUtilization",
+ "metric_query": [],
+ "namespace": "AWS/EC2",
+ "ok_actions": null,
+ "period": 300,
+ "statistic": "Average",
+ "tags": null,
+ "threshold": 70,
+ "threshold_metric_id": null,
+ "treat_missing_data": "missing",
+ "unit": null
+ },
+ "after_unknown": {
+ "alarm_actions": true,
+ "arn": true,
+ "dimensions": {},
+ "evaluate_low_sample_count_percentiles": true,
+ "id": true,
+ "metric_query": [],
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "alarm_actions": [],
+ "dimensions": {},
+ "metric_query": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_iam_instance_profile.instance_profile",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "instance_profile",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "name": "habase-test-instance-profile",
+ "name_prefix": null,
+ "path": "/",
+ "role": "habase-test-access-role",
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_iam_policy.secret-access",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "secret-access",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "habase-test policy to secrets access. TERRAFORM GENERATED",
+ "name": "habase-test-secret-access",
+ "name_prefix": null,
+ "path": "/",
+ "policy": "{\"Statement\":[{\"Action\":[\"secretsmanager:GetSecretValue\",\"secretsmanager:DescribeSecret\"],\"Effect\":\"Allow\",\"Resource\":\"arn:aws:secretsmanager:eu-west-1:154977180039:secret:prod/certificate/habase-test/*\",\"Sid\":\"TerraformGenerated0\"}],\"Version\":\"2012-10-17\"}",
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "policy_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_iam_role.access-role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "access-role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"ec2.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": "habase-test role. TERRAFORM GENERATED",
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "habase-test-access-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name_prefix": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[0]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[1]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::aws:policy/AmazonS3FullAccess",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[2]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 2,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/AllowLogRetentionUpdate",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[3]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 3,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/allow-invoke-lambda-ascii-banner",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[4]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 4,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::154977180039:policy/AccessSecretsProdCertificateIriusrisk",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment[5]",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "index": 5,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy",
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.secret-access-attachment",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "secret-access-attachment",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "role": "habase-test-access-role"
+ },
+ "after_unknown": {
+ "id": true,
+ "policy_arn": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "aws_launch_template.iriusrisk",
+ "mode": "managed",
+ "type": "aws_launch_template",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "block_device_mappings": [
+ {
+ "device_name": "/dev/xvda",
+ "ebs": [
+ {
+ "delete_on_termination": "true",
+ "encrypted": "true",
+ "kms_key_id": null,
+ "snapshot_id": null,
+ "volume_size": 32,
+ "volume_type": "gp3"
+ }
+ ],
+ "no_device": null,
+ "virtual_name": null
+ }
+ ],
+ "capacity_reservation_specification": [],
+ "cpu_options": [],
+ "credit_specification": [],
+ "description": null,
+ "disable_api_stop": null,
+ "disable_api_termination": null,
+ "ebs_optimized": null,
+ "elastic_gpu_specifications": [],
+ "elastic_inference_accelerator": [],
+ "enclave_options": [],
+ "hibernation_options": [],
+ "iam_instance_profile": [
+ {
+ "arn": null,
+ "name": "habase-test-instance-profile"
+ }
+ ],
+ "image_id": "ami-0893e738795aad326",
+ "instance_initiated_shutdown_behavior": null,
+ "instance_market_options": [],
+ "instance_requirements": [],
+ "instance_type": "c5.xlarge",
+ "kernel_id": null,
+ "key_name": "IriusRisk",
+ "license_specification": [],
+ "maintenance_options": [],
+ "monitoring": [],
+ "name_prefix": "habase-test-LT",
+ "network_interfaces": [
+ {
+ "associate_carrier_ip_address": null,
+ "associate_public_ip_address": "true",
+ "delete_on_termination": "true",
+ "description": "primary interface",
+ "device_index": 0,
+ "interface_type": null,
+ "ipv4_address_count": null,
+ "ipv4_addresses": null,
+ "ipv4_prefix_count": null,
+ "ipv4_prefixes": null,
+ "ipv6_address_count": null,
+ "ipv6_addresses": null,
+ "ipv6_prefix_count": null,
+ "ipv6_prefixes": null,
+ "network_card_index": null,
+ "network_interface_id": null,
+ "private_ip_address": null,
+ "subnet_id": null
+ }
+ ],
+ "placement": [],
+ "private_dns_name_options": [],
+ "ram_disk_id": null,
+ "security_group_names": null,
+ "tag_specifications": [],
+ "tags": null,
+ "update_default_version": null,
+ "vpc_security_group_ids": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "block_device_mappings": [
+ {
+ "ebs": [
+ {
+ "iops": true,
+ "throughput": true
+ }
+ ]
+ }
+ ],
+ "capacity_reservation_specification": [],
+ "cpu_options": [],
+ "credit_specification": [],
+ "default_version": true,
+ "elastic_gpu_specifications": [],
+ "elastic_inference_accelerator": [],
+ "enclave_options": [],
+ "hibernation_options": [],
+ "iam_instance_profile": [
+ {}
+ ],
+ "id": true,
+ "instance_market_options": [],
+ "instance_requirements": [],
+ "latest_version": true,
+ "license_specification": [],
+ "maintenance_options": [],
+ "metadata_options": true,
+ "monitoring": [],
+ "name": true,
+ "network_interfaces": [
+ {
+ "security_groups": true
+ }
+ ],
+ "placement": [],
+ "private_dns_name_options": [],
+ "tag_specifications": [],
+ "tags_all": true,
+ "user_data": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "block_device_mappings": [
+ {
+ "ebs": [
+ {}
+ ]
+ }
+ ],
+ "capacity_reservation_specification": [],
+ "cpu_options": [],
+ "credit_specification": [],
+ "elastic_gpu_specifications": [],
+ "elastic_inference_accelerator": [],
+ "enclave_options": [],
+ "hibernation_options": [],
+ "iam_instance_profile": [
+ {}
+ ],
+ "instance_market_options": [],
+ "instance_requirements": [],
+ "license_specification": [],
+ "maintenance_options": [],
+ "metadata_options": [],
+ "monitoring": [],
+ "network_interfaces": [
+ {
+ "security_groups": []
+ }
+ ],
+ "placement": [],
+ "private_dns_name_options": [],
+ "tag_specifications": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_secretsmanager_secret.jwt-secret",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret",
+ "name": "jwt-secret",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "JWT certificate for habase-test",
+ "force_overwrite_replica_secret": false,
+ "kms_key_id": null,
+ "name": "prod/certificate/habase-test/jwt",
+ "recovery_window_in_days": 0,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "policy": true,
+ "replica": true,
+ "rotation_enabled": true,
+ "rotation_lambda_arn": true,
+ "rotation_rules": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "replica": [],
+ "rotation_rules": [],
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_secretsmanager_secret_version.secret-value",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret_version",
+ "name": "secret-value",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "secret_binary": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "secret_id": true,
+ "secret_string": true,
+ "version_id": true,
+ "version_stages": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "secret_binary": true,
+ "secret_string": true,
+ "version_stages": []
+ }
+ }
+ },
+ {
+ "address": "aws_security_group.alb",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "alb",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "Allow access HTTP \u0026 HTTPS traffic to ALB",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTP access from the world",
+ "from_port": 80,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 80
+ },
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTPS access from the world",
+ "from_port": 443,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 443
+ }
+ ],
+ "name": "habase-test ALB SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test ALB SG",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test ALB SG",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "id": true,
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "name_prefix": true,
+ "owner_id": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_security_group.aurora-db-sg",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "aurora-db-sg",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "Allow access to RDS database",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [],
+ "description": "PSQL access from worker nodes",
+ "from_port": 5432,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "self": false,
+ "to_port": 5432
+ }
+ ],
+ "name": "habase-test RDS SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test RDS SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test RDS SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "id": true,
+ "ingress": [
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": true
+ }
+ ],
+ "name_prefix": true,
+ "owner_id": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "aws_security_group.iriusrisk",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "Allow access HTTP and SSH traffic to WebServerInstance",
+ "egress": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "",
+ "from_port": 0,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "-1",
+ "security_groups": [],
+ "self": false,
+ "to_port": 0
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ "52.30.97.44/32"
+ ],
+ "description": "SSH access from bastion host",
+ "from_port": 22,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "security_groups": [],
+ "self": false,
+ "to_port": 22
+ },
+ {
+ "cidr_blocks": [],
+ "description": "HTTP access from ALB",
+ "from_port": 8080,
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "protocol": "tcp",
+ "self": false,
+ "to_port": 8080
+ }
+ ],
+ "name": "habase-test WebServer SG",
+ "revoke_rules_on_delete": false,
+ "tags": {
+ "Name": "habase-test WebServer SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test WebServer SG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "id": true,
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": true
+ }
+ ],
+ "name_prefix": true,
+ "owner_id": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "egress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "ingress": [
+ {
+ "cidr_blocks": [
+ false
+ ],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ },
+ {
+ "cidr_blocks": [],
+ "ipv6_cidr_blocks": [],
+ "prefix_list_ids": [],
+ "security_groups": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "cloudflare_record.dns_cname",
+ "mode": "managed",
+ "type": "cloudflare_record",
+ "name": "dns_cname",
+ "provider_name": "registry.terraform.io/cloudflare/cloudflare",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "allow_overwrite": false,
+ "comment": null,
+ "data": [],
+ "name": "habase-test",
+ "priority": null,
+ "proxied": true,
+ "tags": null,
+ "timeouts": null,
+ "type": "CNAME",
+ "zone_id": "322584a91b72b6a7f152b5f548cad339"
+ },
+ "after_unknown": {
+ "created_on": true,
+ "data": [],
+ "hostname": true,
+ "id": true,
+ "metadata": true,
+ "modified_on": true,
+ "proxiable": true,
+ "ttl": true,
+ "value": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "data": [],
+ "metadata": {}
+ }
+ }
+ },
+ {
+ "address": "data.template_file.iriusrisk",
+ "mode": "data",
+ "type": "template_file",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/template",
+ "change": {
+ "actions": [
+ "read"
+ ],
+ "before": null,
+ "after": {
+ "filename": null,
+ "template": "#!/bin/bash -xe\n\n# Update instance\n#yum update -y\n\n# Redirect web \u0026 RDS endpoints in docker-compose file\nsed -i 's/rds.iriusrisk.com/${rds_endpoint}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Download ec_private.pem from secrets manager\naws secretsmanager get-secret-value --secret-id prod/certificate/${stack_name}/jwt --query SecretString --output text --region ${aws_region} \u003e /home/ec2-user/docker/ec_private.pem\n\n# Change CW log group (Check log group into docker-compose file in ansible repository)\nsed -i 's/\\/clients\\/prod\\/{customerName}/${log_group}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Change user, password, URL and edition\n# Download ec_private.pem from secrets manager\naws secretsmanager get-secret-value --secret-id ${jwt_secret_name} --query SecretString --output text --region ${aws_region} \u003e /home/ec2-user/docker/ec_private.pem\nsed -i 's/iriusprod/${dbname}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/dbuser/${dbuser}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/dbpassword/${dbpassword}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/http\\\\:\\/\\/ha.iriusrisk.com/https\\\\:\\/\\/${dns_name}.iriusrisk.com/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/ir_edition/saas/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{region}/${aws_region}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{customerName}/${stack_name}/g' /home/ec2-user/docker/docker-compose.yml\nsed -i 's/{instance_id}/${stack_name}/g' /home/ec2-user/docker/docker-compose.yml\n\n# Change docker image\nsed -i \"s/container_name\\:tag/iriusrisk-prod\\:tomcat-${iriusrisk_version}/g\" /home/ec2-user/docker/docker-compose.yml\nsed -i \"s/container_name\\:startleft-tag/iriusrisk-prod\\:startleft-${startleft_version}/g\" /home/ec2-user/docker/docker-compose.yml\n\n# Remove SAML and disbale issue tracker for non-production environment\nif [ ${env} != 'prod' ];\nthen\n sed -i 's,\\\"-Dsaml.config.path=\\/etc\\/irius\\/SAMLv2-config.groovy\\\" ,,g' /home/ec2-user/docker/docker-compose.yml\n sed -i '/IRIUS_EDITION=saas/a\\ - ISSUE_TRACKER_AUTO_SYNC_DISABLED=true' /home/ec2-user/docker/docker-compose.yml\nfi\n\n# Change hostname\necho '${stack_name}-web' \u003e /etc/hostname\nhostname ${stack_name}-web\nbash /tmp/change_motd_ec2.sh ${stack_name}-web\n# Start and enable docker-compose service\nsystemctl start docker-compose.service\nsystemctl enable docker-compose.service",
+ "vars": {
+ "aws_region": "eu-west-1",
+ "dbname": "iriusprod",
+ "dbpassword": "alongandcomplexpassword1234",
+ "dbuser": "iriusprod",
+ "dns_name": "habase-test",
+ "env": "test",
+ "iriusrisk_version": "4.12.1",
+ "jwt_secret_name": "prod/certificate/habase-test/jwt",
+ "log_group": "\\/clients\\/test\\/habase-test",
+ "stack_name": "habase-test",
+ "startleft_version": "1.10.0",
+ "type": "internal"
+ }
+ },
+ "after_unknown": {
+ "id": true,
+ "rendered": true,
+ "vars": {
+ "rds_endpoint": true
+ }
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "vars": {
+ "dbpassword": true
+ }
+ }
+ },
+ "action_reason": "read_because_config_unknown"
+ },
+ {
+ "address": "module.aurora-db-green.aws_db_subnet_group.this[0]",
+ "module_address": "module.aurora-db-green",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "description": "For Aurora cluster habase-test-rds-green",
+ "name": "habase-test-rds-subnets-green",
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "subnet_ids": true,
+ "supported_network_types": true,
+ "tags": {},
+ "tags_all": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "subnet_ids": [],
+ "supported_network_types": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "module_address": "module.aurora-db-green",
+ "mode": "managed",
+ "type": "aws_rds_cluster",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "allow_major_version_upgrade": false,
+ "backtrack_window": 0,
+ "backup_retention_period": 35,
+ "cluster_identifier": "habase-test-rds-green",
+ "copy_tags_to_snapshot": true,
+ "database_name": "iriusprod",
+ "db_cluster_instance_class": null,
+ "db_instance_parameter_group_name": null,
+ "db_subnet_group_name": "habase-test-rds-subnets-green",
+ "deletion_protection": false,
+ "enable_global_write_forwarding": false,
+ "enable_http_endpoint": false,
+ "enabled_cloudwatch_logs_exports": null,
+ "engine": "aurora-postgresql",
+ "engine_mode": "provisioned",
+ "engine_version": "11.16",
+ "final_snapshot_identifier": null,
+ "global_cluster_identifier": null,
+ "iam_database_authentication_enabled": null,
+ "iops": null,
+ "master_password": "alongandcomplexpassword1234",
+ "master_username": "iriusprod",
+ "port": 5432,
+ "preferred_backup_window": "16:50-18:50",
+ "preferred_maintenance_window": "mon:02:00-mon:03:00",
+ "replication_source_identifier": null,
+ "restore_to_point_in_time": [],
+ "s3_import": [],
+ "scaling_configuration": [],
+ "serverlessv2_scaling_configuration": [],
+ "skip_final_snapshot": true,
+ "snapshot_identifier": null,
+ "source_region": null,
+ "storage_encrypted": true,
+ "storage_type": null,
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": null,
+ "delete": null,
+ "update": null
+ }
+ },
+ "after_unknown": {
+ "allocated_storage": true,
+ "apply_immediately": true,
+ "arn": true,
+ "availability_zones": true,
+ "cluster_identifier_prefix": true,
+ "cluster_members": true,
+ "cluster_resource_id": true,
+ "db_cluster_parameter_group_name": true,
+ "endpoint": true,
+ "engine_version_actual": true,
+ "hosted_zone_id": true,
+ "iam_roles": true,
+ "id": true,
+ "kms_key_id": true,
+ "network_type": true,
+ "reader_endpoint": true,
+ "restore_to_point_in_time": [],
+ "s3_import": [],
+ "scaling_configuration": [],
+ "serverlessv2_scaling_configuration": [],
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {},
+ "vpc_security_group_ids": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "availability_zones": [],
+ "cluster_members": [],
+ "iam_roles": [],
+ "master_password": true,
+ "restore_to_point_in_time": [],
+ "s3_import": [],
+ "scaling_configuration": [],
+ "serverlessv2_scaling_configuration": [],
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {},
+ "vpc_security_group_ids": []
+ }
+ }
+ },
+ {
+ "address": "module.aurora-db-green.aws_rds_cluster_instance.this[\"one\"]",
+ "module_address": "module.aurora-db-green",
+ "mode": "managed",
+ "type": "aws_rds_cluster_instance",
+ "name": "this",
+ "index": "one",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "auto_minor_version_upgrade": false,
+ "copy_tags_to_snapshot": true,
+ "db_subnet_group_name": "habase-test-rds-subnets-green",
+ "engine": "aurora-postgresql",
+ "engine_version": "11.16",
+ "identifier": "habase-test-rds-green-one",
+ "instance_class": "db.r6g.xlarge",
+ "monitoring_interval": 0,
+ "performance_insights_enabled": true,
+ "performance_insights_retention_period": 31,
+ "preferred_maintenance_window": "mon:02:00-mon:03:00",
+ "promotion_tier": 0,
+ "publicly_accessible": false,
+ "tags": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "iriusrisk-habase-test-rds-green",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": null,
+ "delete": null,
+ "update": null
+ }
+ },
+ "after_unknown": {
+ "apply_immediately": true,
+ "arn": true,
+ "availability_zone": true,
+ "ca_cert_identifier": true,
+ "cluster_identifier": true,
+ "db_parameter_group_name": true,
+ "dbi_resource_id": true,
+ "endpoint": true,
+ "engine_version_actual": true,
+ "id": true,
+ "identifier_prefix": true,
+ "kms_key_id": true,
+ "monitoring_role_arn": true,
+ "network_type": true,
+ "performance_insights_kms_key_id": true,
+ "port": true,
+ "preferred_backup_window": true,
+ "storage_encrypted": true,
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {},
+ "writer": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {}
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb.this[0]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "access_logs": [],
+ "customer_owned_ipv4_pool": null,
+ "desync_mitigation_mode": "defensive",
+ "drop_invalid_header_fields": false,
+ "enable_cross_zone_load_balancing": null,
+ "enable_deletion_protection": false,
+ "enable_http2": true,
+ "enable_waf_fail_open": false,
+ "idle_timeout": 900,
+ "internal": false,
+ "ip_address_type": "ipv4",
+ "load_balancer_type": "application",
+ "name": "habase-test-alb",
+ "name_prefix": null,
+ "preserve_host_header": false,
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": {
+ "create": "10m",
+ "delete": "10m",
+ "update": "10m"
+ }
+ },
+ "after_unknown": {
+ "access_logs": [],
+ "arn": true,
+ "arn_suffix": true,
+ "dns_name": true,
+ "id": true,
+ "security_groups": true,
+ "subnet_mapping": true,
+ "subnets": true,
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {},
+ "vpc_id": true,
+ "zone_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "access_logs": [],
+ "security_groups": [],
+ "subnet_mapping": [],
+ "subnets": [],
+ "tags": {},
+ "tags_all": {},
+ "timeouts": {}
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp[0]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_http_tcp",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "alpn_policy": null,
+ "certificate_arn": null,
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [
+ {
+ "host": "#{host}",
+ "path": "/#{path}",
+ "port": "443",
+ "protocol": "HTTPS",
+ "query": "#{query}",
+ "status_code": "HTTP_302"
+ }
+ ],
+ "target_group_arn": null,
+ "type": "redirect"
+ }
+ ],
+ "port": 80,
+ "protocol": "HTTP",
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "order": true,
+ "redirect": [
+ {}
+ ]
+ }
+ ],
+ "id": true,
+ "load_balancer_arn": true,
+ "ssl_policy": true,
+ "tags": {},
+ "tags_all": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [
+ {}
+ ]
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener.frontend_https[0]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_https",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "alpn_policy": null,
+ "certificate_arn": "arn:aws:iam::154977180039:server-certificate/wildcard-iriusrisk-com-until-27-oct-2023",
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [],
+ "type": "forward"
+ }
+ ],
+ "port": 443,
+ "protocol": "HTTPS",
+ "ssl_policy": "ELBSecurityPolicy-2016-08",
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "order": true,
+ "redirect": [],
+ "target_group_arn": true
+ }
+ ],
+ "id": true,
+ "load_balancer_arn": true,
+ "tags": {},
+ "tags_all": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "default_action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_listener_rule.https_listener_rule[0]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb_listener_rule",
+ "name": "https_listener_rule",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": [],
+ "type": "forward"
+ }
+ ],
+ "condition": [
+ {
+ "host_header": [],
+ "http_header": [],
+ "http_request_method": [],
+ "path_pattern": [
+ {
+ "values": [
+ "/api",
+ "/api/*"
+ ]
+ }
+ ],
+ "query_string": [],
+ "source_ip": []
+ }
+ ],
+ "tags": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-alb",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "after_unknown": {
+ "action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "order": true,
+ "redirect": [],
+ "target_group_arn": true
+ }
+ ],
+ "arn": true,
+ "condition": [
+ {
+ "host_header": [],
+ "http_header": [],
+ "http_request_method": [],
+ "path_pattern": [
+ {
+ "values": [
+ false,
+ false
+ ]
+ }
+ ],
+ "query_string": [],
+ "source_ip": []
+ }
+ ],
+ "id": true,
+ "listener_arn": true,
+ "priority": true,
+ "tags": {},
+ "tags_all": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "action": [
+ {
+ "authenticate_cognito": [],
+ "authenticate_oidc": [],
+ "fixed_response": [],
+ "forward": [],
+ "redirect": []
+ }
+ ],
+ "condition": [
+ {
+ "host_header": [],
+ "http_header": [],
+ "http_request_method": [],
+ "path_pattern": [
+ {
+ "values": [
+ false,
+ false
+ ]
+ }
+ ],
+ "query_string": [],
+ "source_ip": []
+ }
+ ],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_target_group.main[0]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "main",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "connection_termination": false,
+ "deregistration_delay": "30",
+ "health_check": [
+ {
+ "enabled": true,
+ "healthy_threshold": 4,
+ "interval": 20,
+ "path": "/health",
+ "port": "traffic-port",
+ "protocol": "HTTP",
+ "timeout": 5,
+ "unhealthy_threshold": 2
+ }
+ ],
+ "lambda_multi_value_headers_enabled": false,
+ "load_balancing_algorithm_type": "round_robin",
+ "name": "habase-test-web-TG",
+ "name_prefix": null,
+ "port": 8080,
+ "protocol": "HTTP",
+ "proxy_protocol_v2": false,
+ "slow_start": 0,
+ "stickiness": [
+ {
+ "cookie_duration": 600,
+ "cookie_name": null,
+ "enabled": true,
+ "type": "lb_cookie"
+ }
+ ],
+ "tags": {
+ "Name": "habase-test-web-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-web-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "target_type": "instance"
+ },
+ "after_unknown": {
+ "arn": true,
+ "arn_suffix": true,
+ "health_check": [
+ {
+ "matcher": true
+ }
+ ],
+ "id": true,
+ "ip_address_type": true,
+ "preserve_client_ip": true,
+ "protocol_version": true,
+ "stickiness": [
+ {}
+ ],
+ "tags": {},
+ "tags_all": {},
+ "target_failover": true,
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "health_check": [
+ {}
+ ],
+ "stickiness": [
+ {}
+ ],
+ "tags": {},
+ "tags_all": {},
+ "target_failover": []
+ }
+ }
+ },
+ {
+ "address": "module.iriusrisk_alb.aws_lb_target_group.main[1]",
+ "module_address": "module.iriusrisk_alb",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "main",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "connection_termination": false,
+ "deregistration_delay": "30",
+ "health_check": [
+ {
+ "enabled": true,
+ "healthy_threshold": 4,
+ "interval": 20,
+ "path": "/health",
+ "port": "traffic-port",
+ "protocol": "HTTP",
+ "timeout": 5,
+ "unhealthy_threshold": 2
+ }
+ ],
+ "lambda_multi_value_headers_enabled": false,
+ "load_balancing_algorithm_type": "round_robin",
+ "name": "habase-test-api-TG",
+ "name_prefix": null,
+ "port": 8080,
+ "protocol": "HTTP",
+ "proxy_protocol_v2": false,
+ "slow_start": 0,
+ "tags": {
+ "Name": "habase-test-api-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-api-TG",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "target_type": "instance"
+ },
+ "after_unknown": {
+ "arn": true,
+ "arn_suffix": true,
+ "health_check": [
+ {
+ "matcher": true
+ }
+ ],
+ "id": true,
+ "ip_address_type": true,
+ "preserve_client_ip": true,
+ "protocol_version": true,
+ "stickiness": true,
+ "tags": {},
+ "tags_all": {},
+ "target_failover": true,
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "health_check": [
+ {}
+ ],
+ "stickiness": [],
+ "tags": {},
+ "tags_all": {},
+ "target_failover": []
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_internet_gateway.this[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "tags": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route.public_internet_gateway[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "carrier_gateway_id": null,
+ "core_network_arn": null,
+ "destination_cidr_block": "0.0.0.0/0",
+ "destination_ipv6_cidr_block": null,
+ "destination_prefix_list_id": null,
+ "egress_only_gateway_id": null,
+ "local_gateway_id": null,
+ "nat_gateway_id": null,
+ "timeouts": {
+ "create": "5m",
+ "delete": null,
+ "update": null
+ },
+ "transit_gateway_id": null,
+ "vpc_endpoint_id": null,
+ "vpc_peering_connection_id": null
+ },
+ "after_unknown": {
+ "gateway_id": true,
+ "id": true,
+ "instance_id": true,
+ "instance_owner_id": true,
+ "network_interface_id": true,
+ "origin": true,
+ "route_table_id": true,
+ "state": true,
+ "timeouts": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "timeouts": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "tags": {
+ "Name": "habase-test-VPC-public",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "owner_id": true,
+ "propagating_vgws": true,
+ "route": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "propagating_vgws": [],
+ "route": [],
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "gateway_id": null
+ },
+ "after_unknown": {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "gateway_id": null
+ },
+ "after_unknown": {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "gateway_id": null
+ },
+ "after_unknown": {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_route_table_association.public[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "gateway_id": null
+ },
+ "after_unknown": {
+ "id": true,
+ "route_table_id": true,
+ "subnet_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.125.20.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.private[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.125.21.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": false,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-private-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1a",
+ "cidr_block": "10.125.10.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-public-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public-eu-west-1a",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_subnet.public[1]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "index": 1,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assign_ipv6_address_on_creation": false,
+ "availability_zone": "eu-west-1b",
+ "cidr_block": "10.125.11.0/24",
+ "customer_owned_ipv4_pool": null,
+ "enable_dns64": false,
+ "enable_resource_name_dns_a_record_on_launch": false,
+ "enable_resource_name_dns_aaaa_record_on_launch": false,
+ "ipv6_cidr_block": null,
+ "ipv6_native": false,
+ "map_customer_owned_ip_on_launch": null,
+ "map_public_ip_on_launch": true,
+ "outpost_arn": null,
+ "tags": {
+ "Name": "habase-test-VPC-public-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC-public-eu-west-1b",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "availability_zone_id": true,
+ "id": true,
+ "ipv6_cidr_block_association_id": true,
+ "owner_id": true,
+ "private_dns_hostname_type_on_launch": true,
+ "tags": {},
+ "tags_all": {},
+ "vpc_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "module.vpc.aws_vpc.this[0]",
+ "module_address": "module.vpc",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "index": 0,
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "assign_generated_ipv6_cidr_block": false,
+ "cidr_block": "10.125.0.0/16",
+ "enable_dns_hostnames": true,
+ "enable_dns_support": true,
+ "instance_tenancy": "default",
+ "ipv4_ipam_pool_id": null,
+ "ipv4_netmask_length": null,
+ "ipv6_ipam_pool_id": null,
+ "ipv6_netmask_length": null,
+ "tags": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ },
+ "tags_all": {
+ "Name": "habase-test-VPC",
+ "environment": "test",
+ "terraform.repository": "adominfguez-local",
+ "type": "internal"
+ }
+ },
+ "after_unknown": {
+ "arn": true,
+ "default_network_acl_id": true,
+ "default_route_table_id": true,
+ "default_security_group_id": true,
+ "dhcp_options_id": true,
+ "enable_classiclink": true,
+ "enable_classiclink_dns_support": true,
+ "enable_network_address_usage_metrics": true,
+ "id": true,
+ "ipv6_association_id": true,
+ "ipv6_cidr_block": true,
+ "ipv6_cidr_block_network_border_group": true,
+ "main_route_table_id": true,
+ "owner_id": true,
+ "tags": {},
+ "tags_all": {}
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags": {},
+ "tags_all": {}
+ }
+ }
+ },
+ {
+ "address": "time_sleep.wait_180_seconds",
+ "mode": "managed",
+ "type": "time_sleep",
+ "name": "wait_180_seconds",
+ "provider_name": "registry.terraform.io/hashicorp/time",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "create_duration": "180s",
+ "destroy_duration": null,
+ "triggers": null
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}
+ }
+ },
+ {
+ "address": "tls_private_key.ec_private",
+ "mode": "managed",
+ "type": "tls_private_key",
+ "name": "ec_private",
+ "provider_name": "registry.terraform.io/hashicorp/tls",
+ "change": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": {
+ "algorithm": "ECDSA",
+ "ecdsa_curve": "P256",
+ "rsa_bits": 2048
+ },
+ "after_unknown": {
+ "id": true,
+ "private_key_openssh": true,
+ "private_key_pem": true,
+ "private_key_pem_pkcs8": true,
+ "public_key_fingerprint_md5": true,
+ "public_key_fingerprint_sha256": true,
+ "public_key_openssh": true,
+ "public_key_pem": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "private_key_openssh": true,
+ "private_key_pem": true,
+ "private_key_pem_pkcs8": true
+ }
+ }
+ }
+ ],
+ "output_changes": {
+ "analytics_build": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "asg_api_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "asg_web_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "aurora_db_sg_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "aws_ami_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "ami-0893e738795aad326",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "deployment_flag": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "green",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "iriusrisk_lb_sg_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "iriusrisk_version": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "4.12.1",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "lb_arn": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "lb_dns_name": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "lb_https_listeners_arn": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": [
+ null
+ ],
+ "after_unknown": [
+ true
+ ],
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "log_group": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "/clients/test/habase-test",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "private_subnets": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": [
+ null,
+ null
+ ],
+ "after_unknown": [
+ true,
+ true
+ ],
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "public_subnets": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": [
+ null,
+ null
+ ],
+ "after_unknown": [
+ true,
+ true
+ ],
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "rds_arn": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "rds_endpoint": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "rds_identifier": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "startleft_version": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "1.10.0",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "vpc_id": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "web_endpoint": {
+ "actions": [
+ "create"
+ ],
+ "before": null,
+ "after": "habase-test.iriusrisk.com",
+ "after_unknown": false,
+ "before_sensitive": false,
+ "after_sensitive": false
+ }
+ },
+ "prior_state": {
+ "format_version": "1.0",
+ "terraform_version": "1.3.1",
+ "values": {
+ "outputs": {
+ "analytics_build": {
+ "sensitive": false,
+ "value": "",
+ "type": "string"
+ },
+ "aws_ami_id": {
+ "sensitive": false,
+ "value": "ami-0893e738795aad326",
+ "type": "string"
+ },
+ "deployment_flag": {
+ "sensitive": false,
+ "value": "green",
+ "type": "string"
+ },
+ "iriusrisk_version": {
+ "sensitive": false,
+ "value": "4.12.1",
+ "type": "string"
+ },
+ "log_group": {
+ "sensitive": false,
+ "value": "/clients/test/habase-test",
+ "type": "string"
+ },
+ "startleft_version": {
+ "sensitive": false,
+ "value": "1.10.0",
+ "type": "string"
+ },
+ "web_endpoint": {
+ "sensitive": false,
+ "value": "habase-test.iriusrisk.com",
+ "type": "string"
+ }
+ },
+ "root_module": {
+ "resources": [
+ {
+ "address": "data.aws_ami.iriusrisk",
+ "mode": "data",
+ "type": "aws_ami",
+ "name": "iriusrisk",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "architecture": "x86_64",
+ "arn": "arn:aws:ec2:eu-west-1::image/ami-0893e738795aad326",
+ "block_device_mappings": [
+ {
+ "device_name": "/dev/xvda",
+ "ebs": {
+ "delete_on_termination": "true",
+ "encrypted": "true",
+ "iops": "0",
+ "snapshot_id": "snap-050f8fb274f4e42a1",
+ "throughput": "0",
+ "volume_size": "32",
+ "volume_type": "gp2"
+ },
+ "no_device": "",
+ "virtual_name": ""
+ }
+ ],
+ "boot_mode": "",
+ "creation_date": "2023-02-09T17:36:34.000Z",
+ "deprecation_time": "",
+ "description": "",
+ "ena_support": true,
+ "executable_users": null,
+ "filter": [
+ {
+ "name": "name",
+ "values": [
+ "IriusRisk_HA_4.12.1*"
+ ]
+ }
+ ],
+ "hypervisor": "xen",
+ "id": "ami-0893e738795aad326",
+ "image_id": "ami-0893e738795aad326",
+ "image_location": "154977180039/IriusRisk_HA_4.12.1_202302091731",
+ "image_owner_alias": "",
+ "image_type": "machine",
+ "imds_support": "",
+ "include_deprecated": false,
+ "kernel_id": "",
+ "most_recent": true,
+ "name": "IriusRisk_HA_4.12.1_202302091731",
+ "name_regex": null,
+ "owner_id": "154977180039",
+ "owners": [
+ "154977180039"
+ ],
+ "platform": "",
+ "platform_details": "Linux/UNIX",
+ "product_codes": [],
+ "public": false,
+ "ramdisk_id": "",
+ "root_device_name": "/dev/xvda",
+ "root_device_type": "ebs",
+ "root_snapshot_id": "snap-050f8fb274f4e42a1",
+ "sriov_net_support": "simple",
+ "state": "available",
+ "state_reason": {
+ "code": "UNSET",
+ "message": "UNSET"
+ },
+ "tags": {
+ "Name": "IriusRisk_HA_4.12.1_202302091731",
+ "type": "prod"
+ },
+ "timeouts": null,
+ "tpm_support": "",
+ "usage_operation": "RunInstances",
+ "virtualization_type": "hvm"
+ },
+ "sensitive_values": {
+ "block_device_mappings": [
+ {
+ "ebs": {}
+ }
+ ],
+ "filter": [
+ {
+ "values": [
+ false
+ ]
+ }
+ ],
+ "owners": [
+ false
+ ],
+ "product_codes": [],
+ "state_reason": {},
+ "tags": {}
+ }
+ }
+ ],
+ "child_modules": [
+ {
+ "resources": [
+ {
+ "address": "module.aurora-db-blue.data.aws_iam_policy_document.monitoring_rds_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "monitoring_rds_assume_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "id": "1813475199",
+ "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"monitoring.rds.amazonaws.com\"\n }\n }\n ]\n}",
+ "override_json": null,
+ "override_policy_documents": null,
+ "policy_id": null,
+ "source_json": null,
+ "source_policy_documents": null,
+ "statement": [
+ {
+ "actions": [
+ "sts:AssumeRole"
+ ],
+ "condition": [],
+ "effect": "Allow",
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [
+ {
+ "identifiers": [
+ "monitoring.rds.amazonaws.com"
+ ],
+ "type": "Service"
+ }
+ ],
+ "resources": [],
+ "sid": ""
+ }
+ ],
+ "version": "2012-10-17"
+ },
+ "sensitive_values": {
+ "statement": [
+ {
+ "actions": [
+ false
+ ],
+ "condition": [],
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [
+ {
+ "identifiers": [
+ false
+ ]
+ }
+ ],
+ "resources": []
+ }
+ ]
+ }
+ },
+ {
+ "address": "module.aurora-db-blue.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values": {}
+ }
+ ],
+ "address": "module.aurora-db-blue"
+ },
+ {
+ "resources": [
+ {
+ "address": "module.aurora-db-green.data.aws_iam_policy_document.monitoring_rds_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "monitoring_rds_assume_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "id": "1813475199",
+ "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"monitoring.rds.amazonaws.com\"\n }\n }\n ]\n}",
+ "override_json": null,
+ "override_policy_documents": null,
+ "policy_id": null,
+ "source_json": null,
+ "source_policy_documents": null,
+ "statement": [
+ {
+ "actions": [
+ "sts:AssumeRole"
+ ],
+ "condition": [],
+ "effect": "Allow",
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [
+ {
+ "identifiers": [
+ "monitoring.rds.amazonaws.com"
+ ],
+ "type": "Service"
+ }
+ ],
+ "resources": [],
+ "sid": ""
+ }
+ ],
+ "version": "2012-10-17"
+ },
+ "sensitive_values": {
+ "statement": [
+ {
+ "actions": [
+ false
+ ],
+ "condition": [],
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [
+ {
+ "identifiers": [
+ false
+ ]
+ }
+ ],
+ "resources": []
+ }
+ ]
+ }
+ },
+ {
+ "address": "module.aurora-db-green.data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "dns_suffix": "amazonaws.com",
+ "id": "aws",
+ "partition": "aws",
+ "reverse_dns_prefix": "com.amazonaws"
+ },
+ "sensitive_values": {}
+ }
+ ],
+ "address": "module.aurora-db-green"
+ }
+ ]
+ }
+ }
+ },
+ "configuration": {
+ "provider_config": {
+ "aws": {
+ "name": "aws",
+ "full_name": "registry.terraform.io/hashicorp/aws",
+ "version_constraint": "\u003e= 3.74.0",
+ "expressions": {
+ "profile": {
+ "references": [
+ "var.aws_profile"
+ ]
+ },
+ "region": {
+ "references": [
+ "var.aws_region"
+ ]
+ }
+ }
+ },
+ "cloudflare": {
+ "name": "cloudflare",
+ "full_name": "registry.terraform.io/cloudflare/cloudflare",
+ "version_constraint": "~\u003e 3.0",
+ "expressions": {
+ "api_token": {
+ "references": [
+ "var.cloudflare_token"
+ ]
+ }
+ }
+ },
+ "module.aurora-db-blue:random": {
+ "name": "random",
+ "full_name": "registry.terraform.io/hashicorp/random",
+ "version_constraint": "\u003e= 2.2.0",
+ "module_address": "module.aurora-db-blue"
+ },
+ "module.aurora-db-green:random": {
+ "name": "random",
+ "full_name": "registry.terraform.io/hashicorp/random",
+ "version_constraint": "\u003e= 2.2.0",
+ "module_address": "module.aurora-db-green"
+ },
+ "newrelic": {
+ "name": "newrelic",
+ "full_name": "registry.terraform.io/newrelic/newrelic",
+ "version_constraint": "~\u003e 2.49.1",
+ "expressions": {
+ "account_id": {
+ "references": [
+ "var.newrelic_account_id"
+ ]
+ },
+ "api_key": {
+ "references": [
+ "var.newrelic_api_key"
+ ]
+ },
+ "region": {
+ "references": [
+ "var.newrelic_region"
+ ]
+ }
+ }
+ },
+ "template": {
+ "name": "template",
+ "full_name": "registry.terraform.io/hashicorp/template"
+ },
+ "time": {
+ "name": "time",
+ "full_name": "registry.terraform.io/hashicorp/time"
+ },
+ "tls": {
+ "name": "tls",
+ "full_name": "registry.terraform.io/hashicorp/tls"
+ }
+ },
+ "root_module": {
+ "outputs": {
+ "analytics_build": {
+ "expression": {
+ "references": [
+ "var.analytics_build"
+ ]
+ }
+ },
+ "asg_api_id": {
+ "expression": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_api.id",
+ "aws_autoscaling_group.iriusrisk_api"
+ ]
+ }
+ },
+ "asg_web_id": {
+ "expression": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_web.id",
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ }
+ },
+ "aurora_db_sg_id": {
+ "expression": {
+ "references": [
+ "aws_security_group.aurora-db-sg.id",
+ "aws_security_group.aurora-db-sg"
+ ]
+ }
+ },
+ "aws_ami_id": {
+ "expression": {
+ "references": [
+ "data.aws_ami.iriusrisk.id",
+ "data.aws_ami.iriusrisk"
+ ]
+ }
+ },
+ "deployment_flag": {
+ "expression": {
+ "references": [
+ "local.local_deployment_flag"
+ ]
+ }
+ },
+ "iriusrisk_lb_sg_id": {
+ "expression": {
+ "references": [
+ "aws_security_group.alb.id",
+ "aws_security_group.alb"
+ ]
+ }
+ },
+ "iriusrisk_version": {
+ "expression": {
+ "references": [
+ "var.iriusrisk_version"
+ ]
+ }
+ },
+ "lb_arn": {
+ "expression": {
+ "references": [
+ "module.iriusrisk_alb.lb_arn",
+ "module.iriusrisk_alb"
+ ]
+ }
+ },
+ "lb_dns_name": {
+ "expression": {
+ "references": [
+ "module.iriusrisk_alb.lb_dns_name",
+ "module.iriusrisk_alb"
+ ]
+ }
+ },
+ "lb_https_listeners_arn": {
+ "expression": {
+ "references": [
+ "module.iriusrisk_alb.https_listener_arns",
+ "module.iriusrisk_alb"
+ ]
+ }
+ },
+ "log_group": {
+ "expression": {
+ "references": [
+ "aws_cloudwatch_log_group.cw_log_group.name",
+ "aws_cloudwatch_log_group.cw_log_group"
+ ]
+ }
+ },
+ "private_subnets": {
+ "expression": {
+ "references": [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ }
+ },
+ "public_subnets": {
+ "expression": {
+ "references": [
+ "module.vpc.public_subnets",
+ "module.vpc"
+ ]
+ }
+ },
+ "rds_arn": {
+ "expression": {
+ "references": [
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_arn",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_arn",
+ "module.aurora-db-blue"
+ ]
+ }
+ },
+ "rds_endpoint": {
+ "expression": {
+ "references": [
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_endpoint",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_endpoint",
+ "module.aurora-db-blue"
+ ]
+ }
+ },
+ "rds_identifier": {
+ "expression": {
+ "references": [
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_id",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_id",
+ "module.aurora-db-blue"
+ ]
+ }
+ },
+ "startleft_version": {
+ "expression": {
+ "references": [
+ "var.startleft_version"
+ ]
+ }
+ },
+ "vpc_id": {
+ "expression": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "web_endpoint": {
+ "expression": {
+ "references": [
+ "local.web_endpoint"
+ ]
+ }
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_autoscaling_group.iriusrisk_api",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_api",
+ "provider_config_key": "aws",
+ "expressions": {
+ "desired_capacity": {
+ "references": [
+ "var.api_desired_capacity"
+ ]
+ },
+ "enabled_metrics": {
+ "constant_value": [
+ "GroupMinSize",
+ "GroupMaxSize",
+ "GroupDesiredCapacity",
+ "GroupInServiceInstances",
+ "GroupPendingInstances",
+ "GroupStandbyInstances",
+ "GroupTerminatingInstances",
+ "GroupTotalInstances",
+ "GroupInServiceCapacity",
+ "GroupPendingCapacity",
+ "GroupStandbyCapacity",
+ "GroupTerminatingCapacity",
+ "GroupTotalCapacity",
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity"
+ ]
+ },
+ "force_delete": {
+ "constant_value": true
+ },
+ "health_check_grace_period": {
+ "constant_value": 1100
+ },
+ "health_check_type": {
+ "constant_value": "ELB"
+ },
+ "launch_template": [
+ {
+ "id": {
+ "references": [
+ "aws_launch_template.iriusrisk.id",
+ "aws_launch_template.iriusrisk"
+ ]
+ },
+ "version": {
+ "constant_value": "$Latest"
+ }
+ }
+ ],
+ "max_size": {
+ "references": [
+ "var.api_max_size"
+ ]
+ },
+ "metrics_granularity": {
+ "constant_value": "1Minute"
+ },
+ "min_size": {
+ "references": [
+ "var.api_min_size"
+ ]
+ },
+ "name": {
+ "references": [
+ "local.iriusrisk_api_asg_name"
+ ]
+ },
+ "tag": [
+ {
+ "key": {
+ "constant_value": "Name"
+ },
+ "propagate_at_launch": {
+ "constant_value": true
+ },
+ "value": {
+ "references": [
+ "var.stack_name"
+ ]
+ }
+ },
+ {
+ "key": {
+ "constant_value": "asg-name"
+ },
+ "propagate_at_launch": {
+ "constant_value": true
+ },
+ "value": {
+ "references": [
+ "local.iriusrisk_api_asg_name"
+ ]
+ }
+ }
+ ],
+ "target_group_arns": {
+ "references": [
+ "module.iriusrisk_alb.target_group_arns[1]",
+ "module.iriusrisk_alb.target_group_arns",
+ "module.iriusrisk_alb"
+ ]
+ },
+ "vpc_zone_identifier": {
+ "references": [
+ "module.vpc.public_subnets",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_autoscaling_group.iriusrisk_web",
+ "mode": "managed",
+ "type": "aws_autoscaling_group",
+ "name": "iriusrisk_web",
+ "provider_config_key": "aws",
+ "expressions": {
+ "desired_capacity": {
+ "references": [
+ "var.web_desired_capacity"
+ ]
+ },
+ "enabled_metrics": {
+ "constant_value": [
+ "GroupMinSize",
+ "GroupMaxSize",
+ "GroupDesiredCapacity",
+ "GroupInServiceInstances",
+ "GroupPendingInstances",
+ "GroupStandbyInstances",
+ "GroupTerminatingInstances",
+ "GroupTotalInstances",
+ "GroupInServiceCapacity",
+ "GroupPendingCapacity",
+ "GroupStandbyCapacity",
+ "GroupTerminatingCapacity",
+ "GroupTotalCapacity",
+ "GroupAndWarmPoolDesiredCapacity",
+ "GroupAndWarmPoolTotalCapacity"
+ ]
+ },
+ "force_delete": {
+ "constant_value": true
+ },
+ "health_check_grace_period": {
+ "constant_value": 1100
+ },
+ "health_check_type": {
+ "constant_value": "ELB"
+ },
+ "launch_template": [
+ {
+ "id": {
+ "references": [
+ "aws_launch_template.iriusrisk.id",
+ "aws_launch_template.iriusrisk"
+ ]
+ },
+ "version": {
+ "constant_value": "$Latest"
+ }
+ }
+ ],
+ "max_size": {
+ "references": [
+ "var.web_max_size"
+ ]
+ },
+ "metrics_granularity": {
+ "constant_value": "1Minute"
+ },
+ "min_size": {
+ "references": [
+ "var.web_min_size"
+ ]
+ },
+ "name": {
+ "references": [
+ "local.iriusrisk_web_asg_name"
+ ]
+ },
+ "tag": [
+ {
+ "key": {
+ "constant_value": "Name"
+ },
+ "propagate_at_launch": {
+ "constant_value": true
+ },
+ "value": {
+ "references": [
+ "var.stack_name"
+ ]
+ }
+ },
+ {
+ "key": {
+ "constant_value": "asg-name"
+ },
+ "propagate_at_launch": {
+ "constant_value": true
+ },
+ "value": {
+ "references": [
+ "local.iriusrisk_web_asg_name"
+ ]
+ }
+ }
+ ],
+ "target_group_arns": {
+ "references": [
+ "module.iriusrisk_alb.target_group_arns[0]",
+ "module.iriusrisk_alb.target_group_arns",
+ "module.iriusrisk_alb"
+ ]
+ },
+ "vpc_zone_identifier": {
+ "references": [
+ "module.vpc.public_subnets",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_down",
+ "provider_config_key": "aws",
+ "expressions": {
+ "adjustment_type": {
+ "constant_value": "ChangeInCapacity"
+ },
+ "autoscaling_group_name": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_api.name",
+ "aws_autoscaling_group.iriusrisk_api"
+ ]
+ },
+ "cooldown": {
+ "constant_value": 400
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "scaling_adjustment": {
+ "constant_value": -1
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_api_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_api_scaling_up",
+ "provider_config_key": "aws",
+ "expressions": {
+ "adjustment_type": {
+ "constant_value": "ChangeInCapacity"
+ },
+ "autoscaling_group_name": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_api.name",
+ "aws_autoscaling_group.iriusrisk_api"
+ ]
+ },
+ "cooldown": {
+ "constant_value": 400
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "scaling_adjustment": {
+ "constant_value": 2
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_down",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_down",
+ "provider_config_key": "aws",
+ "expressions": {
+ "adjustment_type": {
+ "constant_value": "ChangeInCapacity"
+ },
+ "autoscaling_group_name": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_web.name",
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ "cooldown": {
+ "constant_value": 400
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "scaling_adjustment": {
+ "constant_value": -1
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_autoscaling_policy.iriusrisk_web_scaling_up",
+ "mode": "managed",
+ "type": "aws_autoscaling_policy",
+ "name": "iriusrisk_web_scaling_up",
+ "provider_config_key": "aws",
+ "expressions": {
+ "adjustment_type": {
+ "constant_value": "ChangeInCapacity"
+ },
+ "autoscaling_group_name": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_web.name",
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ "cooldown": {
+ "constant_value": 400
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "scaling_adjustment": {
+ "constant_value": 2
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_cloudwatch_log_group.cw_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "cw_log_group",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.environment",
+ "var.stack_name"
+ ]
+ },
+ "retention_in_days": {
+ "constant_value": 365
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_down",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alarm_actions": {
+ "references": [
+ "aws_autoscaling_policy.iriusrisk_api_scaling_down.arn",
+ "aws_autoscaling_policy.iriusrisk_api_scaling_down"
+ ]
+ },
+ "alarm_description": {
+ "constant_value": "Scale-down if CPU \u003c 30% for 10 minutes"
+ },
+ "alarm_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "comparison_operator": {
+ "constant_value": "LessThanThreshold"
+ },
+ "dimensions": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_api.name",
+ "aws_autoscaling_group.iriusrisk_api"
+ ]
+ },
+ "evaluation_periods": {
+ "constant_value": 2
+ },
+ "metric_name": {
+ "constant_value": "CPUUtilization"
+ },
+ "namespace": {
+ "constant_value": "AWS/EC2"
+ },
+ "period": {
+ "constant_value": 300
+ },
+ "statistic": {
+ "constant_value": "Average"
+ },
+ "threshold": {
+ "constant_value": 30
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_api_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_api_cloudwatch_alarm_up",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alarm_actions": {
+ "references": [
+ "aws_autoscaling_policy.iriusrisk_api_scaling_up.arn",
+ "aws_autoscaling_policy.iriusrisk_api_scaling_up"
+ ]
+ },
+ "alarm_description": {
+ "constant_value": "Scale-up if CPU \u003e 70% for 2 minutes"
+ },
+ "alarm_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "comparison_operator": {
+ "constant_value": "GreaterThanThreshold"
+ },
+ "dimensions": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_api.name",
+ "aws_autoscaling_group.iriusrisk_api"
+ ]
+ },
+ "evaluation_periods": {
+ "constant_value": 1
+ },
+ "metric_name": {
+ "constant_value": "CPUUtilization"
+ },
+ "namespace": {
+ "constant_value": "AWS/EC2"
+ },
+ "period": {
+ "constant_value": 120
+ },
+ "statistic": {
+ "constant_value": "Average"
+ },
+ "threshold": {
+ "constant_value": 70
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_db_cloudwatch_alarm_above_600",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_db_cloudwatch_alarm_above_600",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alarm_description": {
+ "constant_value": "DB connections \u003e 600"
+ },
+ "alarm_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "comparison_operator": {
+ "constant_value": "GreaterThanThreshold"
+ },
+ "dimensions": {
+ "references": [
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_instances.one.identifier",
+ "module.aurora-db-green.cluster_instances.one",
+ "module.aurora-db-green.cluster_instances",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_instances.one.identifier",
+ "module.aurora-db-blue.cluster_instances.one",
+ "module.aurora-db-blue.cluster_instances",
+ "module.aurora-db-blue"
+ ]
+ },
+ "evaluation_periods": {
+ "constant_value": 1
+ },
+ "metric_name": {
+ "constant_value": "DatabaseConnections"
+ },
+ "namespace": {
+ "constant_value": "AWS/RDS"
+ },
+ "period": {
+ "constant_value": 60
+ },
+ "statistic": {
+ "constant_value": "Average"
+ },
+ "threshold": {
+ "constant_value": 600
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_down",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_down",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alarm_actions": {
+ "references": [
+ "aws_autoscaling_policy.iriusrisk_web_scaling_down.arn",
+ "aws_autoscaling_policy.iriusrisk_web_scaling_down"
+ ]
+ },
+ "alarm_description": {
+ "constant_value": "Scale-down if CPU \u003c 30% for 10 minutes"
+ },
+ "alarm_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "comparison_operator": {
+ "constant_value": "LessThanThreshold"
+ },
+ "dimensions": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_web.name",
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ "evaluation_periods": {
+ "constant_value": 2
+ },
+ "metric_name": {
+ "constant_value": "CPUUtilization"
+ },
+ "namespace": {
+ "constant_value": "AWS/EC2"
+ },
+ "period": {
+ "constant_value": 300
+ },
+ "statistic": {
+ "constant_value": "Average"
+ },
+ "threshold": {
+ "constant_value": 30
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_cloudwatch_metric_alarm.iriusrisk_web_cloudwatch_alarm_up",
+ "mode": "managed",
+ "type": "aws_cloudwatch_metric_alarm",
+ "name": "iriusrisk_web_cloudwatch_alarm_up",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alarm_actions": {
+ "references": [
+ "aws_autoscaling_policy.iriusrisk_web_scaling_up.arn",
+ "aws_autoscaling_policy.iriusrisk_web_scaling_up"
+ ]
+ },
+ "alarm_description": {
+ "constant_value": "Scale-up if CPU \u003e 70% for 5 minutes"
+ },
+ "alarm_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "comparison_operator": {
+ "constant_value": "GreaterThanThreshold"
+ },
+ "dimensions": {
+ "references": [
+ "aws_autoscaling_group.iriusrisk_web.name",
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ "evaluation_periods": {
+ "constant_value": 1
+ },
+ "metric_name": {
+ "constant_value": "CPUUtilization"
+ },
+ "namespace": {
+ "constant_value": "AWS/EC2"
+ },
+ "period": {
+ "constant_value": 300
+ },
+ "statistic": {
+ "constant_value": "Average"
+ },
+ "threshold": {
+ "constant_value": 70
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_iam_instance_profile.instance_profile",
+ "mode": "managed",
+ "type": "aws_iam_instance_profile",
+ "name": "instance_profile",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.access-role.name",
+ "aws_iam_role.access-role"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_iam_policy.secret-access",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "secret-access",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "policy": {
+ "references": [
+ "var.aws_region",
+ "var.stack_name"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_iam_role.access-role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "access-role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {},
+ "description": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.existing-policies-attachment",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "existing-policies-attachment",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": [
+ "var.iam_policy_arn",
+ "count.index"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.access-role.name",
+ "aws_iam_role.access-role"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.iam_policy_arn"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.secret-access-attachment",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "secret-access-attachment",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": [
+ "aws_iam_policy.secret-access.arn",
+ "aws_iam_policy.secret-access"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.access-role.name",
+ "aws_iam_role.access-role"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_launch_template.iriusrisk",
+ "mode": "managed",
+ "type": "aws_launch_template",
+ "name": "iriusrisk",
+ "provider_config_key": "aws",
+ "expressions": {
+ "block_device_mappings": [
+ {
+ "device_name": {
+ "constant_value": "/dev/xvda"
+ },
+ "ebs": [
+ {
+ "delete_on_termination": {
+ "constant_value": true
+ },
+ "encrypted": {
+ "constant_value": true
+ },
+ "volume_size": {
+ "constant_value": 32
+ },
+ "volume_type": {
+ "constant_value": "gp3"
+ }
+ }
+ ]
+ }
+ ],
+ "iam_instance_profile": [
+ {
+ "name": {
+ "references": [
+ "aws_iam_instance_profile.instance_profile.name",
+ "aws_iam_instance_profile.instance_profile"
+ ]
+ }
+ }
+ ],
+ "image_id": {
+ "references": [
+ "data.aws_ami.iriusrisk.id",
+ "data.aws_ami.iriusrisk"
+ ]
+ },
+ "instance_type": {
+ "references": [
+ "var.ec2_instance_type"
+ ]
+ },
+ "key_name": {
+ "references": [
+ "var.key_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "network_interfaces": [
+ {
+ "associate_public_ip_address": {
+ "constant_value": true
+ },
+ "delete_on_termination": {
+ "constant_value": true
+ },
+ "description": {
+ "constant_value": "primary interface"
+ },
+ "device_index": {
+ "constant_value": 0
+ },
+ "security_groups": {
+ "references": [
+ "aws_security_group.iriusrisk.id",
+ "aws_security_group.iriusrisk"
+ ]
+ }
+ }
+ ],
+ "user_data": {
+ "references": [
+ "data.template_file.iriusrisk.rendered",
+ "data.template_file.iriusrisk"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_secretsmanager_secret.jwt-secret",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret",
+ "name": "jwt-secret",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "recovery_window_in_days": {
+ "constant_value": 0
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_secretsmanager_secret_version.secret-value",
+ "mode": "managed",
+ "type": "aws_secretsmanager_secret_version",
+ "name": "secret-value",
+ "provider_config_key": "aws",
+ "expressions": {
+ "secret_id": {
+ "references": [
+ "aws_secretsmanager_secret.jwt-secret.id",
+ "aws_secretsmanager_secret.jwt-secret"
+ ]
+ },
+ "secret_string": {
+ "references": [
+ "tls_private_key.ec_private.private_key_pem",
+ "tls_private_key.ec_private"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_security_group.alb",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "alb",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Allow access HTTP \u0026 HTTPS traffic to ALB"
+ },
+ "egress": {
+ "constant_value": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": null,
+ "from_port": 0,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "-1",
+ "security_groups": null,
+ "self": null,
+ "to_port": 0
+ }
+ ]
+ },
+ "ingress": {
+ "constant_value": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTP access from the world",
+ "from_port": 80,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "tcp",
+ "security_groups": null,
+ "self": null,
+ "to_port": 80
+ },
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": "HTTPS access from the world",
+ "from_port": 443,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "tcp",
+ "security_groups": null,
+ "self": null,
+ "to_port": 443
+ }
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.stack_name",
+ "var.type"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_security_group.aurora-db-sg",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "aurora-db-sg",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Allow access to RDS database"
+ },
+ "egress": {
+ "constant_value": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": null,
+ "from_port": 0,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "-1",
+ "security_groups": null,
+ "self": null,
+ "to_port": 0
+ }
+ ]
+ },
+ "ingress": {
+ "references": [
+ "aws_security_group.iriusrisk.id",
+ "aws_security_group.iriusrisk"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_security_group.iriusrisk",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "iriusrisk",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Allow access HTTP and SSH traffic to WebServerInstance"
+ },
+ "egress": {
+ "constant_value": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": null,
+ "from_port": 0,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "-1",
+ "security_groups": null,
+ "self": null,
+ "to_port": 0
+ }
+ ]
+ },
+ "ingress": {
+ "references": [
+ "var.bastion_host_cidrs",
+ "aws_security_group.alb.id",
+ "aws_security_group.alb"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "cloudflare_record.dns_cname",
+ "mode": "managed",
+ "type": "cloudflare_record",
+ "name": "dns_cname",
+ "provider_config_key": "cloudflare",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.cloudflare_dns_name"
+ ]
+ },
+ "proxied": {
+ "constant_value": true
+ },
+ "type": {
+ "constant_value": "CNAME"
+ },
+ "value": {
+ "references": [
+ "module.iriusrisk_alb.lb_dns_name",
+ "module.iriusrisk_alb"
+ ]
+ },
+ "zone_id": {
+ "references": [
+ "var.cloudflare_zone_id"
+ ]
+ }
+ },
+ "schema_version": 2
+ },
+ {
+ "address": "newrelic_alert_channel.slack",
+ "mode": "managed",
+ "type": "newrelic_alert_channel",
+ "name": "slack",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "config": [
+ {
+ "channel": {
+ "references": [
+ "var.slack_channel"
+ ]
+ },
+ "url": {
+ "references": [
+ "var.slack_webhook_url"
+ ]
+ }
+ }
+ ],
+ "name": {
+ "references": [
+ "local.newrelic_notification_channel"
+ ]
+ },
+ "type": {
+ "constant_value": "slack"
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_alert_policy.policy",
+ "mode": "managed",
+ "type": "newrelic_alert_policy",
+ "name": "policy",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.cloudflare_dns_name"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_alert_policy_channel.channel_subscribe_api",
+ "mode": "managed",
+ "type": "newrelic_alert_policy_channel",
+ "name": "channel_subscribe_api",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "channel_ids": {
+ "references": [
+ "newrelic_alert_channel.slack[0].id",
+ "newrelic_alert_channel.slack[0]",
+ "newrelic_alert_channel.slack"
+ ]
+ },
+ "policy_id": {
+ "references": [
+ "newrelic_alert_policy.policy[0].id",
+ "newrelic_alert_policy.policy[0]",
+ "newrelic_alert_policy.policy"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_alert_policy_channel.channel_subscribe_web",
+ "mode": "managed",
+ "type": "newrelic_alert_policy_channel",
+ "name": "channel_subscribe_web",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "channel_ids": {
+ "references": [
+ "newrelic_alert_channel.slack[0].id",
+ "newrelic_alert_channel.slack[0]",
+ "newrelic_alert_channel.slack"
+ ]
+ },
+ "policy_id": {
+ "references": [
+ "newrelic_alert_policy.policy[0].id",
+ "newrelic_alert_policy.policy[0]",
+ "newrelic_alert_policy.policy"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_nrql_alert_condition.rds-DBConnection-alert",
+ "mode": "managed",
+ "type": "newrelic_nrql_alert_condition",
+ "name": "rds-DBConnection-alert",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "account_id": {
+ "references": [
+ "var.newrelic_account_id"
+ ]
+ },
+ "aggregation_delay": {
+ "constant_value": 120
+ },
+ "aggregation_method": {
+ "constant_value": "event_flow"
+ },
+ "aggregation_window": {
+ "constant_value": 60
+ },
+ "critical": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 600
+ },
+ "threshold_duration": {
+ "constant_value": 120
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ],
+ "enabled": {
+ "constant_value": true
+ },
+ "fill_option": {
+ "constant_value": "static"
+ },
+ "fill_value": {
+ "constant_value": 1
+ },
+ "name": {
+ "references": [
+ "var.cloudflare_dns_name"
+ ]
+ },
+ "nrql": [
+ {
+ "query": {
+ "references": [
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_instances.one.identifier",
+ "module.aurora-db-green.cluster_instances.one",
+ "module.aurora-db-green.cluster_instances",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_instances.one.identifier",
+ "module.aurora-db-blue.cluster_instances.one",
+ "module.aurora-db-blue.cluster_instances",
+ "module.aurora-db-blue"
+ ]
+ }
+ }
+ ],
+ "policy_id": {
+ "references": [
+ "newrelic_alert_policy.policy[0].id",
+ "newrelic_alert_policy.policy[0]",
+ "newrelic_alert_policy.policy"
+ ]
+ },
+ "slide_by": {
+ "constant_value": 30
+ },
+ "type": {
+ "constant_value": "static"
+ },
+ "violation_time_limit_seconds": {
+ "constant_value": 3600
+ },
+ "warning": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 300
+ },
+ "threshold_duration": {
+ "constant_value": 60
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_nrql_alert_condition.tg-health-nrql-condition-api",
+ "mode": "managed",
+ "type": "newrelic_nrql_alert_condition",
+ "name": "tg-health-nrql-condition-api",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "account_id": {
+ "references": [
+ "var.newrelic_account_id"
+ ]
+ },
+ "aggregation_delay": {
+ "constant_value": 120
+ },
+ "aggregation_method": {
+ "constant_value": "event_flow"
+ },
+ "aggregation_window": {
+ "constant_value": 60
+ },
+ "critical": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 1.5
+ },
+ "threshold_duration": {
+ "constant_value": 120
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ],
+ "enabled": {
+ "constant_value": true
+ },
+ "fill_option": {
+ "constant_value": "static"
+ },
+ "fill_value": {
+ "constant_value": 1
+ },
+ "name": {
+ "references": [
+ "var.cloudflare_dns_name"
+ ]
+ },
+ "nrql": [
+ {
+ "query": {
+ "references": [
+ "data.newrelic_entity.api_monitor[0].name",
+ "data.newrelic_entity.api_monitor[0]",
+ "data.newrelic_entity.api_monitor"
+ ]
+ }
+ }
+ ],
+ "policy_id": {
+ "references": [
+ "newrelic_alert_policy.policy[0].id",
+ "newrelic_alert_policy.policy[0]",
+ "newrelic_alert_policy.policy"
+ ]
+ },
+ "slide_by": {
+ "constant_value": 30
+ },
+ "type": {
+ "constant_value": "static"
+ },
+ "violation_time_limit_seconds": {
+ "constant_value": 3600
+ },
+ "warning": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 0.5
+ },
+ "threshold_duration": {
+ "constant_value": 120
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "newrelic_nrql_alert_condition.tg-health-nrql-condition-web",
+ "mode": "managed",
+ "type": "newrelic_nrql_alert_condition",
+ "name": "tg-health-nrql-condition-web",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "account_id": {
+ "references": [
+ "var.newrelic_account_id"
+ ]
+ },
+ "aggregation_delay": {
+ "constant_value": 120
+ },
+ "aggregation_method": {
+ "constant_value": "event_flow"
+ },
+ "aggregation_window": {
+ "constant_value": 60
+ },
+ "critical": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 1.5
+ },
+ "threshold_duration": {
+ "constant_value": 120
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ],
+ "enabled": {
+ "constant_value": true
+ },
+ "fill_option": {
+ "constant_value": "static"
+ },
+ "fill_value": {
+ "constant_value": 1
+ },
+ "name": {
+ "references": [
+ "var.cloudflare_dns_name"
+ ]
+ },
+ "nrql": [
+ {
+ "query": {
+ "references": [
+ "data.newrelic_entity.web_monitor[0].name",
+ "data.newrelic_entity.web_monitor[0]",
+ "data.newrelic_entity.web_monitor"
+ ]
+ }
+ }
+ ],
+ "policy_id": {
+ "references": [
+ "newrelic_alert_policy.policy[0].id",
+ "newrelic_alert_policy.policy[0]",
+ "newrelic_alert_policy.policy"
+ ]
+ },
+ "slide_by": {
+ "constant_value": 30
+ },
+ "type": {
+ "constant_value": "static"
+ },
+ "violation_time_limit_seconds": {
+ "constant_value": 3600
+ },
+ "warning": [
+ {
+ "operator": {
+ "constant_value": "above"
+ },
+ "threshold": {
+ "constant_value": 0.5
+ },
+ "threshold_duration": {
+ "constant_value": 120
+ },
+ "threshold_occurrences": {
+ "constant_value": "ALL"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ }
+ },
+ {
+ "address": "time_sleep.wait_120_seconds",
+ "mode": "managed",
+ "type": "time_sleep",
+ "name": "wait_120_seconds",
+ "provider_config_key": "time",
+ "expressions": {
+ "create_duration": {
+ "constant_value": "120s"
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ },
+ "depends_on": [
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ {
+ "address": "time_sleep.wait_180_seconds",
+ "mode": "managed",
+ "type": "time_sleep",
+ "name": "wait_180_seconds",
+ "provider_config_key": "time",
+ "expressions": {
+ "create_duration": {
+ "constant_value": "180s"
+ }
+ },
+ "schema_version": 0,
+ "depends_on": [
+ "aws_autoscaling_group.iriusrisk_web"
+ ]
+ },
+ {
+ "address": "tls_private_key.ec_private",
+ "mode": "managed",
+ "type": "tls_private_key",
+ "name": "ec_private",
+ "provider_config_key": "tls",
+ "expressions": {
+ "algorithm": {
+ "constant_value": "ECDSA"
+ },
+ "ecdsa_curve": {
+ "constant_value": "P256"
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "data.aws_ami.iriusrisk",
+ "mode": "data",
+ "type": "aws_ami",
+ "name": "iriusrisk",
+ "provider_config_key": "aws",
+ "expressions": {
+ "filter": [
+ {
+ "name": {
+ "constant_value": "name"
+ },
+ "values": {
+ "references": [
+ "var.iriusrisk_version"
+ ]
+ }
+ }
+ ],
+ "most_recent": {
+ "constant_value": true
+ },
+ "owners": {
+ "constant_value": [
+ "154977180039"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "data.newrelic_entity.api_monitor",
+ "mode": "data",
+ "type": "newrelic_entity",
+ "name": "api_monitor",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "name": {
+ "references": [
+ "module.iriusrisk_alb.target_group_arns[1]",
+ "module.iriusrisk_alb.target_group_arns",
+ "module.iriusrisk_alb"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ },
+ "depends_on": [
+ "time_sleep.wait_120_seconds"
+ ]
+ },
+ {
+ "address": "data.newrelic_entity.web_monitor",
+ "mode": "data",
+ "type": "newrelic_entity",
+ "name": "web_monitor",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "name": {
+ "references": [
+ "module.iriusrisk_alb.target_group_arns[0]",
+ "module.iriusrisk_alb.target_group_arns",
+ "module.iriusrisk_alb"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.newrelic_enabled"
+ ]
+ },
+ "depends_on": [
+ "time_sleep.wait_120_seconds"
+ ]
+ },
+ {
+ "address": "data.template_file.iriusrisk",
+ "mode": "data",
+ "type": "template_file",
+ "name": "iriusrisk",
+ "provider_config_key": "template",
+ "expressions": {
+ "template": {
+ "references": [
+ "path.module"
+ ]
+ },
+ "vars": {
+ "references": [
+ "var.aws_region",
+ "var.stack_name",
+ "var.cloudflare_dns_name",
+ "var.type",
+ "var.environment",
+ "var.iriusrisk_version",
+ "var.startleft_version",
+ "var.dbname",
+ "var.dbuser",
+ "var.dbpassword",
+ "local.local_deployment_flag",
+ "module.aurora-db-green.cluster_endpoint",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_endpoint",
+ "module.aurora-db-blue",
+ "aws_secretsmanager_secret.jwt-secret.name",
+ "aws_secretsmanager_secret.jwt-secret",
+ "aws_cloudwatch_log_group.cw_log_group.name",
+ "aws_cloudwatch_log_group.cw_log_group"
+ ]
+ }
+ },
+ "schema_version": 0
+ }
+ ],
+ "module_calls": {
+ "analytics": {
+ "source": "git@bitbucket.org:continuumsec/terraform-aws-ha-analytics-module.git?ref=1.0.1",
+ "expressions": {
+ "aws_region": {
+ "references": [
+ "var.aws_region"
+ ]
+ },
+ "build_version": {
+ "references": [
+ "var.analytics_build"
+ ]
+ },
+ "cluster_id": {
+ "references": [
+ "var.deployment_flag",
+ "module.aurora-db-green.cluster_id",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.cluster_id",
+ "module.aurora-db-blue"
+ ]
+ },
+ "database_sg_id": {
+ "references": [
+ "aws_security_group.aurora-db-sg.id",
+ "aws_security_group.aurora-db-sg"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "var.deployment_flag",
+ "module.aurora-db-green.db_subnet_group_name",
+ "module.aurora-db-green",
+ "module.aurora-db-blue.db_subnet_group_name",
+ "module.aurora-db-blue"
+ ]
+ },
+ "elasticsearch_version": {
+ "constant_value": "6.8.7"
+ },
+ "iriusrisk_ec2_sg_id": {
+ "references": [
+ "aws_security_group.iriusrisk.id",
+ "aws_security_group.iriusrisk"
+ ]
+ },
+ "iriusrisk_lb_sg_id": {
+ "references": [
+ "aws_security_group.alb.id",
+ "aws_security_group.alb"
+ ]
+ },
+ "lb_https_listener_arn": {
+ "references": [
+ "module.iriusrisk_alb.https_listener_arns[0]",
+ "module.iriusrisk_alb.https_listener_arns",
+ "module.iriusrisk_alb"
+ ]
+ },
+ "log_group": {
+ "references": [
+ "aws_cloudwatch_log_group.cw_log_group.name",
+ "aws_cloudwatch_log_group.cw_log_group"
+ ]
+ },
+ "public_subnet": {
+ "references": [
+ "module.vpc.public_subnets[0]",
+ "module.vpc.public_subnets",
+ "module.vpc"
+ ]
+ },
+ "stack_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags"
+ ]
+ },
+ "type": {
+ "references": [
+ "var.type"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ },
+ "web_endpoint": {
+ "references": [
+ "local.stack_endpoint"
+ ]
+ }
+ },
+ "count_expression": {
+ "references": [
+ "var.analytics_enabled"
+ ]
+ },
+ "module": {
+ "outputs": {
+ "ec2_id": {
+ "expression": {
+ "references": [
+ "aws_instance.ec2.id",
+ "aws_instance.ec2"
+ ]
+ }
+ },
+ "eip_public_dns": {
+ "expression": {
+ "references": [
+ "aws_eip.ec2.public_dns",
+ "aws_eip.ec2"
+ ]
+ }
+ },
+ "security_group_id": {
+ "expression": {
+ "references": [
+ "aws_security_group.ec2-analytics.id",
+ "aws_security_group.ec2-analytics"
+ ]
+ }
+ },
+ "target_group_id": {
+ "expression": {
+ "references": [
+ "aws_lb_target_group.tg.id",
+ "aws_lb_target_group.tg"
+ ]
+ }
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_eip.ec2",
+ "mode": "managed",
+ "type": "aws_eip",
+ "name": "ec2",
+ "provider_config_key": "aws",
+ "expressions": {
+ "instance": {
+ "references": [
+ "aws_instance.ec2.id",
+ "aws_instance.ec2"
+ ]
+ },
+ "vpc": {
+ "constant_value": true
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_instance.ec2",
+ "mode": "managed",
+ "type": "aws_instance",
+ "name": "ec2",
+ "provider_config_key": "aws",
+ "expressions": {
+ "ami": {
+ "references": [
+ "var.ami_id"
+ ]
+ },
+ "iam_instance_profile": {
+ "references": [
+ "var.iam_instance_profile_name"
+ ]
+ },
+ "instance_type": {
+ "references": [
+ "var.ec2_instance_type"
+ ]
+ },
+ "key_name": {
+ "references": [
+ "var.key_name"
+ ]
+ },
+ "root_block_device": [
+ {
+ "encrypted": {
+ "constant_value": true
+ },
+ "volume_type": {
+ "constant_value": "gp3"
+ }
+ }
+ ],
+ "subnet_id": {
+ "references": [
+ "var.public_subnet"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.stack_name"
+ ]
+ },
+ "user_data": {
+ "references": [
+ "data.template_file.user_data.rendered",
+ "data.template_file.user_data"
+ ]
+ },
+ "vpc_security_group_ids": {
+ "references": [
+ "aws_security_group.ec2-analytics.id",
+ "aws_security_group.ec2-analytics"
+ ]
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_lb_listener_rule.static",
+ "mode": "managed",
+ "type": "aws_lb_listener_rule",
+ "name": "static",
+ "provider_config_key": "aws",
+ "expressions": {
+ "action": [
+ {
+ "target_group_arn": {
+ "references": [
+ "aws_lb_target_group.tg.arn",
+ "aws_lb_target_group.tg"
+ ]
+ },
+ "type": {
+ "constant_value": "forward"
+ }
+ }
+ ],
+ "condition": [
+ {
+ "path_pattern": [
+ {
+ "values": {
+ "constant_value": [
+ "/analytics",
+ "/analytics/*"
+ ]
+ }
+ }
+ ]
+ }
+ ],
+ "listener_arn": {
+ "references": [
+ "var.lb_https_listener_arn"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_lb_target_group.tg",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "tg",
+ "provider_config_key": "aws",
+ "expressions": {
+ "health_check": [
+ {
+ "healthy_threshold": {
+ "constant_value": 4
+ },
+ "interval": {
+ "constant_value": 20
+ },
+ "path": {
+ "constant_value": "/analytics/version"
+ },
+ "port": {
+ "constant_value": 443
+ },
+ "protocol": {
+ "constant_value": "HTTPS"
+ },
+ "timeout": {
+ "constant_value": 5
+ },
+ "unhealthy_threshold": {
+ "constant_value": 2
+ }
+ }
+ ],
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "port": {
+ "constant_value": 443
+ },
+ "protocol": {
+ "constant_value": "HTTPS"
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_lb_target_group_attachment.tg_attachment",
+ "mode": "managed",
+ "type": "aws_lb_target_group_attachment",
+ "name": "tg_attachment",
+ "provider_config_key": "aws",
+ "expressions": {
+ "port": {
+ "constant_value": 443
+ },
+ "target_group_arn": {
+ "references": [
+ "aws_lb_target_group.tg.arn",
+ "aws_lb_target_group.tg"
+ ]
+ },
+ "target_id": {
+ "references": [
+ "aws_instance.ec2.id",
+ "aws_instance.ec2"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_rds_cluster_instance.aurora-rds-instance",
+ "mode": "managed",
+ "type": "aws_rds_cluster_instance",
+ "name": "aurora-rds-instance",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cluster_identifier": {
+ "references": [
+ "var.cluster_id"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "var.db_subnet_group_name"
+ ]
+ },
+ "engine": {
+ "constant_value": "aurora-postgresql"
+ },
+ "engine_version": {
+ "constant_value": "11.16"
+ },
+ "identifier": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "instance_class": {
+ "references": [
+ "var.rds_instance_type"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.stack_name"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "aws_security_group.ec2-analytics",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "ec2-analytics",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Allow access to analytics instance"
+ },
+ "egress": {
+ "constant_value": [
+ {
+ "cidr_blocks": [
+ "0.0.0.0/0"
+ ],
+ "description": null,
+ "from_port": 0,
+ "ipv6_cidr_blocks": null,
+ "prefix_list_ids": null,
+ "protocol": "-1",
+ "security_groups": null,
+ "self": null,
+ "to_port": 0
+ }
+ ]
+ },
+ "ingress": {
+ "references": [
+ "var.iriusrisk_lb_sg_id",
+ "var.iriusrisk_ec2_sg_id",
+ "var.bastion_host_cidrs"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1
+ },
+ {
+ "address": "aws_security_group_rule.ingress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "ingress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Allow in connection from analytics instance"
+ },
+ "from_port": {
+ "constant_value": 5432
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "var.database_sg_id"
+ ]
+ },
+ "source_security_group_id": {
+ "references": [
+ "aws_security_group.ec2-analytics.id",
+ "aws_security_group.ec2-analytics"
+ ]
+ },
+ "to_port": {
+ "constant_value": 5432
+ },
+ "type": {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2
+ },
+ {
+ "address": "data.template_file.user_data",
+ "mode": "data",
+ "type": "template_file",
+ "name": "user_data",
+ "provider_config_key": "template",
+ "expressions": {
+ "template": {
+ "references": [
+ "path.module"
+ ]
+ },
+ "vars": {
+ "references": [
+ "var.stack_name",
+ "var.type",
+ "var.web_endpoint",
+ "var.log_group",
+ "var.aws_region",
+ "var.elasticsearch_version",
+ "var.build_version",
+ "var.iriurisk_certificate",
+ "var.iriurisk_key",
+ "var.dockerhub_account",
+ "var.google_no_reply"
+ ]
+ }
+ },
+ "schema_version": 0
+ }
+ ],
+ "variables": {
+ "ami_id": {
+ "default": "ami-046b04a1e9803e3d0",
+ "description": "AMI ID"
+ },
+ "aws_region": {
+ "description": "WAS region where the resource will be created"
+ },
+ "bastion_host_cidrs": {
+ "default": [
+ "52.30.97.44/32"
+ ],
+ "description": "The IP ranges of bastion hosts to ssh web server instances."
+ },
+ "build_version": {
+ "description": "Knowi build version"
+ },
+ "cluster_id": {
+ "description": "Cluster id to attach read replica"
+ },
+ "database_sg_id": {
+ "description": "Database security group to allow access to database replica from Analytics instance"
+ },
+ "db_subnet_group_name": {
+ "description": "RDS subnet group name"
+ },
+ "dockerhub_account": {
+ "default": "prod/docker/automation_dockerhub_account",
+ "description": "SecretManager name for DockerHub login"
+ },
+ "ec2_instance_type": {
+ "default": "t3a.2xlarge",
+ "description": "AWS EC2 instance type"
+ },
+ "elasticsearch_version": {
+ "description": "ElasticSearch version"
+ },
+ "google_no_reply": {
+ "default": "prod/google/no-reply",
+ "description": "SecretManager name for Google no-reply email configuration"
+ },
+ "iam_instance_profile_name": {
+ "default": "myManagedInstanceRoleforSSM",
+ "description": "AWS instance profile name for the instance"
+ },
+ "iriurisk_certificate": {
+ "default": "prod/certificate/iriusrisk/cert",
+ "description": "SecretManager name for Iriusrisk certificate domain cert"
+ },
+ "iriurisk_key": {
+ "default": "prod/certificate/iriusrisk/key",
+ "description": "SecretManager name for Iriusrisk certificate domain key"
+ },
+ "iriusrisk_ec2_sg_id": {
+ "description": "EC2 security group to allow access to analytics instance from IR instance outside LB"
+ },
+ "iriusrisk_lb_sg_id": {
+ "description": "Load Balancer security group id to allow it access to analytics instance"
+ },
+ "key_name": {
+ "default": "IriusRisk",
+ "description": "SSH key name to access to the instance"
+ },
+ "lb_https_listener_arn": {
+ "description": "Load balancer https listener ARN to attach /analytics endpoint listener"
+ },
+ "log_group": {
+ "description": "CloudWatch log group where analytics logs will be stored"
+ },
+ "public_subnet": {
+ "description": "Public subnet where EC2 instance will be deployed"
+ },
+ "rds_instance_type": {
+ "default": "db.r6g.xlarge",
+ "description": "RDS DB instance type"
+ },
+ "stack_name": {
+ "description": "The stack name. Will be used in naming all related resources, as well as the endpoint to reach IR ({stack_name}.iriusrisk.com)"
+ },
+ "tags": {
+ "description": "Resource tags"
+ },
+ "type": {
+ "description": "A type to describe the environment we are creating, prod/eval/internal."
+ },
+ "vpc_id": {
+ "description": "VPC id"
+ },
+ "web_endpoint": {
+ "description": "DNS name"
+ }
+ }
+ }
+ },
+ "aurora-db-blue": {
+ "source": "terraform-aws-modules/rds-aurora/aws",
+ "expressions": {
+ "auto_minor_version_upgrade": {
+ "references": [
+ "var.environment"
+ ]
+ },
+ "backup_retention_period": {
+ "constant_value": 35
+ },
+ "copy_tags_to_snapshot": {
+ "constant_value": true
+ },
+ "create_cluster": {
+ "references": [
+ "local.local_deployment_flag",
+ "var.keep_previous_rds"
+ ]
+ },
+ "create_db_subnet_group": {
+ "constant_value": true
+ },
+ "create_monitoring_role": {
+ "constant_value": false
+ },
+ "create_random_password": {
+ "constant_value": false
+ },
+ "create_security_group": {
+ "constant_value": false
+ },
+ "database_name": {
+ "references": [
+ "var.dbname"
+ ]
+ },
+ "db_parameter_group_family": {
+ "constant_value": "aurora-postgresql11"
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "deletion_protection": {
+ "references": [
+ "local.local_deployment_flag",
+ "var.environment"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.rds_engine"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.rds_engine_version"
+ ]
+ },
+ "instance_class": {
+ "references": [
+ "var.rds_instance_type"
+ ]
+ },
+ "instances": {
+ "constant_value": {
+ "one": {}
+ }
+ },
+ "master_password": {
+ "references": [
+ "var.dbpassword"
+ ]
+ },
+ "master_username": {
+ "references": [
+ "var.dbuser"
+ ]
+ },
+ "monitoring_interval": {
+ "constant_value": 0
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "performance_insights_enabled": {
+ "constant_value": true
+ },
+ "performance_insights_retention_period": {
+ "constant_value": 31
+ },
+ "preferred_backup_window": {
+ "constant_value": "16:50-18:50"
+ },
+ "preferred_maintenance_window": {
+ "constant_value": "Mon:02:00-Mon:03:00"
+ },
+ "skip_final_snapshot": {
+ "references": [
+ "var.environment"
+ ]
+ },
+ "snapshot_identifier": {
+ "references": [
+ "var.is_rollback",
+ "local.local_deployment_flag",
+ "var.rds_snapshot"
+ ]
+ },
+ "storage_encrypted": {
+ "constant_value": true
+ },
+ "subnets": {
+ "references": [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_security_group_ids": {
+ "references": [
+ "aws_security_group.aurora-db-sg.id",
+ "aws_security_group.aurora-db-sg"
+ ]
+ }
+ },
+ "module": {
+ "outputs": {
+ "additional_cluster_endpoints": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_endpoint.this"
+ ]
+ },
+ "description": "A map of additional cluster endpoints and their attributes"
+ },
+ "cluster_arn": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].arn",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "Amazon Resource Name (ARN) of cluster"
+ },
+ "cluster_database_name": {
+ "expression": {
+ "references": [
+ "var.database_name"
+ ]
+ },
+ "description": "Name for an automatically created database on cluster creation"
+ },
+ "cluster_endpoint": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].endpoint",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "Writer endpoint for the cluster"
+ },
+ "cluster_engine_version_actual": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].engine_version_actual",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The running version of the cluster database"
+ },
+ "cluster_hosted_zone_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].hosted_zone_id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The Route53 Hosted Zone ID of the endpoint"
+ },
+ "cluster_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The RDS Cluster Identifier"
+ },
+ "cluster_instances": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_instance.this"
+ ]
+ },
+ "description": "A map of cluster instances and their attributes"
+ },
+ "cluster_master_password": {
+ "sensitive": true,
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].master_password",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database master password"
+ },
+ "cluster_master_username": {
+ "sensitive": true,
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].master_username",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database master username"
+ },
+ "cluster_members": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_members",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "List of RDS Instances that are a part of this cluster"
+ },
+ "cluster_port": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].port",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database port"
+ },
+ "cluster_reader_endpoint": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].reader_endpoint",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "A read-only endpoint for the cluster, automatically load-balanced across replicas"
+ },
+ "cluster_resource_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_resource_id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The RDS Cluster Resource ID"
+ },
+ "cluster_role_associations": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_role_association.this"
+ ]
+ },
+ "description": "A map of IAM roles associated with the cluster and their attributes"
+ },
+ "db_cluster_parameter_group_arn": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_parameter_group.this[0].arn",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this"
+ ]
+ },
+ "description": "The ARN of the DB cluster parameter group created"
+ },
+ "db_cluster_parameter_group_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_parameter_group.this[0].id",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this"
+ ]
+ },
+ "description": "The ID of the DB cluster parameter group created"
+ },
+ "db_parameter_group_arn": {
+ "expression": {
+ "references": [
+ "aws_db_parameter_group.this[0].arn",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this"
+ ]
+ },
+ "description": "The ARN of the DB parameter group created"
+ },
+ "db_parameter_group_id": {
+ "expression": {
+ "references": [
+ "aws_db_parameter_group.this[0].id",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this"
+ ]
+ },
+ "description": "The ID of the DB parameter group created"
+ },
+ "db_subnet_group_name": {
+ "expression": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "description": "The db subnet group name"
+ },
+ "enhanced_monitoring_iam_role_arn": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].arn",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the enhanced monitoring role"
+ },
+ "enhanced_monitoring_iam_role_name": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].name",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "The name of the enhanced monitoring role"
+ },
+ "enhanced_monitoring_iam_role_unique_id": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].unique_id",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "Stable and unique string identifying the enhanced monitoring role"
+ },
+ "security_group_id": {
+ "expression": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "description": "The security group ID of the cluster"
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_appautoscaling_policy.this",
+ "mode": "managed",
+ "type": "aws_appautoscaling_policy",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.autoscaling_policy_name"
+ ]
+ },
+ "policy_type": {
+ "constant_value": "TargetTrackingScaling"
+ },
+ "resource_id": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_identifier",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "scalable_dimension": {
+ "constant_value": "rds:cluster:ReadReplicaCount"
+ },
+ "service_namespace": {
+ "constant_value": "rds"
+ },
+ "target_tracking_scaling_policy_configuration": [
+ {
+ "predefined_metric_specification": [
+ {
+ "predefined_metric_type": {
+ "references": [
+ "var.predefined_metric_type"
+ ]
+ }
+ }
+ ],
+ "scale_in_cooldown": {
+ "references": [
+ "var.autoscaling_scale_in_cooldown"
+ ]
+ },
+ "scale_out_cooldown": {
+ "references": [
+ "var.autoscaling_scale_out_cooldown"
+ ]
+ },
+ "target_value": {
+ "references": [
+ "var.predefined_metric_type",
+ "var.autoscaling_target_cpu",
+ "var.autoscaling_target_connections"
+ ]
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.autoscaling_enabled",
+ "local.is_serverless"
+ ]
+ },
+ "depends_on": [
+ "aws_appautoscaling_target.this"
+ ]
+ },
+ {
+ "address": "aws_appautoscaling_target.this",
+ "mode": "managed",
+ "type": "aws_appautoscaling_target",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "max_capacity": {
+ "references": [
+ "var.autoscaling_max_capacity"
+ ]
+ },
+ "min_capacity": {
+ "references": [
+ "var.autoscaling_min_capacity"
+ ]
+ },
+ "resource_id": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_identifier",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "scalable_dimension": {
+ "constant_value": "rds:cluster:ReadReplicaCount"
+ },
+ "service_namespace": {
+ "constant_value": "rds"
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.autoscaling_enabled",
+ "local.is_serverless"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_parameter_group.this",
+ "mode": "managed",
+ "type": "aws_db_parameter_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.db_parameter_group_description"
+ ]
+ },
+ "family": {
+ "references": [
+ "var.db_parameter_group_family"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.db_parameter_group_use_name_prefix",
+ "local.db_parameter_group_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.db_parameter_group_use_name_prefix",
+ "local.db_parameter_group_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_parameter_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_subnet_group.this",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "local.internal_db_subnet_group_name"
+ ]
+ },
+ "subnet_ids": {
+ "references": [
+ "var.subnets"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.rds_enhanced_monitoring",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "rds_enhanced_monitoring",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "references": [
+ "data.aws_iam_policy_document.monitoring_rds_assume_role.json",
+ "data.aws_iam_policy_document.monitoring_rds_assume_role"
+ ]
+ },
+ "description": {
+ "references": [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies": {
+ "references": [
+ "var.iam_role_force_detach_policies"
+ ]
+ },
+ "managed_policy_arns": {
+ "references": [
+ "var.iam_role_managed_policy_arns"
+ ]
+ },
+ "max_session_duration": {
+ "references": [
+ "var.iam_role_max_session_duration"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.iam_role_use_name_prefix",
+ "var.iam_role_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.iam_role_use_name_prefix",
+ "var.iam_role_name"
+ ]
+ },
+ "path": {
+ "references": [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary": {
+ "references": [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_monitoring_role",
+ "var.monitoring_interval"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.rds_enhanced_monitoring",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "rds_enhanced_monitoring",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": [
+ "data.aws_partition.current.partition",
+ "data.aws_partition.current"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].name",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_monitoring_role",
+ "var.monitoring_interval"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "allocated_storage": {
+ "references": [
+ "var.allocated_storage"
+ ]
+ },
+ "allow_major_version_upgrade": {
+ "references": [
+ "var.allow_major_version_upgrade"
+ ]
+ },
+ "apply_immediately": {
+ "references": [
+ "var.apply_immediately"
+ ]
+ },
+ "availability_zones": {
+ "references": [
+ "var.availability_zones"
+ ]
+ },
+ "backtrack_window": {
+ "references": [
+ "local.backtrack_window"
+ ]
+ },
+ "backup_retention_period": {
+ "references": [
+ "var.backup_retention_period"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "var.cluster_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "cluster_identifier_prefix": {
+ "references": [
+ "var.cluster_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "cluster_members": {
+ "references": [
+ "var.cluster_members"
+ ]
+ },
+ "copy_tags_to_snapshot": {
+ "references": [
+ "var.copy_tags_to_snapshot"
+ ]
+ },
+ "database_name": {
+ "references": [
+ "var.is_primary_cluster",
+ "var.database_name"
+ ]
+ },
+ "db_cluster_instance_class": {
+ "references": [
+ "var.db_cluster_instance_class"
+ ]
+ },
+ "db_cluster_parameter_group_name": {
+ "references": [
+ "var.create_db_cluster_parameter_group",
+ "aws_rds_cluster_parameter_group.this[0].id",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this",
+ "var.db_cluster_parameter_group_name"
+ ]
+ },
+ "db_instance_parameter_group_name": {
+ "references": [
+ "var.allow_major_version_upgrade",
+ "var.db_cluster_db_instance_parameter_group_name"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "deletion_protection": {
+ "references": [
+ "var.deletion_protection"
+ ]
+ },
+ "enable_global_write_forwarding": {
+ "references": [
+ "var.enable_global_write_forwarding"
+ ]
+ },
+ "enable_http_endpoint": {
+ "references": [
+ "var.enable_http_endpoint"
+ ]
+ },
+ "enabled_cloudwatch_logs_exports": {
+ "references": [
+ "var.enabled_cloudwatch_logs_exports"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.engine"
+ ]
+ },
+ "engine_mode": {
+ "references": [
+ "var.engine_mode"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.engine_version"
+ ]
+ },
+ "final_snapshot_identifier": {
+ "references": [
+ "var.skip_final_snapshot",
+ "local.final_snapshot_identifier_prefix"
+ ]
+ },
+ "global_cluster_identifier": {
+ "references": [
+ "var.global_cluster_identifier"
+ ]
+ },
+ "iam_database_authentication_enabled": {
+ "references": [
+ "var.iam_database_authentication_enabled"
+ ]
+ },
+ "iops": {
+ "references": [
+ "var.iops"
+ ]
+ },
+ "kms_key_id": {
+ "references": [
+ "var.kms_key_id"
+ ]
+ },
+ "master_password": {
+ "references": [
+ "var.is_primary_cluster",
+ "local.master_password"
+ ]
+ },
+ "master_username": {
+ "references": [
+ "var.is_primary_cluster",
+ "var.master_username"
+ ]
+ },
+ "network_type": {
+ "references": [
+ "var.network_type"
+ ]
+ },
+ "port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "preferred_backup_window": {
+ "references": [
+ "local.is_serverless",
+ "var.preferred_backup_window"
+ ]
+ },
+ "preferred_maintenance_window": {
+ "references": [
+ "local.is_serverless",
+ "var.preferred_maintenance_window"
+ ]
+ },
+ "replication_source_identifier": {
+ "references": [
+ "var.replication_source_identifier"
+ ]
+ },
+ "skip_final_snapshot": {
+ "references": [
+ "var.skip_final_snapshot"
+ ]
+ },
+ "snapshot_identifier": {
+ "references": [
+ "var.snapshot_identifier"
+ ]
+ },
+ "source_region": {
+ "references": [
+ "var.source_region"
+ ]
+ },
+ "storage_encrypted": {
+ "references": [
+ "var.storage_encrypted"
+ ]
+ },
+ "storage_type": {
+ "references": [
+ "var.storage_type"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.cluster_tags"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "references": [
+ "var.cluster_timeouts.create",
+ "var.cluster_timeouts"
+ ]
+ },
+ "delete": {
+ "references": [
+ "var.cluster_timeouts.delete",
+ "var.cluster_timeouts"
+ ]
+ },
+ "update": {
+ "references": [
+ "var.cluster_timeouts.update",
+ "var.cluster_timeouts"
+ ]
+ }
+ },
+ "vpc_security_group_ids": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_endpoint.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_endpoint",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cluster_endpoint_identifier": {
+ "references": [
+ "each.value.identifier",
+ "each.value"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "custom_endpoint_type": {
+ "references": [
+ "each.value.type",
+ "each.value"
+ ]
+ },
+ "excluded_members": {
+ "references": [
+ "each.value.excluded_members",
+ "each.value"
+ ]
+ },
+ "static_members": {
+ "references": [
+ "each.value.static_members",
+ "each.value"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "each.value.tags",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.endpoints",
+ "local.create_cluster",
+ "local.is_serverless"
+ ]
+ },
+ "depends_on": [
+ "aws_rds_cluster_instance.this"
+ ]
+ },
+ {
+ "address": "aws_rds_cluster_instance.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "apply_immediately": {
+ "references": [
+ "each.value.apply_immediately",
+ "each.value",
+ "var.apply_immediately"
+ ]
+ },
+ "auto_minor_version_upgrade": {
+ "references": [
+ "each.value.auto_minor_version_upgrade",
+ "each.value",
+ "var.auto_minor_version_upgrade"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "each.value.availability_zone",
+ "each.value"
+ ]
+ },
+ "ca_cert_identifier": {
+ "references": [
+ "var.ca_cert_identifier"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "copy_tags_to_snapshot": {
+ "references": [
+ "each.value.copy_tags_to_snapshot",
+ "each.value",
+ "var.copy_tags_to_snapshot"
+ ]
+ },
+ "db_parameter_group_name": {
+ "references": [
+ "var.create_db_parameter_group",
+ "aws_db_parameter_group.this[0].id",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this",
+ "var.db_parameter_group_name"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.engine"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.engine_version"
+ ]
+ },
+ "identifier": {
+ "references": [
+ "var.instances_use_identifier_prefix",
+ "each.value.identifier",
+ "each.value",
+ "var.name",
+ "each.key"
+ ]
+ },
+ "identifier_prefix": {
+ "references": [
+ "var.instances_use_identifier_prefix",
+ "each.value.identifier_prefix",
+ "each.value",
+ "var.name",
+ "each.key"
+ ]
+ },
+ "instance_class": {
+ "references": [
+ "each.value.instance_class",
+ "each.value",
+ "var.instance_class"
+ ]
+ },
+ "monitoring_interval": {
+ "references": [
+ "each.value.monitoring_interval",
+ "each.value",
+ "var.monitoring_interval"
+ ]
+ },
+ "monitoring_role_arn": {
+ "references": [
+ "var.create_monitoring_role",
+ "aws_iam_role.rds_enhanced_monitoring[0].arn",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring",
+ "var.monitoring_role_arn"
+ ]
+ },
+ "performance_insights_enabled": {
+ "references": [
+ "each.value.performance_insights_enabled",
+ "each.value",
+ "var.performance_insights_enabled"
+ ]
+ },
+ "performance_insights_kms_key_id": {
+ "references": [
+ "each.value.performance_insights_kms_key_id",
+ "each.value",
+ "var.performance_insights_kms_key_id"
+ ]
+ },
+ "performance_insights_retention_period": {
+ "references": [
+ "each.value.performance_insights_retention_period",
+ "each.value",
+ "var.performance_insights_retention_period"
+ ]
+ },
+ "preferred_maintenance_window": {
+ "references": [
+ "each.value.preferred_maintenance_window",
+ "each.value",
+ "var.preferred_maintenance_window"
+ ]
+ },
+ "promotion_tier": {
+ "references": [
+ "each.value.promotion_tier",
+ "each.value"
+ ]
+ },
+ "publicly_accessible": {
+ "references": [
+ "each.value.publicly_accessible",
+ "each.value",
+ "var.publicly_accessible"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "each.value.tags",
+ "each.value"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "references": [
+ "var.instance_timeouts.create",
+ "var.instance_timeouts"
+ ]
+ },
+ "delete": {
+ "references": [
+ "var.instance_timeouts.delete",
+ "var.instance_timeouts"
+ ]
+ },
+ "update": {
+ "references": [
+ "var.instance_timeouts.update",
+ "var.instance_timeouts"
+ ]
+ }
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.instances",
+ "local.create_cluster",
+ "local.is_serverless"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_parameter_group.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_parameter_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.db_cluster_parameter_group_description"
+ ]
+ },
+ "family": {
+ "references": [
+ "var.db_cluster_parameter_group_family"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.db_cluster_parameter_group_use_name_prefix",
+ "local.cluster_parameter_group_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.db_cluster_parameter_group_use_name_prefix",
+ "local.cluster_parameter_group_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_cluster_parameter_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_role_association.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_role_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "db_cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "feature_name": {
+ "references": [
+ "each.value.feature_name",
+ "each.value"
+ ]
+ },
+ "role_arn": {
+ "references": [
+ "each.value.role_arn",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.iam_roles",
+ "local.create_cluster"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group.this",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.security_group_description",
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.security_group_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.security_group_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.security_group_tags",
+ "var.name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.cidr_ingress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "cidr_ingress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_blocks": {
+ "references": [
+ "var.allowed_cidr_blocks"
+ ]
+ },
+ "description": {
+ "constant_value": "From allowed CIDRs"
+ },
+ "from_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.allowed_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.default_ingress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "default_ingress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "From allowed SGs"
+ },
+ "from_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "source_security_group_id": {
+ "references": [
+ "var.allowed_security_groups",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.allowed_security_groups"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_blocks": {
+ "references": [
+ "each.value.cidr_blocks",
+ "each.value"
+ ]
+ },
+ "description": {
+ "references": [
+ "each.value.description",
+ "each.value"
+ ]
+ },
+ "from_port": {
+ "references": [
+ "each.value.from_port",
+ "each.value",
+ "local.port"
+ ]
+ },
+ "ipv6_cidr_blocks": {
+ "references": [
+ "each.value.ipv6_cidr_blocks",
+ "each.value"
+ ]
+ },
+ "prefix_list_ids": {
+ "references": [
+ "each.value.prefix_list_ids",
+ "each.value"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "source_security_group_id": {
+ "references": [
+ "each.value.source_security_group_id",
+ "each.value"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "each.value.to_port",
+ "each.value",
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "for_each_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.security_group_egress_rules"
+ ]
+ }
+ },
+ {
+ "address": "random_id.snapshot_identifier",
+ "mode": "managed",
+ "type": "random_id",
+ "name": "snapshot_identifier",
+ "provider_config_key": "module.aurora-db-blue:random",
+ "expressions": {
+ "byte_length": {
+ "constant_value": 4
+ },
+ "keepers": {
+ "references": [
+ "var.name"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.skip_final_snapshot"
+ ]
+ }
+ },
+ {
+ "address": "random_password.master_password",
+ "mode": "managed",
+ "type": "random_password",
+ "name": "master_password",
+ "provider_config_key": "module.aurora-db-blue:random",
+ "expressions": {
+ "length": {
+ "references": [
+ "var.random_password_length"
+ ]
+ },
+ "special": {
+ "constant_value": false
+ }
+ },
+ "schema_version": 3,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_random_password"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.monitoring_rds_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "monitoring_rds_assume_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "statement": [
+ {
+ "actions": {
+ "constant_value": [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals": [
+ {
+ "identifiers": {
+ "constant_value": [
+ "monitoring.rds.amazonaws.com"
+ ]
+ },
+ "type": {
+ "constant_value": "Service"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables": {
+ "allocated_storage": {
+ "default": null,
+ "description": "The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster. (This setting is required to create a Multi-AZ DB cluster)"
+ },
+ "allow_major_version_upgrade": {
+ "default": false,
+ "description": "Enable to allow major engine version upgrades when changing engine versions. Defaults to `false`"
+ },
+ "allowed_cidr_blocks": {
+ "default": [],
+ "description": "A list of CIDR blocks which are allowed to access the database"
+ },
+ "allowed_security_groups": {
+ "default": [],
+ "description": "A list of Security Group ID's to allow access to"
+ },
+ "apply_immediately": {
+ "default": null,
+ "description": "Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`"
+ },
+ "auto_minor_version_upgrade": {
+ "default": null,
+ "description": "Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window. Default `true`"
+ },
+ "autoscaling_enabled": {
+ "default": false,
+ "description": "Determines whether autoscaling of the cluster read replicas is enabled"
+ },
+ "autoscaling_max_capacity": {
+ "default": 2,
+ "description": "Maximum number of read replicas permitted when autoscaling is enabled"
+ },
+ "autoscaling_min_capacity": {
+ "default": 0,
+ "description": "Minimum number of read replicas permitted when autoscaling is enabled"
+ },
+ "autoscaling_policy_name": {
+ "default": "target-metric",
+ "description": "Autoscaling policy name"
+ },
+ "autoscaling_scale_in_cooldown": {
+ "default": 300,
+ "description": "Cooldown in seconds before allowing further scaling operations after a scale in"
+ },
+ "autoscaling_scale_out_cooldown": {
+ "default": 300,
+ "description": "Cooldown in seconds before allowing further scaling operations after a scale out"
+ },
+ "autoscaling_target_connections": {
+ "default": 700,
+ "description": "Average number of connections threshold which will initiate autoscaling. Default value is 70% of db.r4/r5/r6g.large's default max_connections"
+ },
+ "autoscaling_target_cpu": {
+ "default": 70,
+ "description": "CPU threshold which will initiate autoscaling"
+ },
+ "availability_zones": {
+ "default": null,
+ "description": "List of EC2 Availability Zones for the DB cluster storage where DB cluster instances can be created. RDS automatically assigns 3 AZs if less than 3 AZs are configured, which will show as a difference requiring resource recreation next Terraform apply"
+ },
+ "backtrack_window": {
+ "default": null,
+ "description": "The target backtrack window, in seconds. Only available for `aurora` engine currently. To disable backtracking, set this value to 0. Must be between 0 and 259200 (72 hours)"
+ },
+ "backup_retention_period": {
+ "default": 7,
+ "description": "The days to retain backups for. Default `7`"
+ },
+ "ca_cert_identifier": {
+ "default": null,
+ "description": "The identifier of the CA certificate for the DB instance"
+ },
+ "cluster_members": {
+ "default": null,
+ "description": "List of RDS Instances that are a part of this cluster"
+ },
+ "cluster_tags": {
+ "default": {},
+ "description": "A map of tags to add to only the cluster. Used for AWS Instance Scheduler tagging"
+ },
+ "cluster_timeouts": {
+ "default": {},
+ "description": "Create, update, and delete timeout configurations for the cluster"
+ },
+ "cluster_use_name_prefix": {
+ "default": false,
+ "description": "Whether to use `name` as a prefix for the cluster"
+ },
+ "copy_tags_to_snapshot": {
+ "default": null,
+ "description": "Copy all Cluster `tags` to snapshots"
+ },
+ "create_cluster": {
+ "default": true,
+ "description": "Whether cluster should be created (affects nearly all resources)"
+ },
+ "create_db_cluster_parameter_group": {
+ "default": false,
+ "description": "Determines whether a cluster parameter should be created or use existing"
+ },
+ "create_db_parameter_group": {
+ "default": false,
+ "description": "Determines whether a DB parameter should be created or use existing"
+ },
+ "create_db_subnet_group": {
+ "default": true,
+ "description": "Determines whether to create the database subnet group or use existing"
+ },
+ "create_monitoring_role": {
+ "default": true,
+ "description": "Determines whether to create the IAM role for RDS enhanced monitoring"
+ },
+ "create_random_password": {
+ "default": true,
+ "description": "Determines whether to create random password for RDS primary cluster"
+ },
+ "create_security_group": {
+ "default": true,
+ "description": "Determines whether to create security group for RDS cluster"
+ },
+ "database_name": {
+ "default": null,
+ "description": "Name for an automatically created database on cluster creation"
+ },
+ "db_cluster_db_instance_parameter_group_name": {
+ "default": null,
+ "description": "Instance parameter group to associate with all instances of the DB cluster. The `db_cluster_db_instance_parameter_group_name` is only valid in combination with `allow_major_version_upgrade`"
+ },
+ "db_cluster_instance_class": {
+ "default": null,
+ "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example db.m6g.xlarge. Not all DB instance classes are available in all AWS Regions, or for all database engines"
+ },
+ "db_cluster_parameter_group_description": {
+ "default": null,
+ "description": "The description of the DB cluster parameter group. Defaults to \"Managed by Terraform\""
+ },
+ "db_cluster_parameter_group_family": {
+ "default": "",
+ "description": "The family of the DB cluster parameter group"
+ },
+ "db_cluster_parameter_group_name": {
+ "default": null,
+ "description": "The name of the DB cluster parameter group"
+ },
+ "db_cluster_parameter_group_parameters": {
+ "default": [],
+ "description": "A list of DB cluster parameters to apply. Note that parameters may differ from a family to an other"
+ },
+ "db_cluster_parameter_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the DB cluster parameter group name is used as a prefix"
+ },
+ "db_parameter_group_description": {
+ "default": null,
+ "description": "The description of the DB parameter group. Defaults to \"Managed by Terraform\""
+ },
+ "db_parameter_group_family": {
+ "default": "",
+ "description": "The family of the DB parameter group"
+ },
+ "db_parameter_group_name": {
+ "default": null,
+ "description": "The name of the DB parameter group"
+ },
+ "db_parameter_group_parameters": {
+ "default": [],
+ "description": "A list of DB parameters to apply. Note that parameters may differ from a family to an other"
+ },
+ "db_parameter_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the DB parameter group name is used as a prefix"
+ },
+ "db_subnet_group_name": {
+ "default": "",
+ "description": "The name of the subnet group name (existing or created)"
+ },
+ "deletion_protection": {
+ "default": null,
+ "description": "If the DB instance should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`"
+ },
+ "enable_global_write_forwarding": {
+ "default": null,
+ "description": "Whether cluster should forward writes to an associated global cluster. Applied to secondary clusters to enable them to forward writes to an `aws_rds_global_cluster`'s primary cluster"
+ },
+ "enable_http_endpoint": {
+ "default": null,
+ "description": "Enable HTTP endpoint (data API). Only valid when engine_mode is set to `serverless`"
+ },
+ "enabled_cloudwatch_logs_exports": {
+ "default": [],
+ "description": "Set of log types to export to cloudwatch. If omitted, no logs will be exported. The following log types are supported: `audit`, `error`, `general`, `slowquery`, `postgresql`"
+ },
+ "endpoints": {
+ "default": {},
+ "description": "Map of additional cluster endpoints and their attributes to be created"
+ },
+ "engine": {
+ "default": null,
+ "description": "The name of the database engine to be used for this DB cluster. Defaults to `aurora`. Valid Values: `aurora`, `aurora-mysql`, `aurora-postgresql`"
+ },
+ "engine_mode": {
+ "default": null,
+ "description": "The database engine mode. Valid values: `global`, `multimaster`, `parallelquery`, `provisioned`, `serverless`. Defaults to: `provisioned`"
+ },
+ "engine_version": {
+ "default": null,
+ "description": "The database engine version. Updating this argument results in an outage"
+ },
+ "final_snapshot_identifier_prefix": {
+ "default": "final",
+ "description": "The prefix name to use when creating a final snapshot on cluster destroy; a 8 random digits are appended to name to ensure it's unique"
+ },
+ "global_cluster_identifier": {
+ "default": null,
+ "description": "The global cluster identifier specified on `aws_rds_global_cluster`"
+ },
+ "iam_database_authentication_enabled": {
+ "default": null,
+ "description": "Specifies whether or mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled"
+ },
+ "iam_role_description": {
+ "default": null,
+ "description": "Description of the monitoring role"
+ },
+ "iam_role_force_detach_policies": {
+ "default": null,
+ "description": "Whether to force detaching any policies the monitoring role has before destroying it"
+ },
+ "iam_role_managed_policy_arns": {
+ "default": null,
+ "description": "Set of exclusive IAM managed policy ARNs to attach to the monitoring role"
+ },
+ "iam_role_max_session_duration": {
+ "default": null,
+ "description": "Maximum session duration (in seconds) that you want to set for the monitoring role"
+ },
+ "iam_role_name": {
+ "default": null,
+ "description": "Friendly name of the monitoring role"
+ },
+ "iam_role_path": {
+ "default": null,
+ "description": "Path for the monitoring role"
+ },
+ "iam_role_permissions_boundary": {
+ "default": null,
+ "description": "The ARN of the policy that is used to set the permissions boundary for the monitoring role"
+ },
+ "iam_role_use_name_prefix": {
+ "default": false,
+ "description": "Determines whether to use `iam_role_name` as is or create a unique name beginning with the `iam_role_name` as the prefix"
+ },
+ "iam_roles": {
+ "default": {},
+ "description": "Map of IAM roles and supported feature names to associate with the cluster"
+ },
+ "instance_class": {
+ "default": "",
+ "description": "Instance type to use at master instance. Note: if `autoscaling_enabled` is `true`, this will be the same instance class used on instances created by autoscaling"
+ },
+ "instance_timeouts": {
+ "default": {},
+ "description": "Create, update, and delete timeout configurations for the cluster instance(s)"
+ },
+ "instances": {
+ "default": {},
+ "description": "Map of cluster instances and any specific/overriding attributes to be created"
+ },
+ "instances_use_identifier_prefix": {
+ "default": false,
+ "description": "Determines whether cluster instance identifiers are used as prefixes"
+ },
+ "iops": {
+ "default": null,
+ "description": "The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster"
+ },
+ "is_primary_cluster": {
+ "default": true,
+ "description": "Determines whether cluster is primary cluster with writer instance (set to `false` for global cluster and replica clusters)"
+ },
+ "kms_key_id": {
+ "default": null,
+ "description": "The ARN for the KMS encryption key. When specifying `kms_key_id`, `storage_encrypted` needs to be set to `true`"
+ },
+ "master_password": {
+ "default": null,
+ "description": "Password for the master DB user. Note - when specifying a value here, 'create_random_password' should be set to `false`"
+ },
+ "master_username": {
+ "default": "root",
+ "description": "Username for the master DB user"
+ },
+ "monitoring_interval": {
+ "default": 0,
+ "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for instances. Set to `0` to disable. Default is `0`"
+ },
+ "monitoring_role_arn": {
+ "default": "",
+ "description": "IAM role used by RDS to send enhanced monitoring metrics to CloudWatch"
+ },
+ "name": {
+ "default": "",
+ "description": "Name used across resources created"
+ },
+ "network_type": {
+ "default": null,
+ "description": "The type of network stack to use (IPV4 or DUAL)"
+ },
+ "performance_insights_enabled": {
+ "default": null,
+ "description": "Specifies whether Performance Insights is enabled or not"
+ },
+ "performance_insights_kms_key_id": {
+ "default": null,
+ "description": "The ARN for the KMS key to encrypt Performance Insights data"
+ },
+ "performance_insights_retention_period": {
+ "default": null,
+ "description": "Amount of time in days to retain Performance Insights data. Either 7 (7 days) or 731 (2 years)"
+ },
+ "port": {
+ "default": null,
+ "description": "The port on which the DB accepts connections"
+ },
+ "predefined_metric_type": {
+ "default": "RDSReaderAverageCPUUtilization",
+ "description": "The metric type to scale on. Valid values are `RDSReaderAverageCPUUtilization` and `RDSReaderAverageDatabaseConnections`"
+ },
+ "preferred_backup_window": {
+ "default": "02:00-03:00",
+ "description": "The daily time range during which automated backups are created if automated backups are enabled using the `backup_retention_period` parameter. Time in UTC"
+ },
+ "preferred_maintenance_window": {
+ "default": "sun:05:00-sun:06:00",
+ "description": "The weekly time range during which system maintenance can occur, in (UTC)"
+ },
+ "publicly_accessible": {
+ "default": null,
+ "description": "Determines whether instances are publicly accessible. Default false"
+ },
+ "putin_khuylo": {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "random_password_length": {
+ "default": 10,
+ "description": "Length of random password to create. Defaults to `10`"
+ },
+ "replication_source_identifier": {
+ "default": null,
+ "description": "ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica"
+ },
+ "restore_to_point_in_time": {
+ "default": {},
+ "description": "Map of nested attributes for cloning Aurora cluster"
+ },
+ "s3_import": {
+ "default": {},
+ "description": "Configuration map used to restore from a Percona Xtrabackup in S3 (only MySQL is supported)"
+ },
+ "scaling_configuration": {
+ "default": {},
+ "description": "Map of nested attributes with scaling properties. Only valid when `engine_mode` is set to `serverless`"
+ },
+ "security_group_description": {
+ "default": null,
+ "description": "The description of the security group. If value is set to empty string it will contain cluster name in the description"
+ },
+ "security_group_egress_rules": {
+ "default": {},
+ "description": "A map of security group egress rule definitions to add to the security group created"
+ },
+ "security_group_tags": {
+ "default": {},
+ "description": "Additional tags for the security group"
+ },
+ "security_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the security group name (`name`) is used as a prefix"
+ },
+ "serverlessv2_scaling_configuration": {
+ "default": {},
+ "description": "Map of nested attributes with serverless v2 scaling properties. Only valid when `engine_mode` is set to `provisioned`"
+ },
+ "skip_final_snapshot": {
+ "default": false,
+ "description": "Determines whether a final snapshot is created before the cluster is deleted. If true is specified, no snapshot is created"
+ },
+ "snapshot_identifier": {
+ "default": null,
+ "description": "Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a DB cluster snapshot, or the ARN when specifying a DB snapshot"
+ },
+ "source_region": {
+ "default": null,
+ "description": "The source region for an encrypted replica DB cluster"
+ },
+ "storage_encrypted": {
+ "default": true,
+ "description": "Specifies whether the DB cluster is encrypted. The default is `true`"
+ },
+ "storage_type": {
+ "default": null,
+ "description": "Specifies the storage type to be associated with the DB cluster. (This setting is required to create a Multi-AZ DB cluster). Valid values: `io1`, Default: `io1`"
+ },
+ "subnets": {
+ "default": [],
+ "description": "List of subnet IDs used by database subnet group created"
+ },
+ "tags": {
+ "default": {},
+ "description": "A map of tags to add to all resources"
+ },
+ "vpc_id": {
+ "default": "",
+ "description": "ID of the VPC where to create security group"
+ },
+ "vpc_security_group_ids": {
+ "default": [],
+ "description": "List of VPC security groups to associate to the cluster in addition to the SG we create in this module"
+ }
+ }
+ },
+ "version_constraint": "7.6.0"
+ },
+ "aurora-db-green": {
+ "source": "terraform-aws-modules/rds-aurora/aws",
+ "expressions": {
+ "auto_minor_version_upgrade": {
+ "references": [
+ "var.environment"
+ ]
+ },
+ "backup_retention_period": {
+ "constant_value": 35
+ },
+ "copy_tags_to_snapshot": {
+ "constant_value": true
+ },
+ "create_cluster": {
+ "references": [
+ "local.local_deployment_flag",
+ "var.keep_previous_rds"
+ ]
+ },
+ "create_db_subnet_group": {
+ "constant_value": true
+ },
+ "create_monitoring_role": {
+ "constant_value": false
+ },
+ "create_random_password": {
+ "constant_value": false
+ },
+ "create_security_group": {
+ "constant_value": false
+ },
+ "database_name": {
+ "references": [
+ "var.dbname"
+ ]
+ },
+ "db_parameter_group_family": {
+ "constant_value": "aurora-postgresql11"
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "deletion_protection": {
+ "references": [
+ "local.local_deployment_flag",
+ "var.environment"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.rds_engine"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.rds_engine_version"
+ ]
+ },
+ "instance_class": {
+ "references": [
+ "var.rds_instance_type"
+ ]
+ },
+ "instances": {
+ "constant_value": {
+ "one": {}
+ }
+ },
+ "master_password": {
+ "references": [
+ "var.dbpassword"
+ ]
+ },
+ "master_username": {
+ "references": [
+ "var.dbuser"
+ ]
+ },
+ "monitoring_interval": {
+ "constant_value": 0
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "performance_insights_enabled": {
+ "constant_value": true
+ },
+ "performance_insights_retention_period": {
+ "constant_value": 31
+ },
+ "preferred_backup_window": {
+ "constant_value": "16:50-18:50"
+ },
+ "preferred_maintenance_window": {
+ "constant_value": "Mon:02:00-Mon:03:00"
+ },
+ "skip_final_snapshot": {
+ "references": [
+ "var.environment"
+ ]
+ },
+ "snapshot_identifier": {
+ "references": [
+ "var.is_rollback",
+ "local.local_deployment_flag",
+ "var.rds_snapshot"
+ ]
+ },
+ "storage_encrypted": {
+ "constant_value": true
+ },
+ "subnets": {
+ "references": [
+ "module.vpc.private_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags",
+ "var.stack_name"
+ ]
+ },
+ "vpc_security_group_ids": {
+ "references": [
+ "aws_security_group.aurora-db-sg.id",
+ "aws_security_group.aurora-db-sg"
+ ]
+ }
+ },
+ "module": {
+ "outputs": {
+ "additional_cluster_endpoints": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_endpoint.this"
+ ]
+ },
+ "description": "A map of additional cluster endpoints and their attributes"
+ },
+ "cluster_arn": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].arn",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "Amazon Resource Name (ARN) of cluster"
+ },
+ "cluster_database_name": {
+ "expression": {
+ "references": [
+ "var.database_name"
+ ]
+ },
+ "description": "Name for an automatically created database on cluster creation"
+ },
+ "cluster_endpoint": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].endpoint",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "Writer endpoint for the cluster"
+ },
+ "cluster_engine_version_actual": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].engine_version_actual",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The running version of the cluster database"
+ },
+ "cluster_hosted_zone_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].hosted_zone_id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The Route53 Hosted Zone ID of the endpoint"
+ },
+ "cluster_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The RDS Cluster Identifier"
+ },
+ "cluster_instances": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_instance.this"
+ ]
+ },
+ "description": "A map of cluster instances and their attributes"
+ },
+ "cluster_master_password": {
+ "sensitive": true,
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].master_password",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database master password"
+ },
+ "cluster_master_username": {
+ "sensitive": true,
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].master_username",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database master username"
+ },
+ "cluster_members": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_members",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "List of RDS Instances that are a part of this cluster"
+ },
+ "cluster_port": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].port",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The database port"
+ },
+ "cluster_reader_endpoint": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].reader_endpoint",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "A read-only endpoint for the cluster, automatically load-balanced across replicas"
+ },
+ "cluster_resource_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_resource_id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "description": "The RDS Cluster Resource ID"
+ },
+ "cluster_role_associations": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_role_association.this"
+ ]
+ },
+ "description": "A map of IAM roles associated with the cluster and their attributes"
+ },
+ "db_cluster_parameter_group_arn": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_parameter_group.this[0].arn",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this"
+ ]
+ },
+ "description": "The ARN of the DB cluster parameter group created"
+ },
+ "db_cluster_parameter_group_id": {
+ "expression": {
+ "references": [
+ "aws_rds_cluster_parameter_group.this[0].id",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this"
+ ]
+ },
+ "description": "The ID of the DB cluster parameter group created"
+ },
+ "db_parameter_group_arn": {
+ "expression": {
+ "references": [
+ "aws_db_parameter_group.this[0].arn",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this"
+ ]
+ },
+ "description": "The ARN of the DB parameter group created"
+ },
+ "db_parameter_group_id": {
+ "expression": {
+ "references": [
+ "aws_db_parameter_group.this[0].id",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this"
+ ]
+ },
+ "description": "The ID of the DB parameter group created"
+ },
+ "db_subnet_group_name": {
+ "expression": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "description": "The db subnet group name"
+ },
+ "enhanced_monitoring_iam_role_arn": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].arn",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "The Amazon Resource Name (ARN) specifying the enhanced monitoring role"
+ },
+ "enhanced_monitoring_iam_role_name": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].name",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "The name of the enhanced monitoring role"
+ },
+ "enhanced_monitoring_iam_role_unique_id": {
+ "expression": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].unique_id",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ },
+ "description": "Stable and unique string identifying the enhanced monitoring role"
+ },
+ "security_group_id": {
+ "expression": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "description": "The security group ID of the cluster"
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_appautoscaling_policy.this",
+ "mode": "managed",
+ "type": "aws_appautoscaling_policy",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.autoscaling_policy_name"
+ ]
+ },
+ "policy_type": {
+ "constant_value": "TargetTrackingScaling"
+ },
+ "resource_id": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_identifier",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "scalable_dimension": {
+ "constant_value": "rds:cluster:ReadReplicaCount"
+ },
+ "service_namespace": {
+ "constant_value": "rds"
+ },
+ "target_tracking_scaling_policy_configuration": [
+ {
+ "predefined_metric_specification": [
+ {
+ "predefined_metric_type": {
+ "references": [
+ "var.predefined_metric_type"
+ ]
+ }
+ }
+ ],
+ "scale_in_cooldown": {
+ "references": [
+ "var.autoscaling_scale_in_cooldown"
+ ]
+ },
+ "scale_out_cooldown": {
+ "references": [
+ "var.autoscaling_scale_out_cooldown"
+ ]
+ },
+ "target_value": {
+ "references": [
+ "var.predefined_metric_type",
+ "var.autoscaling_target_cpu",
+ "var.autoscaling_target_connections"
+ ]
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.autoscaling_enabled",
+ "local.is_serverless"
+ ]
+ },
+ "depends_on": [
+ "aws_appautoscaling_target.this"
+ ]
+ },
+ {
+ "address": "aws_appautoscaling_target.this",
+ "mode": "managed",
+ "type": "aws_appautoscaling_target",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "max_capacity": {
+ "references": [
+ "var.autoscaling_max_capacity"
+ ]
+ },
+ "min_capacity": {
+ "references": [
+ "var.autoscaling_min_capacity"
+ ]
+ },
+ "resource_id": {
+ "references": [
+ "aws_rds_cluster.this[0].cluster_identifier",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "scalable_dimension": {
+ "constant_value": "rds:cluster:ReadReplicaCount"
+ },
+ "service_namespace": {
+ "constant_value": "rds"
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.autoscaling_enabled",
+ "local.is_serverless"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_parameter_group.this",
+ "mode": "managed",
+ "type": "aws_db_parameter_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.db_parameter_group_description"
+ ]
+ },
+ "family": {
+ "references": [
+ "var.db_parameter_group_family"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.db_parameter_group_use_name_prefix",
+ "local.db_parameter_group_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.db_parameter_group_use_name_prefix",
+ "local.db_parameter_group_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_parameter_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_subnet_group.this",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "local.internal_db_subnet_group_name"
+ ]
+ },
+ "subnet_ids": {
+ "references": [
+ "var.subnets"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.rds_enhanced_monitoring",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "rds_enhanced_monitoring",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "references": [
+ "data.aws_iam_policy_document.monitoring_rds_assume_role.json",
+ "data.aws_iam_policy_document.monitoring_rds_assume_role"
+ ]
+ },
+ "description": {
+ "references": [
+ "var.iam_role_description"
+ ]
+ },
+ "force_detach_policies": {
+ "references": [
+ "var.iam_role_force_detach_policies"
+ ]
+ },
+ "managed_policy_arns": {
+ "references": [
+ "var.iam_role_managed_policy_arns"
+ ]
+ },
+ "max_session_duration": {
+ "references": [
+ "var.iam_role_max_session_duration"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.iam_role_use_name_prefix",
+ "var.iam_role_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.iam_role_use_name_prefix",
+ "var.iam_role_name"
+ ]
+ },
+ "path": {
+ "references": [
+ "var.iam_role_path"
+ ]
+ },
+ "permissions_boundary": {
+ "references": [
+ "var.iam_role_permissions_boundary"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_monitoring_role",
+ "var.monitoring_interval"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.rds_enhanced_monitoring",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "rds_enhanced_monitoring",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": [
+ "data.aws_partition.current.partition",
+ "data.aws_partition.current"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.rds_enhanced_monitoring[0].name",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_monitoring_role",
+ "var.monitoring_interval"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "allocated_storage": {
+ "references": [
+ "var.allocated_storage"
+ ]
+ },
+ "allow_major_version_upgrade": {
+ "references": [
+ "var.allow_major_version_upgrade"
+ ]
+ },
+ "apply_immediately": {
+ "references": [
+ "var.apply_immediately"
+ ]
+ },
+ "availability_zones": {
+ "references": [
+ "var.availability_zones"
+ ]
+ },
+ "backtrack_window": {
+ "references": [
+ "local.backtrack_window"
+ ]
+ },
+ "backup_retention_period": {
+ "references": [
+ "var.backup_retention_period"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "var.cluster_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "cluster_identifier_prefix": {
+ "references": [
+ "var.cluster_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "cluster_members": {
+ "references": [
+ "var.cluster_members"
+ ]
+ },
+ "copy_tags_to_snapshot": {
+ "references": [
+ "var.copy_tags_to_snapshot"
+ ]
+ },
+ "database_name": {
+ "references": [
+ "var.is_primary_cluster",
+ "var.database_name"
+ ]
+ },
+ "db_cluster_instance_class": {
+ "references": [
+ "var.db_cluster_instance_class"
+ ]
+ },
+ "db_cluster_parameter_group_name": {
+ "references": [
+ "var.create_db_cluster_parameter_group",
+ "aws_rds_cluster_parameter_group.this[0].id",
+ "aws_rds_cluster_parameter_group.this[0]",
+ "aws_rds_cluster_parameter_group.this",
+ "var.db_cluster_parameter_group_name"
+ ]
+ },
+ "db_instance_parameter_group_name": {
+ "references": [
+ "var.allow_major_version_upgrade",
+ "var.db_cluster_db_instance_parameter_group_name"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "deletion_protection": {
+ "references": [
+ "var.deletion_protection"
+ ]
+ },
+ "enable_global_write_forwarding": {
+ "references": [
+ "var.enable_global_write_forwarding"
+ ]
+ },
+ "enable_http_endpoint": {
+ "references": [
+ "var.enable_http_endpoint"
+ ]
+ },
+ "enabled_cloudwatch_logs_exports": {
+ "references": [
+ "var.enabled_cloudwatch_logs_exports"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.engine"
+ ]
+ },
+ "engine_mode": {
+ "references": [
+ "var.engine_mode"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.engine_version"
+ ]
+ },
+ "final_snapshot_identifier": {
+ "references": [
+ "var.skip_final_snapshot",
+ "local.final_snapshot_identifier_prefix"
+ ]
+ },
+ "global_cluster_identifier": {
+ "references": [
+ "var.global_cluster_identifier"
+ ]
+ },
+ "iam_database_authentication_enabled": {
+ "references": [
+ "var.iam_database_authentication_enabled"
+ ]
+ },
+ "iops": {
+ "references": [
+ "var.iops"
+ ]
+ },
+ "kms_key_id": {
+ "references": [
+ "var.kms_key_id"
+ ]
+ },
+ "master_password": {
+ "references": [
+ "var.is_primary_cluster",
+ "local.master_password"
+ ]
+ },
+ "master_username": {
+ "references": [
+ "var.is_primary_cluster",
+ "var.master_username"
+ ]
+ },
+ "network_type": {
+ "references": [
+ "var.network_type"
+ ]
+ },
+ "port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "preferred_backup_window": {
+ "references": [
+ "local.is_serverless",
+ "var.preferred_backup_window"
+ ]
+ },
+ "preferred_maintenance_window": {
+ "references": [
+ "local.is_serverless",
+ "var.preferred_maintenance_window"
+ ]
+ },
+ "replication_source_identifier": {
+ "references": [
+ "var.replication_source_identifier"
+ ]
+ },
+ "skip_final_snapshot": {
+ "references": [
+ "var.skip_final_snapshot"
+ ]
+ },
+ "snapshot_identifier": {
+ "references": [
+ "var.snapshot_identifier"
+ ]
+ },
+ "source_region": {
+ "references": [
+ "var.source_region"
+ ]
+ },
+ "storage_encrypted": {
+ "references": [
+ "var.storage_encrypted"
+ ]
+ },
+ "storage_type": {
+ "references": [
+ "var.storage_type"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.cluster_tags"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "references": [
+ "var.cluster_timeouts.create",
+ "var.cluster_timeouts"
+ ]
+ },
+ "delete": {
+ "references": [
+ "var.cluster_timeouts.delete",
+ "var.cluster_timeouts"
+ ]
+ },
+ "update": {
+ "references": [
+ "var.cluster_timeouts.update",
+ "var.cluster_timeouts"
+ ]
+ }
+ },
+ "vpc_security_group_ids": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this",
+ "var.vpc_security_group_ids"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_endpoint.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_endpoint",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cluster_endpoint_identifier": {
+ "references": [
+ "each.value.identifier",
+ "each.value"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "custom_endpoint_type": {
+ "references": [
+ "each.value.type",
+ "each.value"
+ ]
+ },
+ "excluded_members": {
+ "references": [
+ "each.value.excluded_members",
+ "each.value"
+ ]
+ },
+ "static_members": {
+ "references": [
+ "each.value.static_members",
+ "each.value"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "each.value.tags",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.endpoints",
+ "local.create_cluster",
+ "local.is_serverless"
+ ]
+ },
+ "depends_on": [
+ "aws_rds_cluster_instance.this"
+ ]
+ },
+ {
+ "address": "aws_rds_cluster_instance.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_instance",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "apply_immediately": {
+ "references": [
+ "each.value.apply_immediately",
+ "each.value",
+ "var.apply_immediately"
+ ]
+ },
+ "auto_minor_version_upgrade": {
+ "references": [
+ "each.value.auto_minor_version_upgrade",
+ "each.value",
+ "var.auto_minor_version_upgrade"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "each.value.availability_zone",
+ "each.value"
+ ]
+ },
+ "ca_cert_identifier": {
+ "references": [
+ "var.ca_cert_identifier"
+ ]
+ },
+ "cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "copy_tags_to_snapshot": {
+ "references": [
+ "each.value.copy_tags_to_snapshot",
+ "each.value",
+ "var.copy_tags_to_snapshot"
+ ]
+ },
+ "db_parameter_group_name": {
+ "references": [
+ "var.create_db_parameter_group",
+ "aws_db_parameter_group.this[0].id",
+ "aws_db_parameter_group.this[0]",
+ "aws_db_parameter_group.this",
+ "var.db_parameter_group_name"
+ ]
+ },
+ "db_subnet_group_name": {
+ "references": [
+ "local.db_subnet_group_name"
+ ]
+ },
+ "engine": {
+ "references": [
+ "var.engine"
+ ]
+ },
+ "engine_version": {
+ "references": [
+ "var.engine_version"
+ ]
+ },
+ "identifier": {
+ "references": [
+ "var.instances_use_identifier_prefix",
+ "each.value.identifier",
+ "each.value",
+ "var.name",
+ "each.key"
+ ]
+ },
+ "identifier_prefix": {
+ "references": [
+ "var.instances_use_identifier_prefix",
+ "each.value.identifier_prefix",
+ "each.value",
+ "var.name",
+ "each.key"
+ ]
+ },
+ "instance_class": {
+ "references": [
+ "each.value.instance_class",
+ "each.value",
+ "var.instance_class"
+ ]
+ },
+ "monitoring_interval": {
+ "references": [
+ "each.value.monitoring_interval",
+ "each.value",
+ "var.monitoring_interval"
+ ]
+ },
+ "monitoring_role_arn": {
+ "references": [
+ "var.create_monitoring_role",
+ "aws_iam_role.rds_enhanced_monitoring[0].arn",
+ "aws_iam_role.rds_enhanced_monitoring[0]",
+ "aws_iam_role.rds_enhanced_monitoring",
+ "var.monitoring_role_arn"
+ ]
+ },
+ "performance_insights_enabled": {
+ "references": [
+ "each.value.performance_insights_enabled",
+ "each.value",
+ "var.performance_insights_enabled"
+ ]
+ },
+ "performance_insights_kms_key_id": {
+ "references": [
+ "each.value.performance_insights_kms_key_id",
+ "each.value",
+ "var.performance_insights_kms_key_id"
+ ]
+ },
+ "performance_insights_retention_period": {
+ "references": [
+ "each.value.performance_insights_retention_period",
+ "each.value",
+ "var.performance_insights_retention_period"
+ ]
+ },
+ "preferred_maintenance_window": {
+ "references": [
+ "each.value.preferred_maintenance_window",
+ "each.value",
+ "var.preferred_maintenance_window"
+ ]
+ },
+ "promotion_tier": {
+ "references": [
+ "each.value.promotion_tier",
+ "each.value"
+ ]
+ },
+ "publicly_accessible": {
+ "references": [
+ "each.value.publicly_accessible",
+ "each.value",
+ "var.publicly_accessible"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "each.value.tags",
+ "each.value"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "references": [
+ "var.instance_timeouts.create",
+ "var.instance_timeouts"
+ ]
+ },
+ "delete": {
+ "references": [
+ "var.instance_timeouts.delete",
+ "var.instance_timeouts"
+ ]
+ },
+ "update": {
+ "references": [
+ "var.instance_timeouts.update",
+ "var.instance_timeouts"
+ ]
+ }
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.instances",
+ "local.create_cluster",
+ "local.is_serverless"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_parameter_group.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_parameter_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.db_cluster_parameter_group_description"
+ ]
+ },
+ "family": {
+ "references": [
+ "var.db_cluster_parameter_group_family"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.db_cluster_parameter_group_use_name_prefix",
+ "local.cluster_parameter_group_name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.db_cluster_parameter_group_use_name_prefix",
+ "local.cluster_parameter_group_name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_db_cluster_parameter_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_rds_cluster_role_association.this",
+ "mode": "managed",
+ "type": "aws_rds_cluster_role_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "db_cluster_identifier": {
+ "references": [
+ "aws_rds_cluster.this[0].id",
+ "aws_rds_cluster.this[0]",
+ "aws_rds_cluster.this"
+ ]
+ },
+ "feature_name": {
+ "references": [
+ "each.value.feature_name",
+ "each.value"
+ ]
+ },
+ "role_arn": {
+ "references": [
+ "each.value.role_arn",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.iam_roles",
+ "local.create_cluster"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group.this",
+ "mode": "managed",
+ "type": "aws_security_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.security_group_description",
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.security_group_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.security_group_use_name_prefix",
+ "var.name"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.security_group_tags",
+ "var.name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.cidr_ingress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "cidr_ingress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_blocks": {
+ "references": [
+ "var.allowed_cidr_blocks"
+ ]
+ },
+ "description": {
+ "constant_value": "From allowed CIDRs"
+ },
+ "from_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.allowed_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.default_ingress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "default_ingress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "From allowed SGs"
+ },
+ "from_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "source_security_group_id": {
+ "references": [
+ "var.allowed_security_groups",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "ingress"
+ }
+ },
+ "schema_version": 2,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.allowed_security_groups"
+ ]
+ }
+ },
+ {
+ "address": "aws_security_group_rule.egress",
+ "mode": "managed",
+ "type": "aws_security_group_rule",
+ "name": "egress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_blocks": {
+ "references": [
+ "each.value.cidr_blocks",
+ "each.value"
+ ]
+ },
+ "description": {
+ "references": [
+ "each.value.description",
+ "each.value"
+ ]
+ },
+ "from_port": {
+ "references": [
+ "each.value.from_port",
+ "each.value",
+ "local.port"
+ ]
+ },
+ "ipv6_cidr_blocks": {
+ "references": [
+ "each.value.ipv6_cidr_blocks",
+ "each.value"
+ ]
+ },
+ "prefix_list_ids": {
+ "references": [
+ "each.value.prefix_list_ids",
+ "each.value"
+ ]
+ },
+ "protocol": {
+ "constant_value": "tcp"
+ },
+ "security_group_id": {
+ "references": [
+ "aws_security_group.this[0].id",
+ "aws_security_group.this[0]",
+ "aws_security_group.this"
+ ]
+ },
+ "source_security_group_id": {
+ "references": [
+ "each.value.source_security_group_id",
+ "each.value"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "each.value.to_port",
+ "each.value",
+ "local.port"
+ ]
+ },
+ "type": {
+ "constant_value": "egress"
+ }
+ },
+ "schema_version": 2,
+ "for_each_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_security_group",
+ "var.security_group_egress_rules"
+ ]
+ }
+ },
+ {
+ "address": "random_id.snapshot_identifier",
+ "mode": "managed",
+ "type": "random_id",
+ "name": "snapshot_identifier",
+ "provider_config_key": "module.aurora-db-green:random",
+ "expressions": {
+ "byte_length": {
+ "constant_value": 4
+ },
+ "keepers": {
+ "references": [
+ "var.name"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.skip_final_snapshot"
+ ]
+ }
+ },
+ {
+ "address": "random_password.master_password",
+ "mode": "managed",
+ "type": "random_password",
+ "name": "master_password",
+ "provider_config_key": "module.aurora-db-green:random",
+ "expressions": {
+ "length": {
+ "references": [
+ "var.random_password_length"
+ ]
+ },
+ "special": {
+ "constant_value": false
+ }
+ },
+ "schema_version": 3,
+ "count_expression": {
+ "references": [
+ "local.create_cluster",
+ "var.create_random_password"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.monitoring_rds_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "monitoring_rds_assume_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "statement": [
+ {
+ "actions": {
+ "constant_value": [
+ "sts:AssumeRole"
+ ]
+ },
+ "principals": [
+ {
+ "identifiers": {
+ "constant_value": [
+ "monitoring.rds.amazonaws.com"
+ ]
+ },
+ "type": {
+ "constant_value": "Service"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "data.aws_partition.current",
+ "mode": "data",
+ "type": "aws_partition",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }
+ ],
+ "variables": {
+ "allocated_storage": {
+ "default": null,
+ "description": "The amount of storage in gibibytes (GiB) to allocate to each DB instance in the Multi-AZ DB cluster. (This setting is required to create a Multi-AZ DB cluster)"
+ },
+ "allow_major_version_upgrade": {
+ "default": false,
+ "description": "Enable to allow major engine version upgrades when changing engine versions. Defaults to `false`"
+ },
+ "allowed_cidr_blocks": {
+ "default": [],
+ "description": "A list of CIDR blocks which are allowed to access the database"
+ },
+ "allowed_security_groups": {
+ "default": [],
+ "description": "A list of Security Group ID's to allow access to"
+ },
+ "apply_immediately": {
+ "default": null,
+ "description": "Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`"
+ },
+ "auto_minor_version_upgrade": {
+ "default": null,
+ "description": "Indicates that minor engine upgrades will be applied automatically to the DB instance during the maintenance window. Default `true`"
+ },
+ "autoscaling_enabled": {
+ "default": false,
+ "description": "Determines whether autoscaling of the cluster read replicas is enabled"
+ },
+ "autoscaling_max_capacity": {
+ "default": 2,
+ "description": "Maximum number of read replicas permitted when autoscaling is enabled"
+ },
+ "autoscaling_min_capacity": {
+ "default": 0,
+ "description": "Minimum number of read replicas permitted when autoscaling is enabled"
+ },
+ "autoscaling_policy_name": {
+ "default": "target-metric",
+ "description": "Autoscaling policy name"
+ },
+ "autoscaling_scale_in_cooldown": {
+ "default": 300,
+ "description": "Cooldown in seconds before allowing further scaling operations after a scale in"
+ },
+ "autoscaling_scale_out_cooldown": {
+ "default": 300,
+ "description": "Cooldown in seconds before allowing further scaling operations after a scale out"
+ },
+ "autoscaling_target_connections": {
+ "default": 700,
+ "description": "Average number of connections threshold which will initiate autoscaling. Default value is 70% of db.r4/r5/r6g.large's default max_connections"
+ },
+ "autoscaling_target_cpu": {
+ "default": 70,
+ "description": "CPU threshold which will initiate autoscaling"
+ },
+ "availability_zones": {
+ "default": null,
+ "description": "List of EC2 Availability Zones for the DB cluster storage where DB cluster instances can be created. RDS automatically assigns 3 AZs if less than 3 AZs are configured, which will show as a difference requiring resource recreation next Terraform apply"
+ },
+ "backtrack_window": {
+ "default": null,
+ "description": "The target backtrack window, in seconds. Only available for `aurora` engine currently. To disable backtracking, set this value to 0. Must be between 0 and 259200 (72 hours)"
+ },
+ "backup_retention_period": {
+ "default": 7,
+ "description": "The days to retain backups for. Default `7`"
+ },
+ "ca_cert_identifier": {
+ "default": null,
+ "description": "The identifier of the CA certificate for the DB instance"
+ },
+ "cluster_members": {
+ "default": null,
+ "description": "List of RDS Instances that are a part of this cluster"
+ },
+ "cluster_tags": {
+ "default": {},
+ "description": "A map of tags to add to only the cluster. Used for AWS Instance Scheduler tagging"
+ },
+ "cluster_timeouts": {
+ "default": {},
+ "description": "Create, update, and delete timeout configurations for the cluster"
+ },
+ "cluster_use_name_prefix": {
+ "default": false,
+ "description": "Whether to use `name` as a prefix for the cluster"
+ },
+ "copy_tags_to_snapshot": {
+ "default": null,
+ "description": "Copy all Cluster `tags` to snapshots"
+ },
+ "create_cluster": {
+ "default": true,
+ "description": "Whether cluster should be created (affects nearly all resources)"
+ },
+ "create_db_cluster_parameter_group": {
+ "default": false,
+ "description": "Determines whether a cluster parameter should be created or use existing"
+ },
+ "create_db_parameter_group": {
+ "default": false,
+ "description": "Determines whether a DB parameter should be created or use existing"
+ },
+ "create_db_subnet_group": {
+ "default": true,
+ "description": "Determines whether to create the database subnet group or use existing"
+ },
+ "create_monitoring_role": {
+ "default": true,
+ "description": "Determines whether to create the IAM role for RDS enhanced monitoring"
+ },
+ "create_random_password": {
+ "default": true,
+ "description": "Determines whether to create random password for RDS primary cluster"
+ },
+ "create_security_group": {
+ "default": true,
+ "description": "Determines whether to create security group for RDS cluster"
+ },
+ "database_name": {
+ "default": null,
+ "description": "Name for an automatically created database on cluster creation"
+ },
+ "db_cluster_db_instance_parameter_group_name": {
+ "default": null,
+ "description": "Instance parameter group to associate with all instances of the DB cluster. The `db_cluster_db_instance_parameter_group_name` is only valid in combination with `allow_major_version_upgrade`"
+ },
+ "db_cluster_instance_class": {
+ "default": null,
+ "description": "The compute and memory capacity of each DB instance in the Multi-AZ DB cluster, for example db.m6g.xlarge. Not all DB instance classes are available in all AWS Regions, or for all database engines"
+ },
+ "db_cluster_parameter_group_description": {
+ "default": null,
+ "description": "The description of the DB cluster parameter group. Defaults to \"Managed by Terraform\""
+ },
+ "db_cluster_parameter_group_family": {
+ "default": "",
+ "description": "The family of the DB cluster parameter group"
+ },
+ "db_cluster_parameter_group_name": {
+ "default": null,
+ "description": "The name of the DB cluster parameter group"
+ },
+ "db_cluster_parameter_group_parameters": {
+ "default": [],
+ "description": "A list of DB cluster parameters to apply. Note that parameters may differ from a family to an other"
+ },
+ "db_cluster_parameter_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the DB cluster parameter group name is used as a prefix"
+ },
+ "db_parameter_group_description": {
+ "default": null,
+ "description": "The description of the DB parameter group. Defaults to \"Managed by Terraform\""
+ },
+ "db_parameter_group_family": {
+ "default": "",
+ "description": "The family of the DB parameter group"
+ },
+ "db_parameter_group_name": {
+ "default": null,
+ "description": "The name of the DB parameter group"
+ },
+ "db_parameter_group_parameters": {
+ "default": [],
+ "description": "A list of DB parameters to apply. Note that parameters may differ from a family to an other"
+ },
+ "db_parameter_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the DB parameter group name is used as a prefix"
+ },
+ "db_subnet_group_name": {
+ "default": "",
+ "description": "The name of the subnet group name (existing or created)"
+ },
+ "deletion_protection": {
+ "default": null,
+ "description": "If the DB instance should have deletion protection enabled. The database can't be deleted when this value is set to `true`. The default is `false`"
+ },
+ "enable_global_write_forwarding": {
+ "default": null,
+ "description": "Whether cluster should forward writes to an associated global cluster. Applied to secondary clusters to enable them to forward writes to an `aws_rds_global_cluster`'s primary cluster"
+ },
+ "enable_http_endpoint": {
+ "default": null,
+ "description": "Enable HTTP endpoint (data API). Only valid when engine_mode is set to `serverless`"
+ },
+ "enabled_cloudwatch_logs_exports": {
+ "default": [],
+ "description": "Set of log types to export to cloudwatch. If omitted, no logs will be exported. The following log types are supported: `audit`, `error`, `general`, `slowquery`, `postgresql`"
+ },
+ "endpoints": {
+ "default": {},
+ "description": "Map of additional cluster endpoints and their attributes to be created"
+ },
+ "engine": {
+ "default": null,
+ "description": "The name of the database engine to be used for this DB cluster. Defaults to `aurora`. Valid Values: `aurora`, `aurora-mysql`, `aurora-postgresql`"
+ },
+ "engine_mode": {
+ "default": null,
+ "description": "The database engine mode. Valid values: `global`, `multimaster`, `parallelquery`, `provisioned`, `serverless`. Defaults to: `provisioned`"
+ },
+ "engine_version": {
+ "default": null,
+ "description": "The database engine version. Updating this argument results in an outage"
+ },
+ "final_snapshot_identifier_prefix": {
+ "default": "final",
+ "description": "The prefix name to use when creating a final snapshot on cluster destroy; a 8 random digits are appended to name to ensure it's unique"
+ },
+ "global_cluster_identifier": {
+ "default": null,
+ "description": "The global cluster identifier specified on `aws_rds_global_cluster`"
+ },
+ "iam_database_authentication_enabled": {
+ "default": null,
+ "description": "Specifies whether or mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled"
+ },
+ "iam_role_description": {
+ "default": null,
+ "description": "Description of the monitoring role"
+ },
+ "iam_role_force_detach_policies": {
+ "default": null,
+ "description": "Whether to force detaching any policies the monitoring role has before destroying it"
+ },
+ "iam_role_managed_policy_arns": {
+ "default": null,
+ "description": "Set of exclusive IAM managed policy ARNs to attach to the monitoring role"
+ },
+ "iam_role_max_session_duration": {
+ "default": null,
+ "description": "Maximum session duration (in seconds) that you want to set for the monitoring role"
+ },
+ "iam_role_name": {
+ "default": null,
+ "description": "Friendly name of the monitoring role"
+ },
+ "iam_role_path": {
+ "default": null,
+ "description": "Path for the monitoring role"
+ },
+ "iam_role_permissions_boundary": {
+ "default": null,
+ "description": "The ARN of the policy that is used to set the permissions boundary for the monitoring role"
+ },
+ "iam_role_use_name_prefix": {
+ "default": false,
+ "description": "Determines whether to use `iam_role_name` as is or create a unique name beginning with the `iam_role_name` as the prefix"
+ },
+ "iam_roles": {
+ "default": {},
+ "description": "Map of IAM roles and supported feature names to associate with the cluster"
+ },
+ "instance_class": {
+ "default": "",
+ "description": "Instance type to use at master instance. Note: if `autoscaling_enabled` is `true`, this will be the same instance class used on instances created by autoscaling"
+ },
+ "instance_timeouts": {
+ "default": {},
+ "description": "Create, update, and delete timeout configurations for the cluster instance(s)"
+ },
+ "instances": {
+ "default": {},
+ "description": "Map of cluster instances and any specific/overriding attributes to be created"
+ },
+ "instances_use_identifier_prefix": {
+ "default": false,
+ "description": "Determines whether cluster instance identifiers are used as prefixes"
+ },
+ "iops": {
+ "default": null,
+ "description": "The amount of Provisioned IOPS (input/output operations per second) to be initially allocated for each DB instance in the Multi-AZ DB cluster"
+ },
+ "is_primary_cluster": {
+ "default": true,
+ "description": "Determines whether cluster is primary cluster with writer instance (set to `false` for global cluster and replica clusters)"
+ },
+ "kms_key_id": {
+ "default": null,
+ "description": "The ARN for the KMS encryption key. When specifying `kms_key_id`, `storage_encrypted` needs to be set to `true`"
+ },
+ "master_password": {
+ "default": null,
+ "description": "Password for the master DB user. Note - when specifying a value here, 'create_random_password' should be set to `false`"
+ },
+ "master_username": {
+ "default": "root",
+ "description": "Username for the master DB user"
+ },
+ "monitoring_interval": {
+ "default": 0,
+ "description": "The interval, in seconds, between points when Enhanced Monitoring metrics are collected for instances. Set to `0` to disable. Default is `0`"
+ },
+ "monitoring_role_arn": {
+ "default": "",
+ "description": "IAM role used by RDS to send enhanced monitoring metrics to CloudWatch"
+ },
+ "name": {
+ "default": "",
+ "description": "Name used across resources created"
+ },
+ "network_type": {
+ "default": null,
+ "description": "The type of network stack to use (IPV4 or DUAL)"
+ },
+ "performance_insights_enabled": {
+ "default": null,
+ "description": "Specifies whether Performance Insights is enabled or not"
+ },
+ "performance_insights_kms_key_id": {
+ "default": null,
+ "description": "The ARN for the KMS key to encrypt Performance Insights data"
+ },
+ "performance_insights_retention_period": {
+ "default": null,
+ "description": "Amount of time in days to retain Performance Insights data. Either 7 (7 days) or 731 (2 years)"
+ },
+ "port": {
+ "default": null,
+ "description": "The port on which the DB accepts connections"
+ },
+ "predefined_metric_type": {
+ "default": "RDSReaderAverageCPUUtilization",
+ "description": "The metric type to scale on. Valid values are `RDSReaderAverageCPUUtilization` and `RDSReaderAverageDatabaseConnections`"
+ },
+ "preferred_backup_window": {
+ "default": "02:00-03:00",
+ "description": "The daily time range during which automated backups are created if automated backups are enabled using the `backup_retention_period` parameter. Time in UTC"
+ },
+ "preferred_maintenance_window": {
+ "default": "sun:05:00-sun:06:00",
+ "description": "The weekly time range during which system maintenance can occur, in (UTC)"
+ },
+ "publicly_accessible": {
+ "default": null,
+ "description": "Determines whether instances are publicly accessible. Default false"
+ },
+ "putin_khuylo": {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "random_password_length": {
+ "default": 10,
+ "description": "Length of random password to create. Defaults to `10`"
+ },
+ "replication_source_identifier": {
+ "default": null,
+ "description": "ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica"
+ },
+ "restore_to_point_in_time": {
+ "default": {},
+ "description": "Map of nested attributes for cloning Aurora cluster"
+ },
+ "s3_import": {
+ "default": {},
+ "description": "Configuration map used to restore from a Percona Xtrabackup in S3 (only MySQL is supported)"
+ },
+ "scaling_configuration": {
+ "default": {},
+ "description": "Map of nested attributes with scaling properties. Only valid when `engine_mode` is set to `serverless`"
+ },
+ "security_group_description": {
+ "default": null,
+ "description": "The description of the security group. If value is set to empty string it will contain cluster name in the description"
+ },
+ "security_group_egress_rules": {
+ "default": {},
+ "description": "A map of security group egress rule definitions to add to the security group created"
+ },
+ "security_group_tags": {
+ "default": {},
+ "description": "Additional tags for the security group"
+ },
+ "security_group_use_name_prefix": {
+ "default": true,
+ "description": "Determines whether the security group name (`name`) is used as a prefix"
+ },
+ "serverlessv2_scaling_configuration": {
+ "default": {},
+ "description": "Map of nested attributes with serverless v2 scaling properties. Only valid when `engine_mode` is set to `provisioned`"
+ },
+ "skip_final_snapshot": {
+ "default": false,
+ "description": "Determines whether a final snapshot is created before the cluster is deleted. If true is specified, no snapshot is created"
+ },
+ "snapshot_identifier": {
+ "default": null,
+ "description": "Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a DB cluster snapshot, or the ARN when specifying a DB snapshot"
+ },
+ "source_region": {
+ "default": null,
+ "description": "The source region for an encrypted replica DB cluster"
+ },
+ "storage_encrypted": {
+ "default": true,
+ "description": "Specifies whether the DB cluster is encrypted. The default is `true`"
+ },
+ "storage_type": {
+ "default": null,
+ "description": "Specifies the storage type to be associated with the DB cluster. (This setting is required to create a Multi-AZ DB cluster). Valid values: `io1`, Default: `io1`"
+ },
+ "subnets": {
+ "default": [],
+ "description": "List of subnet IDs used by database subnet group created"
+ },
+ "tags": {
+ "default": {},
+ "description": "A map of tags to add to all resources"
+ },
+ "vpc_id": {
+ "default": "",
+ "description": "ID of the VPC where to create security group"
+ },
+ "vpc_security_group_ids": {
+ "default": [],
+ "description": "List of VPC security groups to associate to the cluster in addition to the SG we create in this module"
+ }
+ }
+ },
+ "version_constraint": "7.6.0"
+ },
+ "iriusrisk_alb": {
+ "source": "terraform-aws-modules/alb/aws",
+ "expressions": {
+ "enable_deletion_protection": {
+ "constant_value": false
+ },
+ "http_tcp_listeners": {
+ "constant_value": [
+ {
+ "action_type": "redirect",
+ "port": 80,
+ "protocol": "HTTP",
+ "redirect": {
+ "port": "443",
+ "protocol": "HTTPS",
+ "status_code": "HTTP_302"
+ }
+ }
+ ]
+ },
+ "https_listener_rules": {
+ "constant_value": [
+ {
+ "actions": [
+ {
+ "target_group_index": 1,
+ "type": "forward"
+ }
+ ],
+ "conditions": [
+ {
+ "path_patterns": [
+ "/api/*",
+ "/api"
+ ]
+ }
+ ],
+ "https_listener_index": 0
+ }
+ ]
+ },
+ "https_listeners": {
+ "references": [
+ "var.certificate_arn"
+ ]
+ },
+ "idle_timeout": {
+ "constant_value": 900
+ },
+ "load_balancer_type": {
+ "constant_value": "application"
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "security_groups": {
+ "references": [
+ "aws_security_group.alb.id",
+ "aws_security_group.alb"
+ ]
+ },
+ "subnets": {
+ "references": [
+ "module.vpc.public_subnets",
+ "module.vpc"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags",
+ "var.stack_name"
+ ]
+ },
+ "target_groups": {
+ "references": [
+ "var.stack_name",
+ "var.stack_name"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "module.vpc.vpc_id",
+ "module.vpc"
+ ]
+ }
+ },
+ "module": {
+ "outputs": {
+ "http_tcp_listener_arns": {
+ "expression": {
+ "references": [
+ "aws_lb_listener.frontend_http_tcp"
+ ]
+ },
+ "description": "The ARN of the TCP and HTTP load balancer listeners created."
+ },
+ "http_tcp_listener_ids": {
+ "expression": {
+ "references": [
+ "aws_lb_listener.frontend_http_tcp"
+ ]
+ },
+ "description": "The IDs of the TCP and HTTP load balancer listeners created."
+ },
+ "https_listener_arns": {
+ "expression": {
+ "references": [
+ "aws_lb_listener.frontend_https"
+ ]
+ },
+ "description": "The ARNs of the HTTPS load balancer listeners created."
+ },
+ "https_listener_ids": {
+ "expression": {
+ "references": [
+ "aws_lb_listener.frontend_https"
+ ]
+ },
+ "description": "The IDs of the load balancer listeners created."
+ },
+ "lb_arn": {
+ "expression": {
+ "references": [
+ "aws_lb.this"
+ ]
+ },
+ "description": "The ID and ARN of the load balancer we created."
+ },
+ "lb_arn_suffix": {
+ "expression": {
+ "references": [
+ "aws_lb.this"
+ ]
+ },
+ "description": "ARN suffix of our load balancer - can be used with CloudWatch."
+ },
+ "lb_dns_name": {
+ "expression": {
+ "references": [
+ "aws_lb.this"
+ ]
+ },
+ "description": "The DNS name of the load balancer."
+ },
+ "lb_id": {
+ "expression": {
+ "references": [
+ "aws_lb.this"
+ ]
+ },
+ "description": "The ID and ARN of the load balancer we created."
+ },
+ "lb_zone_id": {
+ "expression": {
+ "references": [
+ "aws_lb.this"
+ ]
+ },
+ "description": "The zone_id of the load balancer to assist with creating DNS records."
+ },
+ "target_group_arn_suffixes": {
+ "expression": {
+ "references": [
+ "aws_lb_target_group.main"
+ ]
+ },
+ "description": "ARN suffixes of our target groups - can be used with CloudWatch."
+ },
+ "target_group_arns": {
+ "expression": {
+ "references": [
+ "aws_lb_target_group.main"
+ ]
+ },
+ "description": "ARNs of the target groups. Useful for passing to your Auto Scaling group."
+ },
+ "target_group_attachments": {
+ "expression": {
+ "references": [
+ "aws_lb_target_group_attachment.this"
+ ]
+ },
+ "description": "ARNs of the target group attachment IDs."
+ },
+ "target_group_names": {
+ "expression": {
+ "references": [
+ "aws_lb_target_group.main"
+ ]
+ },
+ "description": "Name of the target group. Useful for passing to your CodeDeploy Deployment Group."
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_lambda_permission.lb",
+ "mode": "managed",
+ "type": "aws_lambda_permission",
+ "name": "lb",
+ "provider_config_key": "aws",
+ "expressions": {
+ "action": {
+ "references": [
+ "each.value.lambda_action",
+ "each.value"
+ ]
+ },
+ "event_source_token": {
+ "references": [
+ "each.value.lambda_event_source_token",
+ "each.value"
+ ]
+ },
+ "function_name": {
+ "references": [
+ "each.value.lambda_function_name",
+ "each.value"
+ ]
+ },
+ "principal": {
+ "references": [
+ "each.value.lambda_principal",
+ "each.value"
+ ]
+ },
+ "qualifier": {
+ "references": [
+ "each.value.lambda_qualifier",
+ "each.value"
+ ]
+ },
+ "source_account": {
+ "references": [
+ "each.value.lambda_source_account",
+ "each.value"
+ ]
+ },
+ "source_arn": {
+ "references": [
+ "aws_lb_target_group.main",
+ "each.value.tg_index",
+ "each.value"
+ ]
+ },
+ "statement_id": {
+ "references": [
+ "each.value.lambda_statement_id",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "local.target_group_attachments_lambda",
+ "local.create_lb"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb.this",
+ "mode": "managed",
+ "type": "aws_lb",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "desync_mitigation_mode": {
+ "references": [
+ "var.desync_mitigation_mode"
+ ]
+ },
+ "drop_invalid_header_fields": {
+ "references": [
+ "var.drop_invalid_header_fields"
+ ]
+ },
+ "enable_cross_zone_load_balancing": {
+ "references": [
+ "var.enable_cross_zone_load_balancing"
+ ]
+ },
+ "enable_deletion_protection": {
+ "references": [
+ "var.enable_deletion_protection"
+ ]
+ },
+ "enable_http2": {
+ "references": [
+ "var.enable_http2"
+ ]
+ },
+ "enable_waf_fail_open": {
+ "references": [
+ "var.enable_waf_fail_open"
+ ]
+ },
+ "idle_timeout": {
+ "references": [
+ "var.idle_timeout"
+ ]
+ },
+ "internal": {
+ "references": [
+ "var.internal"
+ ]
+ },
+ "ip_address_type": {
+ "references": [
+ "var.ip_address_type"
+ ]
+ },
+ "load_balancer_type": {
+ "references": [
+ "var.load_balancer_type"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.name_prefix"
+ ]
+ },
+ "security_groups": {
+ "references": [
+ "var.security_groups"
+ ]
+ },
+ "subnets": {
+ "references": [
+ "var.subnets"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.lb_tags",
+ "var.name",
+ "var.name",
+ "var.name_prefix"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "references": [
+ "var.load_balancer_create_timeout"
+ ]
+ },
+ "delete": {
+ "references": [
+ "var.load_balancer_delete_timeout"
+ ]
+ },
+ "update": {
+ "references": [
+ "var.load_balancer_update_timeout"
+ ]
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_listener.frontend_http_tcp",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_http_tcp",
+ "provider_config_key": "aws",
+ "expressions": {
+ "load_balancer_arn": {
+ "references": [
+ "aws_lb.this[0].arn",
+ "aws_lb.this[0]",
+ "aws_lb.this"
+ ]
+ },
+ "port": {
+ "references": [
+ "var.http_tcp_listeners",
+ "count.index"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.http_tcp_listeners",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.http_tcp_listeners_tags",
+ "var.http_tcp_listeners",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.http_tcp_listeners"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_listener.frontend_https",
+ "mode": "managed",
+ "type": "aws_lb_listener",
+ "name": "frontend_https",
+ "provider_config_key": "aws",
+ "expressions": {
+ "alpn_policy": {
+ "references": [
+ "var.https_listeners",
+ "count.index"
+ ]
+ },
+ "certificate_arn": {
+ "references": [
+ "var.https_listeners",
+ "count.index"
+ ]
+ },
+ "load_balancer_arn": {
+ "references": [
+ "aws_lb.this[0].arn",
+ "aws_lb.this[0]",
+ "aws_lb.this"
+ ]
+ },
+ "port": {
+ "references": [
+ "var.https_listeners",
+ "count.index"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.https_listeners",
+ "count.index"
+ ]
+ },
+ "ssl_policy": {
+ "references": [
+ "var.https_listeners",
+ "count.index",
+ "var.listener_ssl_policy_default"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.https_listeners_tags",
+ "var.https_listeners",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.https_listeners"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_listener_certificate.https_listener",
+ "mode": "managed",
+ "type": "aws_lb_listener_certificate",
+ "name": "https_listener",
+ "provider_config_key": "aws",
+ "expressions": {
+ "certificate_arn": {
+ "references": [
+ "var.extra_ssl_certs",
+ "count.index"
+ ]
+ },
+ "listener_arn": {
+ "references": [
+ "aws_lb_listener.frontend_https",
+ "var.extra_ssl_certs",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.extra_ssl_certs"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_listener_rule.http_tcp_listener_rule",
+ "mode": "managed",
+ "type": "aws_lb_listener_rule",
+ "name": "http_tcp_listener_rule",
+ "provider_config_key": "aws",
+ "expressions": {
+ "listener_arn": {
+ "references": [
+ "aws_lb_listener.frontend_http_tcp",
+ "var.http_tcp_listener_rules",
+ "count.index",
+ "count.index"
+ ]
+ },
+ "priority": {
+ "references": [
+ "var.http_tcp_listener_rules",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.http_tcp_listener_rules_tags",
+ "var.http_tcp_listener_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.http_tcp_listener_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_listener_rule.https_listener_rule",
+ "mode": "managed",
+ "type": "aws_lb_listener_rule",
+ "name": "https_listener_rule",
+ "provider_config_key": "aws",
+ "expressions": {
+ "listener_arn": {
+ "references": [
+ "aws_lb_listener.frontend_https",
+ "var.https_listener_rules",
+ "count.index",
+ "count.index"
+ ]
+ },
+ "priority": {
+ "references": [
+ "var.https_listener_rules",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.https_listener_rules_tags",
+ "var.https_listener_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.https_listener_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_target_group.main",
+ "mode": "managed",
+ "type": "aws_lb_target_group",
+ "name": "main",
+ "provider_config_key": "aws",
+ "expressions": {
+ "connection_termination": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "deregistration_delay": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "ip_address_type": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "lambda_multi_value_headers_enabled": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "load_balancing_algorithm_type": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "name_prefix": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "port": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "preserve_client_ip": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.target_groups",
+ "count.index",
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "protocol_version": {
+ "references": [
+ "var.target_groups",
+ "count.index",
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "proxy_protocol_v2": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "slow_start": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.target_group_tags",
+ "var.target_groups",
+ "count.index",
+ "var.target_groups",
+ "count.index",
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "target_type": {
+ "references": [
+ "var.target_groups",
+ "count.index"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "var.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_lb",
+ "var.target_groups"
+ ]
+ }
+ },
+ {
+ "address": "aws_lb_target_group_attachment.this",
+ "mode": "managed",
+ "type": "aws_lb_target_group_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "availability_zone": {
+ "references": [
+ "each.value"
+ ]
+ },
+ "port": {
+ "references": [
+ "each.value"
+ ]
+ },
+ "target_group_arn": {
+ "references": [
+ "aws_lb_target_group.main",
+ "each.value.tg_index",
+ "each.value"
+ ]
+ },
+ "target_id": {
+ "references": [
+ "each.value.target_id",
+ "each.value"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "local.target_group_attachments",
+ "local.create_lb"
+ ]
+ },
+ "depends_on": [
+ "aws_lambda_permission.lb"
+ ]
+ }
+ ],
+ "variables": {
+ "access_logs": {
+ "default": {},
+ "description": "Map containing access logging configuration for load balancer."
+ },
+ "create_lb": {
+ "default": true,
+ "description": "Controls if the Load Balancer should be created"
+ },
+ "desync_mitigation_mode": {
+ "default": "defensive",
+ "description": "Determines how the load balancer handles requests that might pose a security risk to an application due to HTTP desync."
+ },
+ "drop_invalid_header_fields": {
+ "default": false,
+ "description": "Indicates whether invalid header fields are dropped in application load balancers. Defaults to false."
+ },
+ "enable_cross_zone_load_balancing": {
+ "default": false,
+ "description": "Indicates whether cross zone load balancing should be enabled in application load balancers."
+ },
+ "enable_deletion_protection": {
+ "default": false,
+ "description": "If true, deletion of the load balancer will be disabled via the AWS API. This will prevent Terraform from deleting the load balancer. Defaults to false."
+ },
+ "enable_http2": {
+ "default": true,
+ "description": "Indicates whether HTTP/2 is enabled in application load balancers."
+ },
+ "enable_waf_fail_open": {
+ "default": false,
+ "description": "Indicates whether to route requests to targets if lb fails to forward the request to AWS WAF"
+ },
+ "extra_ssl_certs": {
+ "default": [],
+ "description": "A list of maps describing any extra SSL certificates to apply to the HTTPS listeners. Required key/values: certificate_arn, https_listener_index (the index of the listener within https_listeners which the cert applies toward)."
+ },
+ "http_tcp_listener_rules": {
+ "default": [],
+ "description": "A list of maps describing the Listener Rules for this ALB. Required key/values: actions, conditions. Optional key/values: priority, http_tcp_listener_index (default to http_tcp_listeners[count.index])"
+ },
+ "http_tcp_listener_rules_tags": {
+ "default": {},
+ "description": "A map of tags to add to all http listener rules"
+ },
+ "http_tcp_listeners": {
+ "default": [],
+ "description": "A list of maps describing the HTTP listeners or TCP ports for this ALB. Required key/values: port, protocol. Optional key/values: target_group_index (defaults to http_tcp_listeners[count.index])"
+ },
+ "http_tcp_listeners_tags": {
+ "default": {},
+ "description": "A map of tags to add to all http listeners"
+ },
+ "https_listener_rules": {
+ "default": [],
+ "description": "A list of maps describing the Listener Rules for this ALB. Required key/values: actions, conditions. Optional key/values: priority, https_listener_index (default to https_listeners[count.index])"
+ },
+ "https_listener_rules_tags": {
+ "default": {},
+ "description": "A map of tags to add to all https listener rules"
+ },
+ "https_listeners": {
+ "default": [],
+ "description": "A list of maps describing the HTTPS listeners for this ALB. Required key/values: port, certificate_arn. Optional key/values: ssl_policy (defaults to ELBSecurityPolicy-2016-08), target_group_index (defaults to https_listeners[count.index])"
+ },
+ "https_listeners_tags": {
+ "default": {},
+ "description": "A map of tags to add to all https listeners"
+ },
+ "idle_timeout": {
+ "default": 60,
+ "description": "The time in seconds that the connection is allowed to be idle."
+ },
+ "internal": {
+ "default": false,
+ "description": "Boolean determining if the load balancer is internal or externally facing."
+ },
+ "ip_address_type": {
+ "default": "ipv4",
+ "description": "The type of IP addresses used by the subnets for your load balancer. The possible values are ipv4 and dualstack."
+ },
+ "lb_tags": {
+ "default": {},
+ "description": "A map of tags to add to load balancer"
+ },
+ "listener_ssl_policy_default": {
+ "default": "ELBSecurityPolicy-2016-08",
+ "description": "The security policy if using HTTPS externally on the load balancer. [See](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html)."
+ },
+ "load_balancer_create_timeout": {
+ "default": "10m",
+ "description": "Timeout value when creating the ALB."
+ },
+ "load_balancer_delete_timeout": {
+ "default": "10m",
+ "description": "Timeout value when deleting the ALB."
+ },
+ "load_balancer_type": {
+ "default": "application",
+ "description": "The type of load balancer to create. Possible values are application or network."
+ },
+ "load_balancer_update_timeout": {
+ "default": "10m",
+ "description": "Timeout value when updating the ALB."
+ },
+ "name": {
+ "default": null,
+ "description": "The resource name and Name tag of the load balancer."
+ },
+ "name_prefix": {
+ "default": null,
+ "description": "The resource name prefix and Name tag of the load balancer. Cannot be longer than 6 characters"
+ },
+ "putin_khuylo": {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "security_groups": {
+ "default": [],
+ "description": "The security groups to attach to the load balancer. e.g. [\"sg-edcd9784\",\"sg-edcd9785\"]"
+ },
+ "subnet_mapping": {
+ "default": [],
+ "description": "A list of subnet mapping blocks describing subnets to attach to network load balancer"
+ },
+ "subnets": {
+ "default": null,
+ "description": "A list of subnets to associate with the load balancer. e.g. ['subnet-1a2b3c4d','subnet-1a2b3c4e','subnet-1a2b3c4f']"
+ },
+ "tags": {
+ "default": {},
+ "description": "A map of tags to add to all resources"
+ },
+ "target_group_tags": {
+ "default": {},
+ "description": "A map of tags to add to all target groups"
+ },
+ "target_groups": {
+ "default": [],
+ "description": "A list of maps containing key/value pairs that define the target groups to be created. Order of these maps is important and the index of these are to be referenced in listener definitions. Required key/values: name, backend_protocol, backend_port"
+ },
+ "vpc_id": {
+ "default": null,
+ "description": "VPC id where the load balancer and other resources will be deployed."
+ }
+ }
+ },
+ "version_constraint": "8.1.0"
+ },
+ "synthetic_monitor": {
+ "source": "git@bitbucket.org:continuumsec/terraform-aws-synthetic-monitor-module.git",
+ "expressions": {
+ "aws_region": {
+ "references": [
+ "var.aws_region"
+ ]
+ },
+ "dns_name": {
+ "references": [
+ "local.web_endpoint"
+ ]
+ }
+ },
+ "count_expression": {
+ "references": [
+ "var.create_synthetic_monitor"
+ ]
+ },
+ "module": {
+ "outputs": {
+ "alert_condition_name": {
+ "expression": {
+ "references": [
+ "newrelic_synthetics_alert_condition.condition.name",
+ "newrelic_synthetics_alert_condition.condition"
+ ]
+ }
+ },
+ "policy_name": {
+ "expression": {
+ "references": [
+ "data.newrelic_alert_policy.policy.name",
+ "data.newrelic_alert_policy.policy"
+ ]
+ }
+ },
+ "synthetic_monitor_frequency": {
+ "expression": {
+ "references": [
+ "newrelic_synthetics_monitor.monitor.frequency",
+ "newrelic_synthetics_monitor.monitor"
+ ]
+ }
+ },
+ "synthetic_monitor_name": {
+ "expression": {
+ "references": [
+ "newrelic_synthetics_monitor.monitor.name",
+ "newrelic_synthetics_monitor.monitor"
+ ]
+ }
+ },
+ "synthetic_monitor_uri": {
+ "expression": {
+ "references": [
+ "newrelic_synthetics_monitor.monitor.uri",
+ "newrelic_synthetics_monitor.monitor"
+ ]
+ }
+ }
+ },
+ "resources": [
+ {
+ "address": "newrelic_synthetics_alert_condition.condition",
+ "mode": "managed",
+ "type": "newrelic_synthetics_alert_condition",
+ "name": "condition",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "enabled": {
+ "constant_value": true
+ },
+ "monitor_id": {
+ "references": [
+ "newrelic_synthetics_monitor.monitor.id",
+ "newrelic_synthetics_monitor.monitor"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.dns_name"
+ ]
+ },
+ "policy_id": {
+ "references": [
+ "data.newrelic_alert_policy.policy.id",
+ "data.newrelic_alert_policy.policy"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "newrelic_synthetics_monitor.monitor",
+ "mode": "managed",
+ "type": "newrelic_synthetics_monitor",
+ "name": "monitor",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "frequency": {
+ "references": [
+ "var.frequency"
+ ]
+ },
+ "locations": {
+ "references": [
+ "var.aws_region"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.dns_name"
+ ]
+ },
+ "status": {
+ "constant_value": "ENABLED"
+ },
+ "type": {
+ "constant_value": "BROWSER"
+ },
+ "uri": {
+ "references": [
+ "local.health_endpoint"
+ ]
+ }
+ },
+ "schema_version": 0
+ },
+ {
+ "address": "data.newrelic_alert_policy.policy",
+ "mode": "data",
+ "type": "newrelic_alert_policy",
+ "name": "policy",
+ "provider_config_key": "newrelic",
+ "expressions": {
+ "name": {
+ "references": [
+ "var.policy_name"
+ ]
+ }
+ },
+ "schema_version": 0
+ }
+ ],
+ "variables": {
+ "aws_region": {
+ "description": "WAS region where the resource will be created"
+ },
+ "dns_name": {
+ "description": "DNS name"
+ },
+ "frequency": {
+ "default": 15,
+ "description": "Synthetic monitor frequency"
+ },
+ "health_endpoint": {
+ "default": "",
+ "description": "Health check endpoint"
+ },
+ "policy_name": {
+ "default": "policy-synthetics-health",
+ "description": "New Relic policy name"
+ }
+ }
+ }
+ },
+ "vpc": {
+ "source": "terraform-aws-modules/vpc/aws",
+ "expressions": {
+ "azs": {
+ "references": [
+ "var.availability_zones"
+ ]
+ },
+ "cidr": {
+ "references": [
+ "var.vpc_cidr"
+ ]
+ },
+ "enable_dns_hostnames": {
+ "constant_value": true
+ },
+ "enable_dns_support": {
+ "constant_value": true
+ },
+ "name": {
+ "references": [
+ "var.stack_name"
+ ]
+ },
+ "private_subnets": {
+ "references": [
+ "var.private_subnet_cidrs"
+ ]
+ },
+ "public_subnets": {
+ "references": [
+ "var.public_subnet_cidrs"
+ ]
+ },
+ "tags": {
+ "references": [
+ "local.default_tags"
+ ]
+ }
+ },
+ "module": {
+ "outputs": {
+ "azs": {
+ "expression": {
+ "references": [
+ "var.azs"
+ ]
+ },
+ "description": "A list of availability zones specified as argument to this module"
+ },
+ "cgw_arns": {
+ "expression": {
+ "references": [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "List of ARNs of Customer Gateway"
+ },
+ "cgw_ids": {
+ "expression": {
+ "references": [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "List of IDs of Customer Gateway"
+ },
+ "database_internet_gateway_route_id": {
+ "expression": {
+ "references": [
+ "aws_route.database_internet_gateway[0].id",
+ "aws_route.database_internet_gateway[0]",
+ "aws_route.database_internet_gateway"
+ ]
+ },
+ "description": "ID of the database internet gateway route"
+ },
+ "database_ipv6_egress_route_id": {
+ "expression": {
+ "references": [
+ "aws_route.database_ipv6_egress[0].id",
+ "aws_route.database_ipv6_egress[0]",
+ "aws_route.database_ipv6_egress"
+ ]
+ },
+ "description": "ID of the database IPv6 egress route"
+ },
+ "database_nat_gateway_route_ids": {
+ "expression": {
+ "references": [
+ "aws_route.database_nat_gateway"
+ ]
+ },
+ "description": "List of IDs of the database nat gateway route"
+ },
+ "database_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.database[0].arn",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "description": "ARN of the database network ACL"
+ },
+ "database_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "description": "ID of the database network ACL"
+ },
+ "database_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.database"
+ ]
+ },
+ "description": "List of IDs of the database route table association"
+ },
+ "database_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.database",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of database route tables"
+ },
+ "database_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of ARNs of database subnets"
+ },
+ "database_subnet_group": {
+ "expression": {
+ "references": [
+ "aws_db_subnet_group.database[0].id",
+ "aws_db_subnet_group.database[0]",
+ "aws_db_subnet_group.database"
+ ]
+ },
+ "description": "ID of database subnet group"
+ },
+ "database_subnet_group_name": {
+ "expression": {
+ "references": [
+ "aws_db_subnet_group.database[0].name",
+ "aws_db_subnet_group.database[0]",
+ "aws_db_subnet_group.database"
+ ]
+ },
+ "description": "Name of database subnet group"
+ },
+ "database_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of IDs of database subnets"
+ },
+ "database_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of cidr_blocks of database subnets"
+ },
+ "database_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of database subnets in an IPv6 enabled VPC"
+ },
+ "default_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].default_network_acl_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the default network ACL"
+ },
+ "default_route_table_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].default_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the default route table"
+ },
+ "default_security_group_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].default_security_group_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the security group created by default on VPC creation"
+ },
+ "default_vpc_arn": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].arn",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ARN of the Default VPC"
+ },
+ "default_vpc_cidr_block": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].cidr_block",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The CIDR block of the Default VPC"
+ },
+ "default_vpc_default_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].default_network_acl_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the default network ACL of the Default VPC"
+ },
+ "default_vpc_default_route_table_id": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].default_route_table_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the default route table of the Default VPC"
+ },
+ "default_vpc_default_security_group_id": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].default_security_group_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the security group created by default on Default VPC creation"
+ },
+ "default_vpc_enable_dns_hostnames": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].enable_dns_hostnames",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Whether or not the Default VPC has DNS hostname support"
+ },
+ "default_vpc_enable_dns_support": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].enable_dns_support",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Whether or not the Default VPC has DNS support"
+ },
+ "default_vpc_id": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the Default VPC"
+ },
+ "default_vpc_instance_tenancy": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].instance_tenancy",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "Tenancy of instances spin up within Default VPC"
+ },
+ "default_vpc_main_route_table_id": {
+ "expression": {
+ "references": [
+ "aws_default_vpc.this[0].main_route_table_id",
+ "aws_default_vpc.this[0]",
+ "aws_default_vpc.this"
+ ]
+ },
+ "description": "The ID of the main route table associated with the Default VPC"
+ },
+ "dhcp_options_id": {
+ "expression": {
+ "references": [
+ "aws_vpc_dhcp_options.this[0].id",
+ "aws_vpc_dhcp_options.this[0]",
+ "aws_vpc_dhcp_options.this"
+ ]
+ },
+ "description": "The ID of the DHCP options"
+ },
+ "egress_only_internet_gateway_id": {
+ "expression": {
+ "references": [
+ "aws_egress_only_internet_gateway.this[0].id",
+ "aws_egress_only_internet_gateway.this[0]",
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "description": "The ID of the egress only Internet Gateway"
+ },
+ "elasticache_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.elasticache[0].arn",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "description": "ARN of the elasticache network ACL"
+ },
+ "elasticache_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "description": "ID of the elasticache network ACL"
+ },
+ "elasticache_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.elasticache"
+ ]
+ },
+ "description": "List of IDs of the elasticache route table association"
+ },
+ "elasticache_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.elasticache",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of elasticache route tables"
+ },
+ "elasticache_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of ARNs of elasticache subnets"
+ },
+ "elasticache_subnet_group": {
+ "expression": {
+ "references": [
+ "aws_elasticache_subnet_group.elasticache[0].id",
+ "aws_elasticache_subnet_group.elasticache[0]",
+ "aws_elasticache_subnet_group.elasticache"
+ ]
+ },
+ "description": "ID of elasticache subnet group"
+ },
+ "elasticache_subnet_group_name": {
+ "expression": {
+ "references": [
+ "aws_elasticache_subnet_group.elasticache[0].name",
+ "aws_elasticache_subnet_group.elasticache[0]",
+ "aws_elasticache_subnet_group.elasticache"
+ ]
+ },
+ "description": "Name of elasticache subnet group"
+ },
+ "elasticache_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of IDs of elasticache subnets"
+ },
+ "elasticache_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of cidr_blocks of elasticache subnets"
+ },
+ "elasticache_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of elasticache subnets in an IPv6 enabled VPC"
+ },
+ "igw_arn": {
+ "expression": {
+ "references": [
+ "aws_internet_gateway.this[0].arn",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "description": "The ARN of the Internet Gateway"
+ },
+ "igw_id": {
+ "expression": {
+ "references": [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "description": "The ID of the Internet Gateway"
+ },
+ "intra_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.intra[0].arn",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "description": "ARN of the intra network ACL"
+ },
+ "intra_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "description": "ID of the intra network ACL"
+ },
+ "intra_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.intra"
+ ]
+ },
+ "description": "List of IDs of the intra route table association"
+ },
+ "intra_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.intra"
+ ]
+ },
+ "description": "List of IDs of intra route tables"
+ },
+ "intra_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of ARNs of intra subnets"
+ },
+ "intra_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of IDs of intra subnets"
+ },
+ "intra_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of cidr_blocks of intra subnets"
+ },
+ "intra_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.intra"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of intra subnets in an IPv6 enabled VPC"
+ },
+ "name": {
+ "expression": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "description": "The name of the VPC specified as argument to this module"
+ },
+ "nat_ids": {
+ "expression": {
+ "references": [
+ "aws_eip.nat"
+ ]
+ },
+ "description": "List of allocation ID of Elastic IPs created for AWS NAT Gateway"
+ },
+ "nat_public_ips": {
+ "expression": {
+ "references": [
+ "var.reuse_nat_ips",
+ "var.external_nat_ips",
+ "aws_eip.nat"
+ ]
+ },
+ "description": "List of public Elastic IPs created for AWS NAT Gateway"
+ },
+ "natgw_ids": {
+ "expression": {
+ "references": [
+ "aws_nat_gateway.this"
+ ]
+ },
+ "description": "List of NAT Gateway IDs"
+ },
+ "outpost_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.outpost[0].arn",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "description": "ARN of the outpost network ACL"
+ },
+ "outpost_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "description": "ID of the outpost network ACL"
+ },
+ "outpost_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of ARNs of outpost subnets"
+ },
+ "outpost_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of IDs of outpost subnets"
+ },
+ "outpost_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of cidr_blocks of outpost subnets"
+ },
+ "outpost_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.outpost"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of outpost subnets in an IPv6 enabled VPC"
+ },
+ "private_ipv6_egress_route_ids": {
+ "expression": {
+ "references": [
+ "aws_route.private_ipv6_egress"
+ ]
+ },
+ "description": "List of IDs of the ipv6 egress route"
+ },
+ "private_nat_gateway_route_ids": {
+ "expression": {
+ "references": [
+ "aws_route.private_nat_gateway"
+ ]
+ },
+ "description": "List of IDs of the private nat gateway route"
+ },
+ "private_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.private[0].arn",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "description": "ARN of the private network ACL"
+ },
+ "private_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "description": "ID of the private network ACL"
+ },
+ "private_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.private"
+ ]
+ },
+ "description": "List of IDs of the private route table association"
+ },
+ "private_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of private route tables"
+ },
+ "private_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of ARNs of private subnets"
+ },
+ "private_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of IDs of private subnets"
+ },
+ "private_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of cidr_blocks of private subnets"
+ },
+ "private_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.private"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of private subnets in an IPv6 enabled VPC"
+ },
+ "public_internet_gateway_ipv6_route_id": {
+ "expression": {
+ "references": [
+ "aws_route.public_internet_gateway_ipv6[0].id",
+ "aws_route.public_internet_gateway_ipv6[0]",
+ "aws_route.public_internet_gateway_ipv6"
+ ]
+ },
+ "description": "ID of the IPv6 internet gateway route"
+ },
+ "public_internet_gateway_route_id": {
+ "expression": {
+ "references": [
+ "aws_route.public_internet_gateway[0].id",
+ "aws_route.public_internet_gateway[0]",
+ "aws_route.public_internet_gateway"
+ ]
+ },
+ "description": "ID of the internet gateway route"
+ },
+ "public_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.public[0].arn",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "description": "ARN of the public network ACL"
+ },
+ "public_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "description": "ID of the public network ACL"
+ },
+ "public_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.public"
+ ]
+ },
+ "description": "List of IDs of the public route table association"
+ },
+ "public_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.public"
+ ]
+ },
+ "description": "List of IDs of public route tables"
+ },
+ "public_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of ARNs of public subnets"
+ },
+ "public_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of IDs of public subnets"
+ },
+ "public_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of cidr_blocks of public subnets"
+ },
+ "public_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.public"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of public subnets in an IPv6 enabled VPC"
+ },
+ "redshift_network_acl_arn": {
+ "expression": {
+ "references": [
+ "aws_network_acl.redshift[0].arn",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "description": "ARN of the redshift network ACL"
+ },
+ "redshift_network_acl_id": {
+ "expression": {
+ "references": [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "description": "ID of the redshift network ACL"
+ },
+ "redshift_public_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.redshift_public"
+ ]
+ },
+ "description": "List of IDs of the public redshidt route table association"
+ },
+ "redshift_route_table_association_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table_association.redshift"
+ ]
+ },
+ "description": "List of IDs of the redshift route table association"
+ },
+ "redshift_route_table_ids": {
+ "expression": {
+ "references": [
+ "aws_route_table.redshift",
+ "aws_route_table.redshift",
+ "var.enable_public_redshift",
+ "aws_route_table.public",
+ "aws_route_table.private"
+ ]
+ },
+ "description": "List of IDs of redshift route tables"
+ },
+ "redshift_subnet_arns": {
+ "expression": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of ARNs of redshift subnets"
+ },
+ "redshift_subnet_group": {
+ "expression": {
+ "references": [
+ "aws_redshift_subnet_group.redshift[0].id",
+ "aws_redshift_subnet_group.redshift[0]",
+ "aws_redshift_subnet_group.redshift"
+ ]
+ },
+ "description": "ID of redshift subnet group"
+ },
+ "redshift_subnets": {
+ "expression": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of IDs of redshift subnets"
+ },
+ "redshift_subnets_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of cidr_blocks of redshift subnets"
+ },
+ "redshift_subnets_ipv6_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "description": "List of IPv6 cidr_blocks of redshift subnets in an IPv6 enabled VPC"
+ },
+ "this_customer_gateway": {
+ "expression": {
+ "references": [
+ "aws_customer_gateway.this"
+ ]
+ },
+ "description": "Map of Customer Gateway attributes"
+ },
+ "vgw_arn": {
+ "expression": {
+ "references": [
+ "aws_vpn_gateway.this[0].arn",
+ "aws_vpn_gateway.this[0]",
+ "aws_vpn_gateway.this"
+ ]
+ },
+ "description": "The ARN of the VPN Gateway"
+ },
+ "vgw_id": {
+ "expression": {
+ "references": [
+ "aws_vpn_gateway.this[0].id",
+ "aws_vpn_gateway.this[0]",
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this[0].vpn_gateway_id",
+ "aws_vpn_gateway_attachment.this[0]",
+ "aws_vpn_gateway_attachment.this"
+ ]
+ },
+ "description": "The ID of the VPN Gateway"
+ },
+ "vpc_arn": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].arn",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ARN of the VPC"
+ },
+ "vpc_cidr_block": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The CIDR block of the VPC"
+ },
+ "vpc_enable_dns_hostnames": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].enable_dns_hostnames",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Whether or not the VPC has DNS hostname support"
+ },
+ "vpc_enable_dns_support": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].enable_dns_support",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Whether or not the VPC has DNS support"
+ },
+ "vpc_flow_log_cloudwatch_iam_role_arn": {
+ "expression": {
+ "references": [
+ "local.flow_log_iam_role_arn"
+ ]
+ },
+ "description": "The ARN of the IAM role used when pushing logs to Cloudwatch log group"
+ },
+ "vpc_flow_log_destination_arn": {
+ "expression": {
+ "references": [
+ "local.flow_log_destination_arn"
+ ]
+ },
+ "description": "The ARN of the destination for VPC Flow Logs"
+ },
+ "vpc_flow_log_destination_type": {
+ "expression": {
+ "references": [
+ "var.flow_log_destination_type"
+ ]
+ },
+ "description": "The type of the destination for VPC Flow Logs"
+ },
+ "vpc_flow_log_id": {
+ "expression": {
+ "references": [
+ "aws_flow_log.this[0].id",
+ "aws_flow_log.this[0]",
+ "aws_flow_log.this"
+ ]
+ },
+ "description": "The ID of the Flow Log resource"
+ },
+ "vpc_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the VPC"
+ },
+ "vpc_instance_tenancy": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].instance_tenancy",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "Tenancy of instances spin up within VPC"
+ },
+ "vpc_ipv6_association_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].ipv6_association_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The association ID for the IPv6 CIDR block"
+ },
+ "vpc_ipv6_cidr_block": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The IPv6 CIDR block"
+ },
+ "vpc_main_route_table_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].main_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the main route table associated with this VPC"
+ },
+ "vpc_owner_id": {
+ "expression": {
+ "references": [
+ "aws_vpc.this[0].owner_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "description": "The ID of the AWS account that owns the VPC"
+ },
+ "vpc_secondary_cidr_blocks": {
+ "expression": {
+ "references": [
+ "aws_vpc_ipv4_cidr_block_association.this"
+ ]
+ },
+ "description": "List of secondary CIDR blocks of the VPC"
+ }
+ },
+ "resources": [
+ {
+ "address": "aws_cloudwatch_log_group.flow_log",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "flow_log",
+ "provider_config_key": "aws",
+ "expressions": {
+ "kms_key_id": {
+ "references": [
+ "var.flow_log_cloudwatch_log_group_kms_key_id"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.flow_log_cloudwatch_log_group_name_prefix",
+ "local.vpc_id"
+ ]
+ },
+ "retention_in_days": {
+ "references": [
+ "var.flow_log_cloudwatch_log_group_retention_in_days"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_log_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_customer_gateway.this",
+ "mode": "managed",
+ "type": "aws_customer_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "bgp_asn": {
+ "references": [
+ "each.value[\"bgp_asn\"]",
+ "each.value"
+ ]
+ },
+ "device_name": {
+ "references": [
+ "each.value"
+ ]
+ },
+ "ip_address": {
+ "references": [
+ "each.value[\"ip_address\"]",
+ "each.value"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "each.key",
+ "var.tags",
+ "var.customer_gateway_tags"
+ ]
+ },
+ "type": {
+ "constant_value": "ipsec.1"
+ }
+ },
+ "schema_version": 0,
+ "for_each_expression": {
+ "references": [
+ "var.customer_gateways"
+ ]
+ }
+ },
+ {
+ "address": "aws_db_subnet_group.database",
+ "mode": "managed",
+ "type": "aws_db_subnet_group",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.database_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.database_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.database_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.create_database_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_network_acl.this",
+ "mode": "managed",
+ "type": "aws_default_network_acl",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "default_network_acl_id": {
+ "references": [
+ "aws_vpc.this[0].default_network_acl_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "subnet_ids": {
+ "constant_value": null
+ },
+ "tags": {
+ "references": [
+ "var.default_network_acl_name",
+ "var.name",
+ "var.tags",
+ "var.default_network_acl_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.manage_default_network_acl"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_route_table.default",
+ "mode": "managed",
+ "type": "aws_default_route_table",
+ "name": "default",
+ "provider_config_key": "aws",
+ "expressions": {
+ "default_route_table_id": {
+ "references": [
+ "aws_vpc.this[0].default_route_table_id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ },
+ "propagating_vgws": {
+ "references": [
+ "var.default_route_table_propagating_vgws"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.default_route_table_name",
+ "var.name",
+ "var.tags",
+ "var.default_route_table_tags"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ },
+ "update": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.manage_default_route_table"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_security_group.this",
+ "mode": "managed",
+ "type": "aws_default_security_group",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.default_security_group_name",
+ "var.name",
+ "var.tags",
+ "var.default_security_group_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.manage_default_security_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_default_vpc.this",
+ "mode": "managed",
+ "type": "aws_default_vpc",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "enable_classiclink": {
+ "references": [
+ "var.default_vpc_enable_classiclink"
+ ]
+ },
+ "enable_dns_hostnames": {
+ "references": [
+ "var.default_vpc_enable_dns_hostnames"
+ ]
+ },
+ "enable_dns_support": {
+ "references": [
+ "var.default_vpc_enable_dns_support"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.default_vpc_name",
+ "var.tags",
+ "var.default_vpc_tags"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "var.manage_default_vpc"
+ ]
+ }
+ },
+ {
+ "address": "aws_egress_only_internet_gateway.this",
+ "mode": "managed",
+ "type": "aws_egress_only_internet_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.tags",
+ "var.igw_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "local.max_subnet_length"
+ ]
+ }
+ },
+ {
+ "address": "aws_eip.nat",
+ "mode": "managed",
+ "type": "aws_eip",
+ "name": "nat",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.azs",
+ "var.single_nat_gateway",
+ "count.index",
+ "var.tags",
+ "var.nat_eip_tags"
+ ]
+ },
+ "vpc": {
+ "constant_value": true
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "var.reuse_nat_ips",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_elasticache_subnet_group.elasticache",
+ "mode": "managed",
+ "type": "aws_elasticache_subnet_group",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.elasticache_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.elasticache_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.elasticache_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.create_elasticache_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_flow_log.this",
+ "mode": "managed",
+ "type": "aws_flow_log",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "iam_role_arn": {
+ "references": [
+ "local.flow_log_iam_role_arn"
+ ]
+ },
+ "log_destination": {
+ "references": [
+ "local.flow_log_destination_arn"
+ ]
+ },
+ "log_destination_type": {
+ "references": [
+ "var.flow_log_destination_type"
+ ]
+ },
+ "log_format": {
+ "references": [
+ "var.flow_log_log_format"
+ ]
+ },
+ "max_aggregation_interval": {
+ "references": [
+ "var.flow_log_max_aggregation_interval"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ },
+ "traffic_type": {
+ "references": [
+ "var.flow_log_traffic_type"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.enable_flow_log"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_policy.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name_prefix": {
+ "constant_value": "vpc-flow-log-to-cloudwatch-"
+ },
+ "policy": {
+ "references": [
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch[0].json",
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch[0]",
+ "data.aws_iam_policy_document.vpc_flow_log_cloudwatch"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "references": [
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role[0].json",
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role[0]",
+ "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role"
+ ]
+ },
+ "name_prefix": {
+ "constant_value": "vpc-flow-log-role-"
+ },
+ "permissions_boundary": {
+ "references": [
+ "var.vpc_flow_log_permissions_boundary"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.tags",
+ "var.vpc_flow_log_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_iam_role_policy_attachment.vpc_flow_log_cloudwatch",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": [
+ "aws_iam_policy.vpc_flow_log_cloudwatch[0].arn",
+ "aws_iam_policy.vpc_flow_log_cloudwatch[0]",
+ "aws_iam_policy.vpc_flow_log_cloudwatch"
+ ]
+ },
+ "role": {
+ "references": [
+ "aws_iam_role.vpc_flow_log_cloudwatch[0].name",
+ "aws_iam_role.vpc_flow_log_cloudwatch[0]",
+ "aws_iam_role.vpc_flow_log_cloudwatch"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "aws_internet_gateway.this",
+ "mode": "managed",
+ "type": "aws_internet_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.tags",
+ "var.igw_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_nat_gateway.this",
+ "mode": "managed",
+ "type": "aws_nat_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "allocation_id": {
+ "references": [
+ "local.nat_gateway_ips",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.public",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.azs",
+ "var.single_nat_gateway",
+ "count.index",
+ "var.tags",
+ "var.nat_gateway_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "local.nat_gateway_count"
+ ]
+ },
+ "depends_on": [
+ "aws_internet_gateway.this"
+ ]
+ },
+ {
+ "address": "aws_network_acl.database",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.database"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.tags",
+ "var.database_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.elasticache",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.elasticache"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.tags",
+ "var.elasticache_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.intra",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.intra"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.tags",
+ "var.intra_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.outpost",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.outpost"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.outpost_subnet_suffix",
+ "var.tags",
+ "var.outpost_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.private",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.private"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.tags",
+ "var.private_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.public",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.public"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.tags",
+ "var.public_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl.redshift",
+ "mode": "managed",
+ "type": "aws_network_acl",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions": {
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.tags",
+ "var.redshift_acl_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.database_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "database_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.database_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets",
+ "var.database_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.database_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "database_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.database[0].id",
+ "aws_network_acl.database[0]",
+ "aws_network_acl.database"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.database_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_dedicated_network_acl",
+ "var.database_subnets",
+ "var.database_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.elasticache_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "elasticache_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.elasticache_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets",
+ "var.elasticache_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.elasticache_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "elasticache_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.elasticache[0].id",
+ "aws_network_acl.elasticache[0]",
+ "aws_network_acl.elasticache"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.elasticache_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_dedicated_network_acl",
+ "var.elasticache_subnets",
+ "var.elasticache_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.intra_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "intra_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.intra_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets",
+ "var.intra_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.intra_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "intra_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.intra[0].id",
+ "aws_network_acl.intra[0]",
+ "aws_network_acl.intra"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.intra_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_dedicated_network_acl",
+ "var.intra_subnets",
+ "var.intra_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.outpost_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "outpost_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.outpost_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets",
+ "var.outpost_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.outpost_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "outpost_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.outpost[0].id",
+ "aws_network_acl.outpost[0]",
+ "aws_network_acl.outpost"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.outpost_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.outpost_dedicated_network_acl",
+ "var.outpost_subnets",
+ "var.outpost_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.private_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "private_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.private_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets",
+ "var.private_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.private_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "private_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.private[0].id",
+ "aws_network_acl.private[0]",
+ "aws_network_acl.private"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.private_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.private_dedicated_network_acl",
+ "var.private_subnets",
+ "var.private_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.public_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "public_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.public_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets",
+ "var.public_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.public_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "public_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.public[0].id",
+ "aws_network_acl.public[0]",
+ "aws_network_acl.public"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.public_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_dedicated_network_acl",
+ "var.public_subnets",
+ "var.public_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.redshift_inbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "redshift_inbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": false
+ },
+ "from_port": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.redshift_inbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets",
+ "var.redshift_inbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_network_acl_rule.redshift_outbound",
+ "mode": "managed",
+ "type": "aws_network_acl_rule",
+ "name": "redshift_outbound",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "egress": {
+ "constant_value": true
+ },
+ "from_port": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_code": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "icmp_type": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "network_acl_id": {
+ "references": [
+ "aws_network_acl.redshift[0].id",
+ "aws_network_acl.redshift[0]",
+ "aws_network_acl.redshift"
+ ]
+ },
+ "protocol": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_action": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "rule_number": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ },
+ "to_port": {
+ "references": [
+ "var.redshift_outbound_acl_rules",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_dedicated_network_acl",
+ "var.redshift_subnets",
+ "var.redshift_outbound_acl_rules"
+ ]
+ }
+ },
+ {
+ "address": "aws_redshift_subnet_group.redshift",
+ "mode": "managed",
+ "type": "aws_redshift_subnet_group",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "references": [
+ "var.name"
+ ]
+ },
+ "name": {
+ "references": [
+ "var.redshift_subnet_group_name",
+ "var.name"
+ ]
+ },
+ "subnet_ids": {
+ "references": [
+ "aws_subnet.redshift"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.redshift_subnet_group_name",
+ "var.name",
+ "var.tags",
+ "var.redshift_subnet_group_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.create_redshift_subnet_group"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_internet_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_internet_gateway",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_cidr_block": {
+ "constant_value": "0.0.0.0/0"
+ },
+ "gateway_id": {
+ "references": [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.database[0].id",
+ "aws_route_table.database[0]",
+ "aws_route_table.database"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route",
+ "var.create_database_nat_gateway_route"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_ipv6_egress",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_ipv6_egress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_ipv6_cidr_block": {
+ "constant_value": "::/0"
+ },
+ "egress_only_gateway_id": {
+ "references": [
+ "aws_egress_only_internet_gateway.this[0].id",
+ "aws_egress_only_internet_gateway.this[0]",
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.database[0].id",
+ "aws_route_table.database[0]",
+ "aws_route_table.database"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.database_nat_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "database_nat_gateway",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_cidr_block": {
+ "constant_value": "0.0.0.0/0"
+ },
+ "nat_gateway_id": {
+ "references": [
+ "aws_nat_gateway.this",
+ "count.index"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.database",
+ "count.index"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.create_database_internet_gateway_route",
+ "var.create_database_nat_gateway_route",
+ "var.enable_nat_gateway",
+ "var.single_nat_gateway",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.private_ipv6_egress",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "private_ipv6_egress",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_ipv6_cidr_block": {
+ "constant_value": "::/0"
+ },
+ "egress_only_gateway_id": {
+ "references": [
+ "aws_egress_only_internet_gateway.this"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_egress_only_igw",
+ "var.enable_ipv6",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.private_nat_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "private_nat_gateway",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_cidr_block": {
+ "references": [
+ "var.nat_gateway_destination_cidr_block"
+ ]
+ },
+ "nat_gateway_id": {
+ "references": [
+ "aws_nat_gateway.this",
+ "count.index"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_nat_gateway",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.public_internet_gateway",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_cidr_block": {
+ "constant_value": "0.0.0.0/0"
+ },
+ "gateway_id": {
+ "references": [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ },
+ "timeouts": {
+ "create": {
+ "constant_value": "5m"
+ }
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route.public_internet_gateway_ipv6",
+ "mode": "managed",
+ "type": "aws_route",
+ "name": "public_internet_gateway_ipv6",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination_ipv6_cidr_block": {
+ "constant_value": "::/0"
+ },
+ "gateway_id": {
+ "references": [
+ "aws_internet_gateway.this[0].id",
+ "aws_internet_gateway.this[0]",
+ "aws_internet_gateway.this"
+ ]
+ },
+ "route_table_id": {
+ "references": [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_igw",
+ "var.enable_ipv6",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.database",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.database_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_database_subnet_route_table",
+ "var.database_subnets",
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.elasticache",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.tags",
+ "var.elasticache_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_elasticache_subnet_route_table",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.intra",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.tags",
+ "var.intra_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.private",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.single_nat_gateway",
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.private_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "local.max_subnet_length",
+ "local.nat_gateway_count"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.public",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.tags",
+ "var.public_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table.redshift",
+ "mode": "managed",
+ "type": "aws_route_table",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions": {
+ "tags": {
+ "references": [
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.tags",
+ "var.redshift_route_table_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.create_redshift_subnet_route_table",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.database",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.database",
+ "aws_route_table.private",
+ "var.create_database_subnet_route_table",
+ "var.single_nat_gateway",
+ "var.create_database_internet_gateway_route",
+ "count.index",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.database",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.elasticache",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.elasticache",
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "var.create_elasticache_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.elasticache",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.intra",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.intra"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.intra",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_subnets",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.outpost",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.outpost",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.outpost_subnets",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.private",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.private",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.private_subnets",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.public",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.public[0].id",
+ "aws_route_table.public[0]",
+ "aws_route_table.public"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.public",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_subnets",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.redshift",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.redshift",
+ "aws_route_table.private",
+ "var.single_nat_gateway",
+ "var.create_redshift_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.redshift",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.enable_public_redshift",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_route_table_association.redshift_public",
+ "mode": "managed",
+ "type": "aws_route_table_association",
+ "name": "redshift_public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.redshift",
+ "aws_route_table.public",
+ "var.single_nat_gateway",
+ "var.create_redshift_subnet_route_table",
+ "count.index"
+ ]
+ },
+ "subnet_id": {
+ "references": [
+ "aws_subnet.redshift",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.enable_public_redshift",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.database",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.database_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.database_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.database_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.database_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.database_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.database_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.database_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.database_subnets",
+ "var.database_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.elasticache",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "elasticache",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.elasticache_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.elasticache_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.elasticache_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.elasticache_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.elasticache_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.elasticache_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.elasticache_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.elasticache_subnets",
+ "var.elasticache_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.intra",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.intra_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.intra_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.intra_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.intra_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.intra_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.intra_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.intra_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.intra_subnets",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.outpost",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "outpost",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.outpost_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.outpost_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.outpost_az"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.outpost_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.outpost_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.outpost_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "outpost_arn": {
+ "references": [
+ "var.outpost_arn"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.outpost_subnet_suffix",
+ "var.outpost_az",
+ "var.tags",
+ "var.outpost_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.outpost_subnets",
+ "var.outpost_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.private",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.private_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.private_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.private_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.private_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.private_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.private_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.private_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.private_subnets",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.public",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.public_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.public_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.public_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.public_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.public_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "map_public_ip_on_launch": {
+ "references": [
+ "var.map_public_ip_on_launch"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.public_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.public_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.public_subnets",
+ "var.one_nat_gateway_per_az",
+ "var.public_subnets",
+ "var.azs",
+ "var.public_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_subnet.redshift",
+ "mode": "managed",
+ "type": "aws_subnet",
+ "name": "redshift",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_ipv6_address_on_creation": {
+ "references": [
+ "var.redshift_subnet_assign_ipv6_address_on_creation",
+ "var.assign_ipv6_address_on_creation",
+ "var.redshift_subnet_assign_ipv6_address_on_creation"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "availability_zone_id": {
+ "references": [
+ "var.azs",
+ "count.index",
+ "var.azs",
+ "count.index"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.redshift_subnets",
+ "count.index"
+ ]
+ },
+ "ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6",
+ "var.redshift_subnet_ipv6_prefixes",
+ "aws_vpc.this[0].ipv6_cidr_block",
+ "aws_vpc.this[0]",
+ "aws_vpc.this",
+ "var.redshift_subnet_ipv6_prefixes",
+ "count.index"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.redshift_subnet_suffix",
+ "var.azs",
+ "count.index",
+ "var.tags",
+ "var.redshift_subnet_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.redshift_subnets",
+ "var.redshift_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc.this",
+ "mode": "managed",
+ "type": "aws_vpc",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assign_generated_ipv6_cidr_block": {
+ "references": [
+ "var.enable_ipv6"
+ ]
+ },
+ "cidr_block": {
+ "references": [
+ "var.cidr"
+ ]
+ },
+ "enable_classiclink": {
+ "references": [
+ "var.enable_classiclink"
+ ]
+ },
+ "enable_classiclink_dns_support": {
+ "references": [
+ "var.enable_classiclink_dns_support"
+ ]
+ },
+ "enable_dns_hostnames": {
+ "references": [
+ "var.enable_dns_hostnames"
+ ]
+ },
+ "enable_dns_support": {
+ "references": [
+ "var.enable_dns_support"
+ ]
+ },
+ "instance_tenancy": {
+ "references": [
+ "var.instance_tenancy"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.tags",
+ "var.vpc_tags"
+ ]
+ }
+ },
+ "schema_version": 1,
+ "count_expression": {
+ "references": [
+ "local.create_vpc"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_dhcp_options.this",
+ "mode": "managed",
+ "type": "aws_vpc_dhcp_options",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "domain_name": {
+ "references": [
+ "var.dhcp_options_domain_name"
+ ]
+ },
+ "domain_name_servers": {
+ "references": [
+ "var.dhcp_options_domain_name_servers"
+ ]
+ },
+ "netbios_name_servers": {
+ "references": [
+ "var.dhcp_options_netbios_name_servers"
+ ]
+ },
+ "netbios_node_type": {
+ "references": [
+ "var.dhcp_options_netbios_node_type"
+ ]
+ },
+ "ntp_servers": {
+ "references": [
+ "var.dhcp_options_ntp_servers"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.tags",
+ "var.dhcp_options_tags"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_dhcp_options"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_dhcp_options_association.this",
+ "mode": "managed",
+ "type": "aws_vpc_dhcp_options_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "dhcp_options_id": {
+ "references": [
+ "aws_vpc_dhcp_options.this[0].id",
+ "aws_vpc_dhcp_options.this[0]",
+ "aws_vpc_dhcp_options.this"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_dhcp_options"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpc_ipv4_cidr_block_association.this",
+ "mode": "managed",
+ "type": "aws_vpc_ipv4_cidr_block_association",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cidr_block": {
+ "references": [
+ "var.secondary_cidr_blocks",
+ "count.index"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "aws_vpc.this[0].id",
+ "aws_vpc.this[0]",
+ "aws_vpc.this"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.secondary_cidr_blocks",
+ "var.secondary_cidr_blocks"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway.this",
+ "mode": "managed",
+ "type": "aws_vpn_gateway",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "amazon_side_asn": {
+ "references": [
+ "var.amazon_side_asn"
+ ]
+ },
+ "availability_zone": {
+ "references": [
+ "var.vpn_gateway_az"
+ ]
+ },
+ "tags": {
+ "references": [
+ "var.name",
+ "var.tags",
+ "var.vpn_gateway_tags"
+ ]
+ },
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.enable_vpn_gateway"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_attachment.this",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_attachment",
+ "name": "this",
+ "provider_config_key": "aws",
+ "expressions": {
+ "vpc_id": {
+ "references": [
+ "local.vpc_id"
+ ]
+ },
+ "vpn_gateway_id": {
+ "references": [
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.intra",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "intra",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.intra",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id": {
+ "references": [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.propagate_intra_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id",
+ "var.intra_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.private",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "private",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.private",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id": {
+ "references": [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.propagate_private_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id",
+ "var.private_subnets"
+ ]
+ }
+ },
+ {
+ "address": "aws_vpn_gateway_route_propagation.public",
+ "mode": "managed",
+ "type": "aws_vpn_gateway_route_propagation",
+ "name": "public",
+ "provider_config_key": "aws",
+ "expressions": {
+ "route_table_id": {
+ "references": [
+ "aws_route_table.public",
+ "count.index"
+ ]
+ },
+ "vpn_gateway_id": {
+ "references": [
+ "aws_vpn_gateway.this",
+ "aws_vpn_gateway_attachment.this",
+ "count.index"
+ ]
+ }
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_vpc",
+ "var.propagate_public_route_tables_vgw",
+ "var.enable_vpn_gateway",
+ "var.vpn_gateway_id"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.flow_log_cloudwatch_assume_role",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "flow_log_cloudwatch_assume_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "statement": [
+ {
+ "actions": {
+ "constant_value": [
+ "sts:AssumeRole"
+ ]
+ },
+ "effect": {
+ "constant_value": "Allow"
+ },
+ "principals": [
+ {
+ "identifiers": {
+ "constant_value": [
+ "vpc-flow-logs.amazonaws.com"
+ ]
+ },
+ "type": {
+ "constant_value": "Service"
+ }
+ }
+ ],
+ "sid": {
+ "constant_value": "AWSVPCFlowLogsAssumeRole"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ },
+ {
+ "address": "data.aws_iam_policy_document.vpc_flow_log_cloudwatch",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "vpc_flow_log_cloudwatch",
+ "provider_config_key": "aws",
+ "expressions": {
+ "statement": [
+ {
+ "actions": {
+ "constant_value": [
+ "logs:CreateLogStream",
+ "logs:PutLogEvents",
+ "logs:DescribeLogGroups",
+ "logs:DescribeLogStreams"
+ ]
+ },
+ "effect": {
+ "constant_value": "Allow"
+ },
+ "resources": {
+ "constant_value": [
+ "*"
+ ]
+ },
+ "sid": {
+ "constant_value": "AWSVPCFlowLogsPushToCloudWatch"
+ }
+ }
+ ]
+ },
+ "schema_version": 0,
+ "count_expression": {
+ "references": [
+ "local.create_flow_log_cloudwatch_iam_role"
+ ]
+ }
+ }
+ ],
+ "variables": {
+ "amazon_side_asn": {
+ "default": "64512",
+ "description": "The Autonomous System Number (ASN) for the Amazon side of the gateway. By default the virtual private gateway is created with the current default Amazon ASN."
+ },
+ "assign_ipv6_address_on_creation": {
+ "default": false,
+ "description": "Assign IPv6 address on subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "azs": {
+ "default": [],
+ "description": "A list of availability zones names or ids in the region"
+ },
+ "cidr": {
+ "default": "0.0.0.0/0",
+ "description": "The CIDR block for the VPC. Default value is a valid CIDR, but not acceptable by AWS and should be overridden"
+ },
+ "create_database_internet_gateway_route": {
+ "default": false,
+ "description": "Controls if an internet gateway route for public database access should be created"
+ },
+ "create_database_nat_gateway_route": {
+ "default": false,
+ "description": "Controls if a nat gateway route should be created to give internet access to the database subnets"
+ },
+ "create_database_subnet_group": {
+ "default": true,
+ "description": "Controls if database subnet group should be created (n.b. database_subnets must also be set)"
+ },
+ "create_database_subnet_route_table": {
+ "default": false,
+ "description": "Controls if separate route table for database should be created"
+ },
+ "create_egress_only_igw": {
+ "default": true,
+ "description": "Controls if an Egress Only Internet Gateway is created and its related routes."
+ },
+ "create_elasticache_subnet_group": {
+ "default": true,
+ "description": "Controls if elasticache subnet group should be created"
+ },
+ "create_elasticache_subnet_route_table": {
+ "default": false,
+ "description": "Controls if separate route table for elasticache should be created"
+ },
+ "create_flow_log_cloudwatch_iam_role": {
+ "default": false,
+ "description": "Whether to create IAM role for VPC Flow Logs"
+ },
+ "create_flow_log_cloudwatch_log_group": {
+ "default": false,
+ "description": "Whether to create CloudWatch log group for VPC Flow Logs"
+ },
+ "create_igw": {
+ "default": true,
+ "description": "Controls if an Internet Gateway is created for public subnets and the related routes that connect them."
+ },
+ "create_redshift_subnet_group": {
+ "default": true,
+ "description": "Controls if redshift subnet group should be created"
+ },
+ "create_redshift_subnet_route_table": {
+ "default": false,
+ "description": "Controls if separate route table for redshift should be created"
+ },
+ "create_vpc": {
+ "default": true,
+ "description": "Controls if VPC should be created (it affects almost all resources)"
+ },
+ "customer_gateway_tags": {
+ "default": {},
+ "description": "Additional tags for the Customer Gateway"
+ },
+ "customer_gateways": {
+ "default": {},
+ "description": "Maps of Customer Gateway's attributes (BGP ASN and Gateway's Internet-routable external IP address)"
+ },
+ "database_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the database subnets network ACL"
+ },
+ "database_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for database subnets"
+ },
+ "database_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Database subnets inbound network ACL rules"
+ },
+ "database_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Database subnets outbound network ACL rules"
+ },
+ "database_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the database route tables"
+ },
+ "database_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on database subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "database_subnet_group_name": {
+ "default": null,
+ "description": "Name of database subnet group"
+ },
+ "database_subnet_group_tags": {
+ "default": {},
+ "description": "Additional tags for the database subnet group"
+ },
+ "database_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 database subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "database_subnet_suffix": {
+ "default": "db",
+ "description": "Suffix to append to database subnets name"
+ },
+ "database_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the database subnets"
+ },
+ "database_subnets": {
+ "default": [],
+ "description": "A list of database subnets"
+ },
+ "default_network_acl_egress": {
+ "default": [
+ {
+ "action": "allow",
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_no": "100",
+ "to_port": "0"
+ },
+ {
+ "action": "allow",
+ "from_port": "0",
+ "ipv6_cidr_block": "::/0",
+ "protocol": "-1",
+ "rule_no": "101",
+ "to_port": "0"
+ }
+ ],
+ "description": "List of maps of egress rules to set on the Default Network ACL"
+ },
+ "default_network_acl_ingress": {
+ "default": [
+ {
+ "action": "allow",
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_no": "100",
+ "to_port": "0"
+ },
+ {
+ "action": "allow",
+ "from_port": "0",
+ "ipv6_cidr_block": "::/0",
+ "protocol": "-1",
+ "rule_no": "101",
+ "to_port": "0"
+ }
+ ],
+ "description": "List of maps of ingress rules to set on the Default Network ACL"
+ },
+ "default_network_acl_name": {
+ "default": null,
+ "description": "Name to be used on the Default Network ACL"
+ },
+ "default_network_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the Default Network ACL"
+ },
+ "default_route_table_name": {
+ "default": null,
+ "description": "Name to be used on the default route table"
+ },
+ "default_route_table_propagating_vgws": {
+ "default": [],
+ "description": "List of virtual gateways for propagation"
+ },
+ "default_route_table_routes": {
+ "default": [],
+ "description": "Configuration block of routes. See https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/default_route_table#route"
+ },
+ "default_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the default route table"
+ },
+ "default_security_group_egress": {
+ "default": [],
+ "description": "List of maps of egress rules to set on the default security group"
+ },
+ "default_security_group_ingress": {
+ "default": [],
+ "description": "List of maps of ingress rules to set on the default security group"
+ },
+ "default_security_group_name": {
+ "default": null,
+ "description": "Name to be used on the default security group"
+ },
+ "default_security_group_tags": {
+ "default": {},
+ "description": "Additional tags for the default security group"
+ },
+ "default_vpc_enable_classiclink": {
+ "default": false,
+ "description": "Should be true to enable ClassicLink in the Default VPC"
+ },
+ "default_vpc_enable_dns_hostnames": {
+ "default": false,
+ "description": "Should be true to enable DNS hostnames in the Default VPC"
+ },
+ "default_vpc_enable_dns_support": {
+ "default": true,
+ "description": "Should be true to enable DNS support in the Default VPC"
+ },
+ "default_vpc_name": {
+ "default": null,
+ "description": "Name to be used on the Default VPC"
+ },
+ "default_vpc_tags": {
+ "default": {},
+ "description": "Additional tags for the Default VPC"
+ },
+ "dhcp_options_domain_name": {
+ "default": "",
+ "description": "Specifies DNS name for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_domain_name_servers": {
+ "default": [
+ "AmazonProvidedDNS"
+ ],
+ "description": "Specify a list of DNS server addresses for DHCP options set, default to AWS provided (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_netbios_name_servers": {
+ "default": [],
+ "description": "Specify a list of netbios servers for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_netbios_node_type": {
+ "default": "",
+ "description": "Specify netbios node_type for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_ntp_servers": {
+ "default": [],
+ "description": "Specify a list of NTP servers for DHCP options set (requires enable_dhcp_options set to true)"
+ },
+ "dhcp_options_tags": {
+ "default": {},
+ "description": "Additional tags for the DHCP option set (requires enable_dhcp_options set to true)"
+ },
+ "elasticache_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the elasticache subnets network ACL"
+ },
+ "elasticache_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for elasticache subnets"
+ },
+ "elasticache_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Elasticache subnets inbound network ACL rules"
+ },
+ "elasticache_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Elasticache subnets outbound network ACL rules"
+ },
+ "elasticache_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the elasticache route tables"
+ },
+ "elasticache_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on elasticache subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "elasticache_subnet_group_name": {
+ "default": null,
+ "description": "Name of elasticache subnet group"
+ },
+ "elasticache_subnet_group_tags": {
+ "default": {},
+ "description": "Additional tags for the elasticache subnet group"
+ },
+ "elasticache_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 elasticache subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "elasticache_subnet_suffix": {
+ "default": "elasticache",
+ "description": "Suffix to append to elasticache subnets name"
+ },
+ "elasticache_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the elasticache subnets"
+ },
+ "elasticache_subnets": {
+ "default": [],
+ "description": "A list of elasticache subnets"
+ },
+ "enable_classiclink": {
+ "default": null,
+ "description": "Should be true to enable ClassicLink for the VPC. Only valid in regions and accounts that support EC2 Classic."
+ },
+ "enable_classiclink_dns_support": {
+ "default": null,
+ "description": "Should be true to enable ClassicLink DNS Support for the VPC. Only valid in regions and accounts that support EC2 Classic."
+ },
+ "enable_dhcp_options": {
+ "default": false,
+ "description": "Should be true if you want to specify a DHCP options set with a custom domain name, DNS servers, NTP servers, netbios servers, and/or netbios server type"
+ },
+ "enable_dns_hostnames": {
+ "default": false,
+ "description": "Should be true to enable DNS hostnames in the VPC"
+ },
+ "enable_dns_support": {
+ "default": true,
+ "description": "Should be true to enable DNS support in the VPC"
+ },
+ "enable_flow_log": {
+ "default": false,
+ "description": "Whether or not to enable VPC Flow Logs"
+ },
+ "enable_ipv6": {
+ "default": false,
+ "description": "Requests an Amazon-provided IPv6 CIDR block with a /56 prefix length for the VPC. You cannot specify the range of IP addresses, or the size of the CIDR block."
+ },
+ "enable_nat_gateway": {
+ "default": false,
+ "description": "Should be true if you want to provision NAT Gateways for each of your private networks"
+ },
+ "enable_public_redshift": {
+ "default": false,
+ "description": "Controls if redshift should have public routing table"
+ },
+ "enable_vpn_gateway": {
+ "default": false,
+ "description": "Should be true if you want to create a new VPN Gateway resource and attach it to the VPC"
+ },
+ "external_nat_ip_ids": {
+ "default": [],
+ "description": "List of EIP IDs to be assigned to the NAT Gateways (used in combination with reuse_nat_ips)"
+ },
+ "external_nat_ips": {
+ "default": [],
+ "description": "List of EIPs to be used for `nat_public_ips` output (used in combination with reuse_nat_ips and external_nat_ip_ids)"
+ },
+ "flow_log_cloudwatch_iam_role_arn": {
+ "default": "",
+ "description": "The ARN for the IAM role that's used to post flow logs to a CloudWatch Logs log group. When flow_log_destination_arn is set to ARN of Cloudwatch Logs, this argument needs to be provided."
+ },
+ "flow_log_cloudwatch_log_group_kms_key_id": {
+ "default": null,
+ "description": "The ARN of the KMS Key to use when encrypting log data for VPC flow logs."
+ },
+ "flow_log_cloudwatch_log_group_name_prefix": {
+ "default": "/aws/vpc-flow-log/",
+ "description": "Specifies the name prefix of CloudWatch Log Group for VPC flow logs."
+ },
+ "flow_log_cloudwatch_log_group_retention_in_days": {
+ "default": null,
+ "description": "Specifies the number of days you want to retain log events in the specified log group for VPC flow logs."
+ },
+ "flow_log_destination_arn": {
+ "default": "",
+ "description": "The ARN of the CloudWatch log group or S3 bucket where VPC Flow Logs will be pushed. If this ARN is a S3 bucket the appropriate permissions need to be set on that bucket's policy. When create_flow_log_cloudwatch_log_group is set to false this argument must be provided."
+ },
+ "flow_log_destination_type": {
+ "default": "cloud-watch-logs",
+ "description": "Type of flow log destination. Can be s3 or cloud-watch-logs."
+ },
+ "flow_log_file_format": {
+ "default": "plain-text",
+ "description": "(Optional) The format for the flow log. Valid values: `plain-text`, `parquet`."
+ },
+ "flow_log_hive_compatible_partitions": {
+ "default": false,
+ "description": "(Optional) Indicates whether to use Hive-compatible prefixes for flow logs stored in Amazon S3."
+ },
+ "flow_log_log_format": {
+ "default": null,
+ "description": "The fields to include in the flow log record, in the order in which they should appear."
+ },
+ "flow_log_max_aggregation_interval": {
+ "default": 600,
+ "description": "The maximum interval of time during which a flow of packets is captured and aggregated into a flow log record. Valid Values: `60` seconds or `600` seconds."
+ },
+ "flow_log_per_hour_partition": {
+ "default": false,
+ "description": "(Optional) Indicates whether to partition the flow log per hour. This reduces the cost and response time for queries."
+ },
+ "flow_log_traffic_type": {
+ "default": "ALL",
+ "description": "The type of traffic to capture. Valid values: ACCEPT, REJECT, ALL."
+ },
+ "igw_tags": {
+ "default": {},
+ "description": "Additional tags for the internet gateway"
+ },
+ "instance_tenancy": {
+ "default": "default",
+ "description": "A tenancy option for instances launched into the VPC"
+ },
+ "intra_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the intra subnets network ACL"
+ },
+ "intra_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for intra subnets"
+ },
+ "intra_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Intra subnets inbound network ACLs"
+ },
+ "intra_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Intra subnets outbound network ACLs"
+ },
+ "intra_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the intra route tables"
+ },
+ "intra_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on intra subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "intra_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 intra subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "intra_subnet_suffix": {
+ "default": "intra",
+ "description": "Suffix to append to intra subnets name"
+ },
+ "intra_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the intra subnets"
+ },
+ "intra_subnets": {
+ "default": [],
+ "description": "A list of intra subnets"
+ },
+ "manage_default_network_acl": {
+ "default": false,
+ "description": "Should be true to adopt and manage Default Network ACL"
+ },
+ "manage_default_route_table": {
+ "default": false,
+ "description": "Should be true to manage default route table"
+ },
+ "manage_default_security_group": {
+ "default": false,
+ "description": "Should be true to adopt and manage default security group"
+ },
+ "manage_default_vpc": {
+ "default": false,
+ "description": "Should be true to adopt and manage Default VPC"
+ },
+ "map_public_ip_on_launch": {
+ "default": true,
+ "description": "Should be false if you do not want to auto-assign public IP on launch"
+ },
+ "name": {
+ "default": "",
+ "description": "Name to be used on all the resources as identifier"
+ },
+ "nat_eip_tags": {
+ "default": {},
+ "description": "Additional tags for the NAT EIP"
+ },
+ "nat_gateway_destination_cidr_block": {
+ "default": "0.0.0.0/0",
+ "description": "Used to pass a custom destination route for private NAT Gateway. If not specified, the default 0.0.0.0/0 is used as a destination route."
+ },
+ "nat_gateway_tags": {
+ "default": {},
+ "description": "Additional tags for the NAT gateways"
+ },
+ "one_nat_gateway_per_az": {
+ "default": false,
+ "description": "Should be true if you want only one NAT Gateway per availability zone. Requires `var.azs` to be set, and the number of `public_subnets` created to be greater than or equal to the number of availability zones specified in `var.azs`."
+ },
+ "outpost_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the outpost subnets network ACL"
+ },
+ "outpost_arn": {
+ "default": null,
+ "description": "ARN of Outpost you want to create a subnet in."
+ },
+ "outpost_az": {
+ "default": null,
+ "description": "AZ where Outpost is anchored."
+ },
+ "outpost_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for outpost subnets"
+ },
+ "outpost_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Outpost subnets inbound network ACLs"
+ },
+ "outpost_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Outpost subnets outbound network ACLs"
+ },
+ "outpost_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on outpost subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "outpost_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 outpost subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "outpost_subnet_suffix": {
+ "default": "outpost",
+ "description": "Suffix to append to outpost subnets name"
+ },
+ "outpost_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the outpost subnets"
+ },
+ "outpost_subnets": {
+ "default": [],
+ "description": "A list of outpost subnets inside the VPC"
+ },
+ "private_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the private subnets network ACL"
+ },
+ "private_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for private subnets"
+ },
+ "private_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Private subnets inbound network ACLs"
+ },
+ "private_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Private subnets outbound network ACLs"
+ },
+ "private_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the private route tables"
+ },
+ "private_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on private subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "private_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 private subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "private_subnet_suffix": {
+ "default": "private",
+ "description": "Suffix to append to private subnets name"
+ },
+ "private_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the private subnets"
+ },
+ "private_subnets": {
+ "default": [],
+ "description": "A list of private subnets inside the VPC"
+ },
+ "propagate_intra_route_tables_vgw": {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "propagate_private_route_tables_vgw": {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "propagate_public_route_tables_vgw": {
+ "default": false,
+ "description": "Should be true if you want route table propagation"
+ },
+ "public_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the public subnets network ACL"
+ },
+ "public_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for public subnets"
+ },
+ "public_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Public subnets inbound network ACLs"
+ },
+ "public_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Public subnets outbound network ACLs"
+ },
+ "public_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the public route tables"
+ },
+ "public_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on public subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "public_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 public subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "public_subnet_suffix": {
+ "default": "public",
+ "description": "Suffix to append to public subnets name"
+ },
+ "public_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the public subnets"
+ },
+ "public_subnets": {
+ "default": [],
+ "description": "A list of public subnets inside the VPC"
+ },
+ "putin_khuylo": {
+ "default": true,
+ "description": "Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo!"
+ },
+ "redshift_acl_tags": {
+ "default": {},
+ "description": "Additional tags for the redshift subnets network ACL"
+ },
+ "redshift_dedicated_network_acl": {
+ "default": false,
+ "description": "Whether to use dedicated network ACL (not default) and custom rules for redshift subnets"
+ },
+ "redshift_inbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Redshift subnets inbound network ACL rules"
+ },
+ "redshift_outbound_acl_rules": {
+ "default": [
+ {
+ "cidr_block": "0.0.0.0/0",
+ "from_port": "0",
+ "protocol": "-1",
+ "rule_action": "allow",
+ "rule_number": "100",
+ "to_port": "0"
+ }
+ ],
+ "description": "Redshift subnets outbound network ACL rules"
+ },
+ "redshift_route_table_tags": {
+ "default": {},
+ "description": "Additional tags for the redshift route tables"
+ },
+ "redshift_subnet_assign_ipv6_address_on_creation": {
+ "default": null,
+ "description": "Assign IPv6 address on redshift subnet, must be disabled to change IPv6 CIDRs. This is the IPv6 equivalent of map_public_ip_on_launch"
+ },
+ "redshift_subnet_group_name": {
+ "default": null,
+ "description": "Name of redshift subnet group"
+ },
+ "redshift_subnet_group_tags": {
+ "default": {},
+ "description": "Additional tags for the redshift subnet group"
+ },
+ "redshift_subnet_ipv6_prefixes": {
+ "default": [],
+ "description": "Assigns IPv6 redshift subnet id based on the Amazon provided /56 prefix base 10 integer (0-256). Must be of equal length to the corresponding IPv4 subnet list"
+ },
+ "redshift_subnet_suffix": {
+ "default": "redshift",
+ "description": "Suffix to append to redshift subnets name"
+ },
+ "redshift_subnet_tags": {
+ "default": {},
+ "description": "Additional tags for the redshift subnets"
+ },
+ "redshift_subnets": {
+ "default": [],
+ "description": "A list of redshift subnets"
+ },
+ "reuse_nat_ips": {
+ "default": false,
+ "description": "Should be true if you don't want EIPs to be created for your NAT Gateways and will instead pass them in via the 'external_nat_ip_ids' variable"
+ },
+ "secondary_cidr_blocks": {
+ "default": [],
+ "description": "List of secondary CIDR blocks to associate with the VPC to extend the IP Address pool"
+ },
+ "single_nat_gateway": {
+ "default": false,
+ "description": "Should be true if you want to provision a single shared NAT Gateway across all of your private networks"
+ },
+ "tags": {
+ "default": {},
+ "description": "A map of tags to add to all resources"
+ },
+ "vpc_flow_log_permissions_boundary": {
+ "default": null,
+ "description": "The ARN of the Permissions Boundary for the VPC Flow Log IAM Role"
+ },
+ "vpc_flow_log_tags": {
+ "default": {},
+ "description": "Additional tags for the VPC Flow Logs"
+ },
+ "vpc_tags": {
+ "default": {},
+ "description": "Additional tags for the VPC"
+ },
+ "vpn_gateway_az": {
+ "default": null,
+ "description": "The Availability Zone for the VPN Gateway"
+ },
+ "vpn_gateway_id": {
+ "default": "",
+ "description": "ID of VPN Gateway to attach to the VPC"
+ },
+ "vpn_gateway_tags": {
+ "default": {},
+ "description": "Additional tags for the VPN gateway"
+ }
+ }
+ },
+ "version_constraint": "3.14.0"
+ }
+ },
+ "variables": {
+ "analytics_build": {
+ "description": "Analytics build"
+ },
+ "analytics_enabled": {
+ "default": false,
+ "description": "Flag to deploy analytics module"
+ },
+ "api_desired_capacity": {
+ "description": "Desired capacity of API ASG"
+ },
+ "api_max_size": {
+ "description": "Max size of API ASG"
+ },
+ "api_min_size": {
+ "description": "Min size of API ASG"
+ },
+ "availability_zones": {
+ "description": "The AWS availability zones to create subnets in"
+ },
+ "aws_profile": {
+ "description": "The AWS-CLI profile for the account to create resources in. Usually found on ~/.aws/credentials or ~/.aws/config"
+ },
+ "aws_region": {
+ "description": "The AWS region to create resources in"
+ },
+ "bastion_host_cidrs": {
+ "description": "The IP ranges of bastion hosts to ssh web server instances."
+ },
+ "bitbucket_repository": {
+ "description": "Terraform repository URL ($BITBUCKET_GIT_SSH_ORIGIN)"
+ },
+ "certificate_arn": {
+ "description": "ARN of the SSL certificate to be used"
+ },
+ "cloudflare_dns_name": {
+ "description": "Cloudflare CNAME"
+ },
+ "cloudflare_token": {
+ "default": "",
+ "description": "Token generated in Cloudflare to create DNS records based on stack_name"
+ },
+ "cloudflare_zone_id": {
+ "default": "",
+ "description": "Cloudflare zone ID"
+ },
+ "create_synthetic_monitor": {
+ "default": false,
+ "description": "It creates synthetic monitor in New Relic when true"
+ },
+ "database_subnet_cidrs": {
+ "description": "The IP ranges to use for the database subnets in your VPC"
+ },
+ "dbname": {
+ "description": "IR DB name"
+ },
+ "dbpassword": {
+ "description": "IR DB passwrod",
+ "sensitive": true
+ },
+ "dbuser": {
+ "description": "IR DB user"
+ },
+ "deployment_flag": {
+ "default": "green",
+ "description": "Allow us to define two RDS clusters in case that we need to do a rollback"
+ },
+ "ec2_instance_type": {
+ "description": "EC2 instance type for IR deployments"
+ },
+ "environment": {
+ "description": "Environment name"
+ },
+ "iam_instance_profile_arn": {
+ "description": "ARN of the desired instance profile to be attached (myManagedInstanceRoleforSSM)"
+ },
+ "iam_policy_arn": {
+ "description": "IAM Policy to be attached to role"
+ },
+ "iriusrisk_version": {
+ "description": "IriusRisk version"
+ },
+ "is_rollback": {
+ "default": false,
+ "description": "Create a new cluster from a previous snapshot"
+ },
+ "keep_previous_rds": {
+ "default": false,
+ "description": "Keep previous rds when we are doing a rollback"
+ },
+ "key_name": {
+ "description": "Keypair name used to connect to EC2 instances"
+ },
+ "major_engine_version": {
+ "default": "11",
+ "description": "Major version of the RDS DB engine"
+ },
+ "newrelic_account_id": {
+ "description": "New Relic acount ID"
+ },
+ "newrelic_api_key": {
+ "description": "New Relic api key"
+ },
+ "newrelic_enabled": {
+ "default": true,
+ "description": "Create or not NewRelic monitoring resources"
+ },
+ "newrelic_region": {
+ "description": "New Relic region"
+ },
+ "private_subnet_cidrs": {
+ "description": "The IP ranges to use for the private subnets in your VPC"
+ },
+ "public_subnet_cidrs": {
+ "description": "The IP ranges to use for the public subnets in your VPC"
+ },
+ "rds_engine": {
+ "default": "postgres",
+ "description": "RDS DB engine"
+ },
+ "rds_engine_version": {
+ "default": "11.15",
+ "description": "RDS DB engine version"
+ },
+ "rds_family": {
+ "default": "postgres11",
+ "description": "RDS DB family"
+ },
+ "rds_instance_type": {
+ "default": "db.m5.2xlarge",
+ "description": "RDS DB instance type"
+ },
+ "rds_snapshot": {
+ "default": "",
+ "description": "RDS snapshot to restore into RDS DB instance "
+ },
+ "slack_channel": {
+ "description": "Slack channel where the notifications will be sent to"
+ },
+ "slack_webhook_url": {
+ "description": "Slack webhook url used to send notifications"
+ },
+ "stack_name": {
+ "description": "The stack name. Will be used in naming all related resources, as well as the endpoint to reach IR ({stack_name}.iriusrisk.com)"
+ },
+ "startleft_version": {
+ "description": "Startleft version"
+ },
+ "type": {
+ "description": "A type to describe the environment we are creating, prod/eval/internal."
+ },
+ "vpc_cidr": {
+ "description": "The IP range to attribute to the virtual network"
+ },
+ "web_desired_capacity": {
+ "description": "Desired capacity of Web ASG"
+ },
+ "web_max_size": {
+ "description": "Max size of Web ASG"
+ },
+ "web_min_size": {
+ "description": "Min size of Web ASG"
+ }
+ }
+ }
+ },
+ "relevant_attributes": [
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "cluster_resource_id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.random_id.snapshot_identifier[0]",
+ "attribute": [
+ "hex"
+ ]
+ },
+ {
+ "resource": "aws_cloudwatch_log_group.cw_log_group",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster_parameter_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "cidr_block"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "cidr_block"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.database[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "master_password"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "reader_endpoint"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "ipv6_cidr_block"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster_parameter_group.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_group.iriusrisk_api",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_iam_role.vpc_flow_log_cloudwatch[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_db_subnet_group.database[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_ipv6_egress[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.private_ipv6_egress",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "master_password"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_redshift_subnet_group.redshift[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.redshift",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.public[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.public_internet_gateway[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_secretsmanager_secret.jwt-secret",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_dhcp_options.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "main_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "enable_dns_support"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_egress_only_internet_gateway.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "cluster_members"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.elasticache",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_elasticache_subnet_group.elasticache[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "endpoint"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "port"
+ ]
+ },
+ {
+ "resource": "data.template_file.iriusrisk",
+ "attribute": [
+ "rendered"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster_parameter_group.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_elasticache_subnet_group.elasticache[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.database",
+ "attribute": []
+ },
+ {
+ "resource": "aws_security_group.iriusrisk",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.public_internet_gateway_ipv6[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.private[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_cloudwatch_log_group.flow_log[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "aws_iam_role.access-role",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_db_parameter_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_policy.iriusrisk_api_scaling_up",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_security_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.elasticache",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster_endpoint.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_db_parameter_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "reader_endpoint"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.private",
+ "attribute": []
+ },
+ {
+ "resource": "data.aws_ami.iriusrisk",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_iam_instance_profile.instance_profile",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_customer_gateway.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_route_table.public",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_route.private_nat_gateway",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "ipv6_association_id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster_instance.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "engine_version_actual"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_group.iriusrisk_api",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_policy.iriusrisk_web_scaling_down",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "default_security_group_id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.random_password.master_password[0]",
+ "attribute": [
+ "result"
+ ]
+ },
+ {
+ "resource": "tls_private_key.ec_private",
+ "attribute": [
+ "private_key_pem"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.private",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_subnet.public",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster_parameter_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "port"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_nat_gateway",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "endpoint"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.random_password.master_password[0]",
+ "attribute": [
+ "result"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.redshift_public",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.database",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_group.iriusrisk_web",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_policy.iriusrisk_web_scaling_up",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.intra",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.redshift[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "cloudflare_record.dns_cname",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.database",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.private",
+ "attribute": []
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb_listener.frontend_http_tcp",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster_role_association.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "default_network_acl_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "enable_dns_hostnames"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "instance_tenancy"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_db_subnet_group.this[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_security_group.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "owner_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.redshift",
+ "attribute": []
+ },
+ {
+ "resource": "aws_launch_template.iriusrisk",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "enable_dns_hostnames"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route.database_internet_gateway[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_security_group.alb",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "enable_dns_support"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "instance_tenancy"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "main_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.intra",
+ "attribute": []
+ },
+ {
+ "resource": "aws_security_group.aurora-db-sg",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "cluster_resource_id"
+ ]
+ },
+ {
+ "resource": "aws_secretsmanager_secret.jwt-secret",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_autoscaling_policy.iriusrisk_api_scaling_down",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "default_security_group_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster_instance.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_default_vpc.this[0]",
+ "attribute": [
+ "default_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_db_subnet_group.database[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpn_gateway_attachment.this[0]",
+ "attribute": [
+ "vpn_gateway_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.outpost",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster_role_association.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_db_subnet_group.this[0]",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_eip.nat",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.elasticache[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.outpost[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_internet_gateway.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.elasticache",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "hosted_zone_id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "engine_version_actual"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_internet_gateway.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_db_parameter_group.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.elasticache[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.redshift[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_flow_log.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "master_username"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster_endpoint.this",
+ "attribute": []
+ },
+ {
+ "resource": "aws_autoscaling_group.iriusrisk_web",
+ "attribute": [
+ "name"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_db_parameter_group.this[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_ipv4_cidr_block_association.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.database[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.public[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "master_username"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "cluster_members"
+ ]
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb_target_group.main",
+ "attribute": []
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb_listener.frontend_https",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "default_network_acl_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_subnet.intra",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_subnet.redshift",
+ "attribute": []
+ },
+ {
+ "resource": "module.iriusrisk_alb.aws_lb_target_group_attachment.this",
+ "attribute": []
+ },
+ {
+ "resource": "module.vpc.aws_route_table_association.public",
+ "attribute": []
+ },
+ {
+ "resource": "module.aurora-db-green.aws_rds_cluster.this[0]",
+ "attribute": [
+ "hosted_zone_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "default_route_table_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_egress_only_internet_gateway.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.intra[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.intra[0]",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc_ipv4_cidr_block_association.this[0]",
+ "attribute": [
+ "vpc_id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_iam_role.rds_enhanced_monitoring[0]",
+ "attribute": [
+ "unique_id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_vpc.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.private[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.aurora-db-blue.aws_rds_cluster.this[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "aws_iam_policy.secret-access",
+ "attribute": [
+ "arn"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_route_table.public[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_network_acl.outpost[0]",
+ "attribute": [
+ "id"
+ ]
+ },
+ {
+ "resource": "module.vpc.aws_nat_gateway.this",
+ "attribute": []
+ }
+ ]
+}
diff --git a/tests/integration/api/controllers/diagram/drawio/test_otm_controller_diagram_drawio.py b/tests/integration/api/controllers/diagram/drawio/test_otm_controller_diagram_drawio.py
index dd771878..35a309f6 100644
--- a/tests/integration/api/controllers/diagram/drawio/test_otm_controller_diagram_drawio.py
+++ b/tests/integration/api/controllers/diagram/drawio/test_otm_controller_diagram_drawio.py
@@ -3,11 +3,14 @@
import pytest
import responses
from fastapi.testclient import TestClient
+
from tests.resources import test_resource_paths
from sl_util.sl_util.file_utils import get_byte_data
from startleft.startleft.api import fastapi_server
from startleft.startleft.api.controllers.diagram import diag_create_otm_controller
+from tests.resources.test_resource_paths import default_drawio_mapping, custom_drawio_mapping, drawio_minimal_xml, \
+ terraform_aws_simple_components, invalid_extension_mtmt_file
webapp = fastapi_server.webapp
@@ -51,7 +54,8 @@ def test_create_otm_multi_page_error(self):
assert body_response['errors'][0]['errorMessage'] == 'Diagram File is not compatible'
@pytest.mark.parametrize('diagram_file_path', [
- test_resource_paths.drawio_minimal,
+ test_resource_paths.drawio_minimal_xml,
+ test_resource_paths.drawio_minimal_drawio,
test_resource_paths.lean_ix_drawio
])
@responses.activate
@@ -77,4 +81,65 @@ def test_create_otm_ok(self, diagram_file_path):
assert response.headers.get('content-type') == json_mime
otm = json.loads(response.text)
assert len(otm['trustZones']) > 0
- assert len(otm['components']) > 0
\ No newline at end of file
+ assert len(otm['components']) > 0
+
+ @pytest.mark.parametrize('custom_mapping_file_path, expected_component_type', [
+ (default_drawio_mapping, 'CD-V2-EMPTY-COMPONENT'), (custom_drawio_mapping, 'vpc')])
+ @responses.activate
+ def test_custom_mapping_file_override_mapping_file(self, custom_mapping_file_path, expected_component_type):
+ # Given a project_id
+ project_id: str = 'test_ok'
+ project_name: str = 'test_ok_name'
+
+ # And the source file
+ diag_file = get_byte_data(drawio_minimal_xml)
+
+ # And the mapping files
+ default_mapping_file = get_byte_data(default_drawio_mapping)
+ custom_mapping_file = get_byte_data(custom_mapping_file_path)
+
+ # When I do post on diagram endpoint
+ files = {'diag_file': (drawio_minimal_xml, diag_file),
+ 'default_mapping_file': ('default_mapping_file.yaml', default_mapping_file),
+ 'custom_mapping_file': ('custom_mapping_file.yaml', custom_mapping_file)}
+ body = {'diag_type': 'DRAWIO', 'id': project_id, 'name': project_name}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert response.status_code == diag_create_otm_controller.RESPONSE_STATUS_CODE
+ assert response.headers.get('content-type') == json_mime
+
+ otm = json.loads(response.text)
+ assert otm['otmVersion'] == '0.2.0'
+ assert otm['project']['id'] == 'test_ok'
+ assert otm['project']['name'] == 'test_ok_name'
+ assert len(otm['trustZones']) == 1
+ assert len(otm['components']) == 4
+ assert len(otm['dataflows']) == 0
+ assert otm['components'][0]['type'] == expected_component_type
+
+ @pytest.mark.parametrize('filepath', [invalid_extension_mtmt_file, terraform_aws_simple_components])
+ def test_diagram_file_invalid_extensions(self, filepath):
+ # GIVEN a drawio file
+ drawio_file = get_byte_data(filepath)
+
+ # AND a mapping file
+ mapping_file = get_byte_data(default_drawio_mapping)
+
+ # WHEN I do post on diagram endpoint
+ files = {'diag_file': (filepath, drawio_file),
+ 'default_mapping_file': ('default_mapping_file.yaml', mapping_file)}
+ body = {'diag_type': 'DRAWIO', 'id': "project_id", 'name': "project_name"}
+ response = client.post(get_url(), files=files, data=body)
+
+ # AND the error details are correct
+ assert response.status_code == 400
+ assert response.headers.get('content-type') == json_mime
+
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+ assert body_response['error_type'] == 'DiagramFileNotValidError'
+ assert body_response['title'] == 'Drawio file is not valid'
+ assert body_response['detail'] == 'Provided diag_file is not valid. It does not comply with schema'
+ assert len(body_response['errors']) == 1
+ assert body_response['errors'][0]['errorMessage'] == 'Provided diag_file is not valid. It does not comply with schema'
diff --git a/tests/integration/api/controllers/diagram/test_otm_controller_diagram.py b/tests/integration/api/controllers/diagram/test_otm_controller_diagram.py
index db28bff3..2f521421 100644
--- a/tests/integration/api/controllers/diagram/test_otm_controller_diagram.py
+++ b/tests/integration/api/controllers/diagram/test_otm_controller_diagram.py
@@ -1,26 +1,39 @@
import json
import pytest
+import responses
+from pytest import mark
+from pytest import param
from fastapi.testclient import TestClient
+from sl_util.sl_util.file_utils import get_byte_data
from startleft.startleft.api import fastapi_server
from startleft.startleft.api.controllers.diagram import diag_create_otm_controller
from tests.resources import test_resource_paths
webapp = fastapi_server.webapp
-
client = TestClient(webapp)
-
+json_mime = 'application/json'
def get_url():
return diag_create_otm_controller.PREFIX + diag_create_otm_controller.URL
+def assert_bad_request_response(response):
+ assert response.status_code == 400
+ assert response.headers.get('content-type') == json_mime
-octet_stream = 'application/octet-stream'
+def assert_bad_request_body_response(response, error_type, title, detail, total_errors):
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+ assert body_response['error_type'] == error_type
+ assert body_response['title'] == title
+ assert body_response['detail'] == detail
+ assert len(body_response['errors']) == total_errors
+ return body_response
+octet_stream = 'application/octet-stream'
class TestOTMControllerDiagram:
-
@pytest.mark.parametrize('project_id,project_name,diag_file,errors_expected, error_type',
[(None, 'name', open(test_resource_paths.visio_aws_with_tz_and_vpc, 'rb'), 3,
'RequestValidationError'),
@@ -48,3 +61,113 @@ def test_create_project_validation_error(self, project_id: str, project_name: st
assert len(res_body['errors']) == errors_expected
for e in res_body['errors']:
assert len(e['errorMessage']) > 0
+
+ @responses.activate
+ def test_create_project_no_diag_file(self):
+ # Given a project_id and name
+ project_id: str = 'project_A_id'
+ project_name: str = 'project_A_name'
+
+ # And the request files
+ mapping_file = get_byte_data(test_resource_paths.default_drawio_mapping)
+
+ # When I do post on drawio endpoint
+ files = {'diag_file': None, 'default_mapping_file': mapping_file}
+ body = {'diag_type': 'DRAWIO', 'id': project_id, 'name': project_name}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+
+ @responses.activate
+ def test_create_project_no_mapping_file(self):
+ # Given a project_id and name
+ project_id: str = 'project_A_id'
+ project_name: str = 'project_A_name'
+
+ # And the request files
+ diag_file = get_byte_data(test_resource_paths.drawio_minimal_xml)
+
+ # When I do post on drawio endpoint
+ files = {'diag_file': diag_file, 'default_mapping_file': None}
+ body = {'diag_type': 'DRAWIO', 'id': project_id, 'name': project_name}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+
+ @responses.activate
+ @mark.parametrize('body, error_message', [
+ param({'id': 'project_A_id', 'name': 'project_A_name'},
+ "Error in field 'diag_type' located in 'body'. Field required"),
+ param({'diag_type': None, 'id': 'project_A_id', 'name': 'project_A_name'},
+ "Error in field 'diag_type' located in 'body'. Input should be 'VISIO', 'LUCID', 'DRAWIO' or 'ABACUS'")
+ ])
+ def test_create_project_no_diag_type(self, body, error_message):
+ # Given the request files
+ diag_file = get_byte_data(test_resource_paths.drawio_minimal_xml)
+ mapping_file = get_byte_data(test_resource_paths.default_drawio_mapping)
+
+ # When I do post on cloudformation endpoint
+ files = {'diag_file': diag_file, 'default_mapping_file': mapping_file}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert body_response['errors'][0]['errorMessage'] == error_message
+
+ @responses.activate
+ @mark.parametrize('body, error_message', [
+ param({'diag_type': 'DRAWIO', 'name': 'project_A_name'},
+ "Error in field 'id' located in 'body'. Field required"),
+ param({'diag_type': 'DRAWIO', 'id': None, 'name': 'project_A_name'},
+ "Error in field 'id' located in 'body'. String should have at least 1 character")
+ ])
+ def test_create_project_no_id(self, body, error_message):
+ # Given a project_name
+ project_name: str = 'project_A_name'
+
+ # Given the request files
+ diag_file = get_byte_data(test_resource_paths.drawio_minimal_xml)
+ mapping_file = get_byte_data(test_resource_paths.default_drawio_mapping)
+
+ # When I do post on drawio endpoint
+ files = {'diag_file': diag_file, 'default_mapping_file': mapping_file}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert body_response['errors'][0]['errorMessage'] == error_message
+
+ @responses.activate
+ @mark.parametrize('body, error_message', [
+ param({'diag_type': 'DRAWIO', 'id': 'project_A_id'},
+ "Error in field 'name' located in 'body'. Field required"),
+ param({'diag_type': 'DRAWIO', 'id': 'project_A_id', 'name': None},
+ "Error in field 'name' located in 'body'. String should have at least 1 character")
+ ])
+ def test_create_project_no_name(self, body, error_message):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ diag_file = get_byte_data(test_resource_paths.drawio_minimal_xml)
+ mapping_file = get_byte_data(test_resource_paths.default_drawio_mapping)
+
+ # When I do post on drawio endpoint
+ files = {'diag_file': diag_file, 'default_mapping_file': mapping_file}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert body_response['errors'][0]['errorMessage'] == error_message
diff --git a/tests/integration/api/controllers/iac/cloudformation/test_otm_controller_iac_cloudformation.py b/tests/integration/api/controllers/iac/cloudformation/test_otm_controller_iac_cloudformation.py
index a5901fef..80fbd0e2 100644
--- a/tests/integration/api/controllers/iac/cloudformation/test_otm_controller_iac_cloudformation.py
+++ b/tests/integration/api/controllers/iac/cloudformation/test_otm_controller_iac_cloudformation.py
@@ -2,18 +2,19 @@
from unittest.mock import patch
import responses
-from fastapi.testclient import TestClient
from pytest import mark
+from fastapi.testclient import TestClient
from slp_base import IacType
from slp_base.slp_base.errors import LoadingIacFileError, IacFileNotValidError, MappingFileNotValidError, \
LoadingMappingFileError, OTMResultError, OTMBuildingError
from startleft.startleft.api import fastapi_server
from startleft.startleft.api.controllers.iac import iac_create_otm_controller
-from tests.resources.test_resource_paths import default_cloudformation_mapping, example_json, \
+from tests.resources.test_resource_paths import (default_cloudformation_mapping, example_json, example_template, \
cloudformation_malformed_mapping_wrong_id, invalid_yaml, cloudformation_all_functions, \
- cloudformation_mapping_all_functions, cloudformation_gz, cloudformation_multiple_files_networks, \
- cloudformation_multiple_files_resources, cloudformation_ref_full_syntax, cloudformation_ref_short_syntax
+ cloudformation_mapping_all_functions, cloudformation_mapping_no_dataflows, cloudformation_gz, \
+ cloudformation_multiple_files_networks, cloudformation_multiple_files_resources, cloudformation_ref_full_syntax, \
+ cloudformation_ref_short_syntax, cloudformation_mapping_trustzone_no_id)
TESTING_IAC_TYPE = IacType.CLOUDFORMATION.value
@@ -21,13 +22,23 @@
client = TestClient(webapp)
json_mime = 'application/json'
-
+yaml_mime = 'text/yaml'
def get_url():
return iac_create_otm_controller.PREFIX + iac_create_otm_controller.URL
+def assert_bad_request_response(response):
+ assert response.status_code == 400
+ assert response.headers.get('content-type') == json_mime
-yaml_mime = 'text/yaml'
+def assert_bad_request_body_response(response, error_type, title, detail, total_errors):
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+ assert body_response['error_type'] == error_type
+ assert body_response['title'] == title
+ assert body_response['detail'] == detail
+ assert len(body_response['errors']) == total_errors
+ return body_response
class TestOTMControllerIaCCloudformation:
@@ -451,3 +462,71 @@ def test_yaml_ref_function_is_parsed(self, filename):
assert response.status_code == iac_create_otm_controller.RESPONSE_STATUS_CODE
otm = json.loads(response.text)
assert otm["components"][0]["name"] == "0.0.0.0/0"
+
+ @responses.activate
+ def test_create_otm_invalid_dataflows_mapping(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (cloudformation_all_functions, open(cloudformation_all_functions, 'rb'), json_mime)
+ mapping_file = (cloudformation_mapping_no_dataflows, open(cloudformation_mapping_no_dataflows, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'MappingFileNotValidError',
+ 'Mapping files are not valid', 'Mapping file does not comply with the schema', 1)
+ assert (body_response['errors'][0]['errorMessage'] == "'dataflows' is a required property")
+
+ @responses.activate
+ def test_create_otm_trustzone_id_not_present(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (cloudformation_all_functions, open(cloudformation_all_functions, 'rb'), json_mime)
+ mapping_file = (cloudformation_mapping_trustzone_no_id, open(cloudformation_mapping_trustzone_no_id, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'MappingFileNotValidError',
+ 'Mapping files are not valid', 'Mapping file does not comply with the schema', 1)
+ assert (body_response['errors'][0]['errorMessage'] == "'id' is a required property")
+
+ @responses.activate
+ def test_create_otm_template_ok(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (example_template, open(example_template, 'rb'), json_mime)
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert response.status_code == iac_create_otm_controller.RESPONSE_STATUS_CODE
+ assert response.headers.get('content-type') == json_mime
+
+ # And the otm is as expected
+ otm = json.loads(response.text)
+ assert otm['otmVersion'] == '0.2.0'
+ assert otm['project']['id'] == 'project_A_id'
+ assert otm['project']['name'] == 'project_A_name'
+ assert otm['project']['name'] == 'project_A_name'
+ assert len(otm['trustZones']) == 1
+ assert len(otm['components']) == 2
+ assert len(otm['dataflows']) == 0
diff --git a/tests/integration/api/controllers/iac/terraform/test_otm_controller_iac_terraform.py b/tests/integration/api/controllers/iac/terraform/test_otm_controller_iac_terraform.py
index bd6610d1..6bad73b5 100644
--- a/tests/integration/api/controllers/iac/terraform/test_otm_controller_iac_terraform.py
+++ b/tests/integration/api/controllers/iac/terraform/test_otm_controller_iac_terraform.py
@@ -13,7 +13,7 @@
from startleft.startleft.api.controllers.iac import iac_create_otm_controller
from tests.resources.test_resource_paths import terraform_iriusrisk_tf_aws_mapping, \
terraform_aws_singleton_components_unix_line_breaks, terraform_malformed_mapping_wrong_id, terraform_gz, \
- visio_aws_shapes, invalid_tf, terraform_aws_simple_components, terraform_specific_functions, \
+ invalid_tf, terraform_aws_simple_components, terraform_specific_functions, \
terraform_mapping_specific_functions, terraform_multiple_files_one, terraform_multiple_files_two
TESTING_IAC_TYPE = IacType.TERRAFORM.value
diff --git a/tests/integration/api/controllers/iac/test_otm_controller_iac.py b/tests/integration/api/controllers/iac/test_otm_controller_iac.py
new file mode 100644
index 00000000..2cb803d4
--- /dev/null
+++ b/tests/integration/api/controllers/iac/test_otm_controller_iac.py
@@ -0,0 +1,268 @@
+import json
+
+import responses
+from pytest import mark
+from pytest import param
+from fastapi.testclient import TestClient
+from slp_base import IacType
+
+from startleft.startleft.api import fastapi_server
+from startleft.startleft.api.controllers.iac import iac_create_otm_controller
+
+from tests.resources.test_resource_paths import (default_cloudformation_mapping, example_json, \
+ cloudformation_empty_file, cloudformation_for_security_group_tests_json, old_cloudformation_default_mapping, \
+ cloudformation_custom_mapping_file, cloudformation_wrong_mapping_file)
+
+DEFAULT_TESTING_IAC_TYPE = IacType.CLOUDFORMATION.value
+IAC_FILE_FOR_MAPPING_VALIDATIONS = cloudformation_for_security_group_tests_json
+DEFAULT_MAPPING_FILE = old_cloudformation_default_mapping
+MAPPING_FILE = default_cloudformation_mapping
+CUSTOM_MAPPING_FILE = cloudformation_custom_mapping_file
+INVALID_MAPPING_FILE = cloudformation_wrong_mapping_file
+
+webapp = fastapi_server.webapp
+client = TestClient(webapp)
+
+json_mime = 'application/json'
+yaml_mime = 'text/yaml'
+
+def get_url():
+ return iac_create_otm_controller.PREFIX + iac_create_otm_controller.URL
+
+def assert_bad_request_response(response):
+ assert response.status_code == 400
+ assert response.headers.get('content-type') == json_mime
+
+def assert_bad_request_body_response(response, error_type, title, detail, total_errors):
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+ assert body_response['error_type'] == error_type
+ assert body_response['title'] == title
+ assert body_response['detail'] == detail
+ assert len(body_response['errors']) == total_errors
+ return body_response
+
+def get_iac_file_for_mapping_validations():
+ return IAC_FILE_FOR_MAPPING_VALIDATIONS, open(IAC_FILE_FOR_MAPPING_VALIDATIONS, 'rb'), json_mime
+
+def get_mapping_file_for_mapping_validations(mapping_file_path):
+ return mapping_file_path, open(mapping_file_path, 'rb'), yaml_mime
+
+class TestOTMControllerIaC:
+ @responses.activate
+ def test_controller_no_iac_file(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': None, 'mapping_file': mapping_file}
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+
+ @responses.activate
+ def test_controller_empty_iac_file(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (cloudformation_empty_file, open(cloudformation_empty_file, 'rb'), json_mime)
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'IacFileNotValidError',
+ 'CloudFormation file is not valid', 'Provided iac_file is not valid. Invalid size', 1)
+ assert (body_response['errors'][0]['errorMessage'] == "Provided iac_file is not valid. Invalid size")
+
+ @responses.activate
+ def test_controller_no_mapping_file(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (example_json, open(example_json, 'rb'), json_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': None}
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = json.loads(response.text)
+ assert body_response['status'] == '400'
+
+ @responses.activate
+ @mark.parametrize('body, error_message', [
+ param({'id': 'project_A_id', 'name': 'project_A_name'},
+ "Error in field 'iac_type' located in 'body'. Field required"),
+ param({'iac_type': None, 'id': 'project_A_id', 'name': 'project_A_name'},
+ "Error in field 'iac_type' located in 'body'. Input should be 'CLOUDFORMATION', 'TERRAFORM' or 'TFPLAN'")
+ ])
+ def test_controller_no_iac_type(self, body, error_message):
+ # Given the request files
+ iac_file = (example_json, open(example_json, 'rb'), json_mime)
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert body_response['errors'][0]['errorMessage'] == error_message
+
+ @responses.activate
+ def test_controller_no_id(self):
+ # Given the request files
+ iac_file = (example_json, open(example_json, 'rb'), json_mime)
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': None, 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert (body_response['errors'][0]['errorMessage'] ==
+ "Error in field 'id' located in 'body'. String should have at least 1 character")
+
+ @responses.activate
+ def test_controller_no_name(self):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # And the request files
+ iac_file = (example_json, open(example_json, 'rb'), json_mime)
+ mapping_file = (default_cloudformation_mapping, open(default_cloudformation_mapping, 'rb'), yaml_mime)
+
+ # When I do post on cloudformation endpoint
+ files = {'iac_file': iac_file, 'mapping_file': mapping_file}
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': None}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response, 'RequestValidationError',
+ 'The request is not valid', 'InvalidRequest', 1)
+ assert (body_response['errors'][0]['errorMessage'] ==
+ "Error in field 'name' located in 'body'. String should have at least 1 character")
+
+ @responses.activate
+ @mark.parametrize('expected_mapped_components, files', [
+ param(22,
+ {
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'default_mapping_file': get_mapping_file_for_mapping_validations(DEFAULT_MAPPING_FILE)},
+ id="case A: (201) default_mapping_file"),
+ param(22,
+ {
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'mapping_file': get_mapping_file_for_mapping_validations(MAPPING_FILE)},
+ id="case B: (201) mapping_file"),
+ param(28,
+ {
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'default_mapping_file': get_mapping_file_for_mapping_validations(DEFAULT_MAPPING_FILE),
+ 'custom_mapping_file': get_mapping_file_for_mapping_validations(CUSTOM_MAPPING_FILE)},
+ id="case C: (201) default_mapping_file + custom_mapping_file"),
+ param(28,
+ {
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'mapping_file': get_mapping_file_for_mapping_validations(MAPPING_FILE),
+ 'custom_mapping_file': get_mapping_file_for_mapping_validations(CUSTOM_MAPPING_FILE)},
+ id="case D: (201) mapping_file + custom_mapping_file")
+ ])
+ def test_mapping_files_validations_success(self, expected_mapped_components, files):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # When I do post on cloudformation endpoint
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert response.status_code == iac_create_otm_controller.RESPONSE_STATUS_CODE
+ assert response.headers.get('content-type') == json_mime
+
+ otm = json.loads(response.text)
+ assert otm['otmVersion'] == '0.2.0'
+ assert otm['project']['id'] == 'project_A_id'
+ assert otm['project']['name'] == 'project_A_name'
+ assert otm['project']['name'] == 'project_A_name'
+ assert len(otm['trustZones']) == 2
+ assert len(otm['components']) == expected_mapped_components
+ assert len(otm['dataflows']) == 22
+
+ @responses.activate
+ @mark.parametrize('files, title, detail, error_message', [
+ param({
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'default_mapping_file': get_mapping_file_for_mapping_validations(DEFAULT_MAPPING_FILE),
+ 'mapping_file': get_mapping_file_for_mapping_validations(MAPPING_FILE)},
+ "Error processing mapping file",
+ "default_mapping_file and mapping_file cannot be present at the same time",
+ "default_mapping_file and mapping_file cannot be present at the same time",
+ id="case E: (400) default_mapping_file + mapping_file"),
+ param({
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'default_mapping_file': get_mapping_file_for_mapping_validations(DEFAULT_MAPPING_FILE),
+ 'mapping_file': get_mapping_file_for_mapping_validations(MAPPING_FILE),
+ 'custom_mapping_file': get_mapping_file_for_mapping_validations(CUSTOM_MAPPING_FILE)},
+ "Error processing mapping file",
+ "default_mapping_file and mapping_file cannot be present at the same time",
+ "default_mapping_file and mapping_file cannot be present at the same time",
+ id="case F: (400) default_mapping_file + mapping_file + custom_mapping_file"),
+ param({
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'default_mapping_file': get_mapping_file_for_mapping_validations(INVALID_MAPPING_FILE)},
+ "Error reading the mapping file. The mapping files are not valid.",
+ "ParserError",
+ 'while parsing a flow node\nexpected the node content, but found \'\'\n in \"\", line 2, column 1:\n \n ^',
+ id="case G: (400) default_mapping_file (WRONG mapping file)"),
+ param({
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'mapping_file': get_mapping_file_for_mapping_validations(INVALID_MAPPING_FILE)},
+ "Error reading the mapping file. The mapping files are not valid.",
+ "ParserError",
+ 'while parsing a flow node\nexpected the node content, but found \'\'\n in \"\", line 2, column 1:\n \n ^',
+ id="case H: (400) mapping_file (WRONG mapping file)"),
+ param({
+ 'iac_file': get_iac_file_for_mapping_validations(),
+ 'custom_mapping_file': get_mapping_file_for_mapping_validations(INVALID_MAPPING_FILE)},
+ "Error processing mapping file",
+ "Mapping file must not be void",
+ "Mapping file must not be void",
+ id="case I: (400) custom_mapping_file (WRONG mapping file)")
+ ])
+ def test_mapping_files_validations_errors(self, files, title, detail, error_message):
+ # Given a project_id
+ project_id: str = 'project_A_id'
+
+ # When I do post on cloudformation endpoint
+ body = {'iac_type': DEFAULT_TESTING_IAC_TYPE, 'id': f'{project_id}', 'name': 'project_A_name'}
+ response = client.post(get_url(), files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert_bad_request_response(response)
+ body_response = assert_bad_request_body_response(response,
+ 'MappingFileNotValidError', title, detail, 1)
+ assert body_response['errors'][0]['errorMessage'] == error_message
diff --git a/tests/integration/api/controllers/iac/tfplan/__init__.py b/tests/integration/api/controllers/iac/tfplan/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/integration/api/controllers/iac/tfplan/test_otm_controller_iac_tfplan.py b/tests/integration/api/controllers/iac/tfplan/test_otm_controller_iac_tfplan.py
new file mode 100644
index 00000000..53d6c359
--- /dev/null
+++ b/tests/integration/api/controllers/iac/tfplan/test_otm_controller_iac_tfplan.py
@@ -0,0 +1,64 @@
+import json
+from http import HTTPStatus
+
+import responses
+from fastapi.testclient import TestClient
+from pytest import mark, param
+
+from slp_base import IacType
+from startleft.startleft.api import fastapi_server
+from startleft.startleft.api.controllers.iac import iac_create_otm_controller
+from tests.resources.test_resource_paths import terraform_plan_official, terraform_graph_official, \
+ terraform_plan_default_mapping_file, terraform_plan_custom_mapping_file
+
+TESTING_IAC_TYPE = IacType.TFPLAN.value
+PROJECT_ID = 'project_A_id'
+PROJECT_NAME = 'project_A_name'
+
+webapp = fastapi_server.webapp
+client = TestClient(webapp)
+
+json_mime = 'application/json'
+yaml_mime = 'text/yaml'
+
+def get_file(file_path, mime_type):
+ return file_path, open(file_path, 'rb'), mime_type
+
+
+class TestOTMControllerIaCTFPlan:
+
+ @responses.activate
+ @mark.parametrize('custom_mapping_file_path, expected_component_type',
+ [param(terraform_plan_default_mapping_file, 'dynamodb', id='default_as_custom'),
+ param(terraform_plan_custom_mapping_file, 'empty-component', id='custom_overrides_default'),
+ param(None, 'dynamodb', id='no_custom_mapping')
+ ])
+ def test_custom_mapping_file(self, custom_mapping_file_path, expected_component_type):
+ # Given the provided files (iac, mapping and custom mapping)
+ iac_file_plan = get_file(terraform_plan_official, json_mime)
+ iac_file_graph = get_file(terraform_graph_official, json_mime)
+ mapping_file = get_file(terraform_plan_default_mapping_file, yaml_mime)
+ files = [('iac_file', iac_file_plan), ('iac_file', iac_file_graph),
+ ('mapping_file', mapping_file)]
+ if custom_mapping_file_path:
+ custom_mapping_file = get_file(custom_mapping_file_path, yaml_mime)
+ files.append(('custom_mapping_file', custom_mapping_file))
+
+ # When I do post on Terraform Plan endpoint
+ url = iac_create_otm_controller.PREFIX + '/iac'
+ body = {'iac_type': TESTING_IAC_TYPE, 'id': PROJECT_ID, 'name': PROJECT_NAME}
+ response = client.post(url, files=files, data=body)
+
+ # Then the OTM is returned inside the response as JSON
+ assert HTTPStatus.CREATED == response.status_code
+ assert json_mime == response.headers.get('content-type')
+
+ otm = json.loads(response.text)
+ assert otm['otmVersion'] == '0.2.0'
+ assert otm['project']['id'] == 'project_A_id'
+ assert otm['project']['name'] == 'project_A_name'
+ assert otm['project']['name'] == 'project_A_name'
+ assert len(otm['trustZones']) == 1
+ assert len(otm['components']) == 8
+ assert len(otm['dataflows']) == 8
+ assert otm['components'][0]['type'] == expected_component_type
diff --git a/tests/resources/cloudformation/cloudformation_custom_mapping_file.yaml b/tests/resources/cloudformation/cloudformation_custom_mapping_file.yaml
new file mode 100644
index 00000000..aae54b5a
--- /dev/null
+++ b/tests/resources/cloudformation/cloudformation_custom_mapping_file.yaml
@@ -0,0 +1,13 @@
+trustzones: []
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+dataflows: []
diff --git a/tests/resources/cloudformation/cloudformation_empty_file.json b/tests/resources/cloudformation/cloudformation_empty_file.json
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/resources/cloudformation/cloudformation_mapping_no_dataflows.yaml b/tests/resources/cloudformation/cloudformation_mapping_no_dataflows.yaml
new file mode 100644
index 00000000..0e35c327
--- /dev/null
+++ b/tests/resources/cloudformation/cloudformation_mapping_no_dataflows.yaml
@@ -0,0 +1,461 @@
+trustzones:
+ - id: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+
+ #SG MAPPING (AUXILIARY SG)
+ #type 4
+ - id: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: ["Properties.SubnetId.Ref","Properties.SubnetId"], defaultValue: "b61d6911-338d-46a8-9f39-8dcd24abfe91"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: b61d6911-338d-46a8-9f39-8dcd24abfe91}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ #NEW SG MAPPINGS (AUXILIARY SG)
+
+ #type 4
+ # internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+# tags:
+# - { $path: "Type" }
+
diff --git a/tests/resources/cloudformation/cloudformation_mapping_trustzone_no_id.yaml b/tests/resources/cloudformation/cloudformation_mapping_trustzone_no_id.yaml
new file mode 100644
index 00000000..36a5659a
--- /dev/null
+++ b/tests/resources/cloudformation/cloudformation_mapping_trustzone_no_id.yaml
@@ -0,0 +1,568 @@
+trustzones:
+ - name: Public Cloud
+ type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+
+ #SG MAPPING (AUXILIARY SG)
+ #type 4
+ - name: Internet
+ type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ $source: {$singleton:
+ {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties | (SecurityGroupEgress[0].CidrIp || SecurityGroupIngress[0].CidrIp)]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: [
+ "Properties | SubnetId.Ref || (NetworkInterfaces[].SubnetId.Ref | [0])",
+ "Properties | SubnetId || (NetworkInterfaces[].SubnetId | [0])"
+ ], defaultValue: "a1"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: a1}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: a1
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: a1
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ #NEW SG MAPPINGS (AUXILIARY SG)
+
+ #type 4
+ # internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: b2
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: b2
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: a1
+# tags:
+# - { $path: "Type" }
+
+dataflows:
+ #Begin: SG MAPPINGS
+ #type 1
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.VPCConfig.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.VPCConfig.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ #type 2
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupIngress']"}
+ source: {$hub: {$path: "Properties.SourceSecurityGroupId|squash(@)[0][0]"}}
+ destination: {$hub: {$path: "Properties.GroupId"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupEgress']"}
+ source: {$hub: {$path: "Properties.GroupId"}}
+ destination: {$hub: {$path: "Properties.DestinationSecurityGroupId|squash(@)[0][0]"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+ #type 3
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$path: "Properties.SecurityGroupIngress[0].CidrIp"}
+ destination: {$hub:{$path: "_key"}}
+ tags:
+ - $path: "Properties.SecurityGroupIngress[0].Description"
+ - $path: "Properties.SecurityGroupIngress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupIngress[0].FromPort"
+ - $path: "Properties.SecurityGroupIngress[0].ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$hub:{$path: "_key"}}
+ destination: {$path: "Properties.SecurityGroupEgress[0].CidrIp"}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupEgress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupEgress[0].CidrIp"
+
+ #End: SG MAPPINGS
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow to Lambda function in {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$path: "Properties.EventSourceArn|squash(@)[0]"}
+ destination: {$path: "Properties.FunctionName.Ref"}
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow from Lambda function on Failure {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$findFirst: ["Properties.FunctionName.Ref", "Properties.FunctionName"]}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.DestinationConfig.OnFailure.Destination|squash(@)[0]"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "S3 dataflow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ source: {$path: "_key"}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.LoggingConfiguration.DestinationBucketName.Ref"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "API gateway data flow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ApiGateway::Authorizer']"}
+ source: {$path: "_key"}
+ destination: {$path: "Properties.ProviderARNs[0]|squash(@)[0]"}
+ tags:
+ - API gateway dataflow
+
diff --git a/tests/resources/cloudformation/cloudformation_wrong_mapping_file.yaml b/tests/resources/cloudformation/cloudformation_wrong_mapping_file.yaml
new file mode 100644
index 00000000..429c1232
--- /dev/null
+++ b/tests/resources/cloudformation/cloudformation_wrong_mapping_file.yaml
@@ -0,0 +1 @@
+trustzones: [
diff --git a/tests/resources/cloudformation/old_cloudformation_default_mapping.yaml b/tests/resources/cloudformation/old_cloudformation_default_mapping.yaml
new file mode 100755
index 00000000..09e46cf6
--- /dev/null
+++ b/tests/resources/cloudformation/old_cloudformation_default_mapping.yaml
@@ -0,0 +1,665 @@
+trustzones:
+ - id: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+
+ #SG MAPPING (AUXILIARY SG)
+ #type 4
+ - id: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ $source: {$singleton:
+ {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties | (SecurityGroupEgress[0].CidrIp || SecurityGroupIngress[0].CidrIp)]"}}
+
+# The order of the components is important because parent components must be defined before child components
+components:
+ - id: {$format: "{name}"}
+ type: CD-ACM
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-ACM (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CertificateManager::Certificate']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::CloudWatch::Alarm']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: dynamodb
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::DynamoDB::Table']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)dynamodb$
+ name: DynamoDB from VPCEndpoint
+ type: dynamodb
+ tags:
+ - {$format: "{_key} ({Type})"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: vpc
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPC']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: ec2
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Instance']"}
+ parent: {$findFirst: {$searchParams:{ searchPath: [
+ "Properties | SubnetId.Ref || (NetworkInterfaces[].SubnetId.Ref | [0])",
+ "Properties | SubnetId || (NetworkInterfaces[].SubnetId | [0])"
+ ], defaultValue: "b61d6911-338d-46a8-9f39-8dcd24abfe91"}}}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::Subnet']"}
+ parent: {$findFirst: ["Properties.VpcId.Ref", "Properties.VpcId"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ parent: {$findFirst:[ "Properties.SubnetIds[].Ref", "Properties.VpcId.Ref"]}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::InternetGateway']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elastic-container-service
+ name: {$path: "_key"}
+ $source: {
+ $children: {$path: "Properties.TaskDefinition.Ref"},
+ $root: "Resources|squash(@)[?Type=='AWS::ECS::Service']"
+ }
+ parent: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.Subnets[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: docker-container
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ECS::TaskDefinition']"}
+ parent: {$parent: b61d6911-338d-46a8-9f39-8dcd24abfe91}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancingV2::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: load-balancer
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ElasticLoadBalancing::LoadBalancer']"}
+ parent: {$path: "Properties.Subnets[]|map(&values(@), @)[]|map(&re_sub('[:]', '-', @), @)"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: kms
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kms (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::KMS::Key']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: aws-lambda-function
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::Function']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: aws-lambda-function
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::Function']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cloudwatch
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cloudwatch (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?Type=='AWS::Logs::LogGroup']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBInstance']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: rds
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::RDS::DBCluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: route-53
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Route53::HostedZone']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: s3
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)s3$
+ name: S3 from VPCEndpoint
+ type: s3
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-SECRETS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SECRETS-MANAGER (grouped)" }}}
+ $source: {$singleton: { $root: "Resources|squash(@)[?Type=='AWS::SecretsManager::Secret']"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sqs-simple-queue-service
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::SQS::Queue']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SYSTEMS-MANAGER
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SYSTEMS-MANAGER (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SSM')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ssm$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ - regex: ^(.*)ssmmessages$
+ name: {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "Systems Manager from VPCEndpoint (grouped)" }}}
+ type: CD-SYSTEMS-MANAGER
+ tags:
+ - {$numberOfSources: {oneSource:{$format: "AWS::EC2::VPCEndpoint"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: empty-component
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Synthetics')]"}
+ parent: {$path: "Properties.VPCConfig.SubnetIds[]|map(&values(@), @)[]"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: api-gateway
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "api-gateway (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ApiGateway')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: athena
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "athena (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Athena')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MQ
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MQ (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::AmazonMQ')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cf-cloudfront
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "cf-cloudfront (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudFront')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: cloudtrail
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::CloudTrail')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::UserPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: cognito
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Cognito::IdentityPool']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-CONFIG
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-CONFIG (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Config')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-registry
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elastic-container-registry (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ECR')]"}}
+ $altsource:
+ - $mappingType: {$root: "Resources|squash(@)[?Type=='AWS::EC2::VPCEndpoint']"}
+ $mappingPath: {$path: "Properties.ServiceName"}
+ $mappingLookups:
+ - regex: ^(.*)ecr.dkr$
+ name: ECR from VPCEndpoint
+ type: elastic-container-registry
+ tags:
+ - { $format: "{_key} ({Type})" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: elastic-container-kubernetes
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::EKS::Cluster')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: elasticache
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "elasticache (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::ElastiCache')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-GUARDDUTY
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-GUARDDUTY (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::GuardDuty')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-INSPECTOR
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-INSPECTOR (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Inspector')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-MACIE
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-MACIE (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Macie')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: CD-AWS-NETWORK-FIREWALL
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::NetworkFirewall::Firewall']"}
+ parent: {$path: "Properties.VpcId.Ref"}
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: redshift
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Redshift::Cluster']"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-AWS-IAM
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::IAM::Role']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CODEBUILD
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CodeBuild::Project']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CODEPIPELINE
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CodePipeline::Pipeline']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: eventbridge
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Events::Rule']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-CLOUDFORMATION
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::CloudFormation::Stack']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-GLUE
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Glue::Table']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-DMS
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::DMS::ReplicationTask']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: api-gateway
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::Api']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: CD-EC2-AUTO-SCALING
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::AutoScaling::AutoScalingGroup']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: elastic-file-system
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EFS::MountTarget']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: {$format: "{name}"}
+ type: CD-SES
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-SES (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SES')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: sns
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "sns (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::SNS')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: step-functions
+ name: {$path: "_key"}
+ $source: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::StepFunctions::StateMachine')]"}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+ - id: { $format: "{name}" }
+ type: step-functions
+ name: { $path: "_key" }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::Serverless::StateMachine']" }
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - { $path: "Type" }
+
+
+ - id: {$format: "{name}"}
+ type: CD-WAF
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "CD-WAF (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::WAF')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisAnalytics')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-analytics
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-analytics (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::Kinesis::')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ - id: {$format: "{name}"}
+ type: kinesis-data-firehose
+ name: {$numberOfSources: {oneSource:{$path: "_key"}, multipleSource:{ $format: "kinesis-data-firehose (grouped)" }}}
+ $source: {$singleton: {$root: "Resources|squash(@)[?starts_with(Type, 'AWS::KinesisFirehose')]"}}
+ parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ tags:
+ - {$numberOfSources: {oneSource:{$path: "Type"}, multipleSource:{ $format: "{_key} ({Type})"}}}
+
+ #NEW SG MAPPINGS (AUXILIARY SG)
+
+ #type 4
+ # internet custom component for a security group egress
+ - id: {$format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupEgress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupEgress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Outbound connection destination IP
+
+ # internet custom component for a security group ingress
+ # All those Cidrips that are not ips such as vpc names will not generate an unnecessary document
+ - id: { $format: "{name}" }
+ type: generic-client
+ name: { $ip: { $path: "Properties.SecurityGroupIngress[0].CidrIp" } }
+ $source: { $root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup' && Properties.SecurityGroupIngress[0].CidrIp]" }
+ parent: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ tags:
+ - Inbound connection source IP
+
+
+# Default catchall
+# - id: { $format: "{name}"}
+# $source:
+# $catchall: {$root: "Resources|squash(@)"}
+# type: {$path: "Type"}
+# name: {$path: "_key"}
+# parent: b61d6911-338d-46a8-9f39-8dcd24abfe91
+# tags:
+# - { $path: "Type" }
+
+dataflows:
+ #Begin: SG MAPPINGS
+ #type 1
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.NetworkConfiguration.AwsvpcConfiguration.SecurityGroups|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Properties.VPCConfig.SecurityGroupIds]"}
+ source: {$path: "_key"}
+ destination: {$hub: {$path: "Properties.VPCConfig.SecurityGroupIds|map(&values(@), @)[0][0][0]"}}
+ tags:
+
+ #type 2
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupIngress']"}
+ source: {$hub: {$path: "Properties.SourceSecurityGroupId|squash(@)[0][0]"}}
+ destination: {$hub: {$path: "Properties.GroupId"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroupEgress']"}
+ source: {$hub: {$path: "Properties.GroupId"}}
+ destination: {$hub: {$path: "Properties.DestinationSecurityGroupId|squash(@)[0][0]"}}
+ tags:
+ - $path: "Properties.Description"
+ - $path: "Properties.IpProtocol"
+ - $path: "Properties.FromPort"
+ - $path: "Properties.ToPort"
+ #type 3
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$path: "Properties.SecurityGroupIngress[0].CidrIp"}
+ destination: {$hub:{$path: "_key"}}
+ tags:
+ - $path: "Properties.SecurityGroupIngress[0].Description"
+ - $path: "Properties.SecurityGroupIngress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupIngress[0].FromPort"
+ - $path: "Properties.SecurityGroupIngress[0].ToPort"
+
+ - id: {$format: "{name}"}
+ name: {$format: "{_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::EC2::SecurityGroup']"}
+ source: {$hub:{$path: "_key"}}
+ destination: {$path: "Properties.SecurityGroupEgress[0].CidrIp"}
+ tags:
+ - $path: "Properties.SecurityGroupEgress[0].Description"
+ - $path: "Properties.SecurityGroupEgress[0].IpProtocol"
+ - $path: "Properties.SecurityGroupEgress[0].CidrIp"
+
+ #End: SG MAPPINGS
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow to Lambda function in {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$path: "Properties.EventSourceArn|squash(@)[0]"}
+ destination: {$path: "Properties.FunctionName.Ref"}
+
+ - id: {$format: "{name}"}
+ name: {$format: "dataflow from Lambda function on Failure {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::Lambda::EventSourceMapping']"}
+ source: {$findFirst: ["Properties.FunctionName.Ref", "Properties.FunctionName"]}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.DestinationConfig.OnFailure.Destination|squash(@)[0]"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "S3 dataflow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::S3::Bucket']"}
+ source: {$path: "_key"}
+ destination: {$path: {$searchParams:{ searchPath: "Properties.LoggingConfiguration.DestinationBucketName.Ref"}}}
+
+ - id: {$format: "{name}"}
+ name: {$format: "API gateway data flow from {_key}"}
+ $source: {$root: "Resources|squash(@)[?Type=='AWS::ApiGateway::Authorizer']"}
+ source: {$path: "_key"}
+ destination: {$path: "Properties.ProviderARNs[0]|squash(@)[0]"}
+ tags:
+ - API gateway dataflow
diff --git a/tests/resources/drawio/aws_minimal.drawio b/tests/resources/drawio/aws_minimal.drawio
new file mode 100644
index 00000000..2225960e
--- /dev/null
+++ b/tests/resources/drawio/aws_minimal.drawio
@@ -0,0 +1 @@
+7VbbcpswEP0aP8bDNTiPMdhJ22TaxnGSN48MMqgRiBHCxv36rkBgbmmSmXSmDxljrD0Su9LZ3WMmphsXVxyl0S0LMJ0YWlBMTG9iGLpl6PAjkWOFXGhWBYScBGrRCViR31iBmkJzEuCss1AwRgVJu6DPkgT7ooMhztmhu2zHaDdqikI8AFY+okP0kQQiqtCZ4Zzwa0zCqI6sn19UMzGqF6uTZBEK2KEFmYuJ6XLGRDWKCxdTSV7NS/Xc8oXZZmMcJ+ItD9jEeVjPsuKeRhuP/VqHj0/emfKyRzRXB758XAHgUpYHat/iWJORMpKIklB7DhfEc7WJDTOutKaG3QP6ttMF9KElfXSBvu10Ab3vXu/F1/sbbAEDq+Ne68XXWhuEy5yzXFCSYLcpPQ3AkKOAQEpcRhkHLGEJsDePREzB0mF4iIjAqxT5ktUDtA1gO5YIVfy6UduKeOkVylsgiMWVjzITmC/2uEpItYZSlGZk2zzFsZ/zjOzxHc4q5xKFQkzlOC5C2bNTdMisachZnpbb/wKxRmc3MNz4sjA2iArpSHD2jOuDTgwTPktZfPMdobRHwB5zQaCvLikJpX/BZDikLIp3pUdghSThTWl5pqaYGAsRoCzCgTrSsBfqwoaouGhBqjeuMIux4EdYomYbxVFCZZjKPpzaXq+xqN3yNYiU1ISN71M3wkA15HhzFuvrrw/2z6fn4/333Ea338748swYNOegI0lc6le7vBTkkTiEqJRs4e5TAunjQg5ZnOZQOhmMPSTQFmV4oxuzAr7TNAmHVP5VON7Or92h1xqyOxshd/YB3I7uf8jtHQ4JVP6n5n1qXkvzeFUVI2KnW85ifvlPxa4J0Yid/jFiZ1n/ndiZr4vdaO11/gdq3m/QFtMfLCOiTJ63ZUKw+NXE+FgWWLdyRyrHnGLf6CUesrW0Z7ZpvdwOb1RW473JNM5LFWin0xlk0zmf2sN0XpjvziaYp3fWcq715m8u/gA=
\ No newline at end of file
diff --git a/tests/resources/drawio/custom_drawio_mapping.yaml b/tests/resources/drawio/custom_drawio_mapping.yaml
new file mode 100644
index 00000000..790c9979
--- /dev/null
+++ b/tests/resources/drawio/custom_drawio_mapping.yaml
@@ -0,0 +1,8 @@
+trustzones:
+ - default: true
+ label: Internet (default)
+ type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+components:
+ - label: AWS Cloud
+ type: vpc
\ No newline at end of file
diff --git a/tests/resources/drawio/invalid-extension-mtmt-mobile-api.tm7 b/tests/resources/drawio/invalid-extension-mtmt-mobile-api.tm7
new file mode 100644
index 00000000..4adaac6e
--- /dev/null
+++ b/tests/resources/drawio/invalid-extension-mtmt-mobile-api.tm7
@@ -0,0 +1,4 @@
+DRAWINGSURFACE 6c2a2f80-b419-425c-a0fd-299f2c49bf6a Diagram Name Diagram 1 DRAWINGSURFACE 7537441a-1c03-48c0-b9c8-f82d5906c139 GE.TB.B 7537441a-1c03-48c0-b9c8-f82d5906c139 Generic Trust Border Boundary Name Internet Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Trust Boundary Area GE.TB.B 281 386 0 151 202 24cdf4da-ac7f-4a35-bab0-29256d4169bf GE.TB.B 24cdf4da-ac7f-4a35-bab0-29256d4169bf Azure Trust Boundary Name Public Cloud Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Configurable Attributes As Generic Trust Border Boundary SE.TB.TMCore.AzureTrustBoundary 308 744 1 142 371 53245f54-0656-4ede-a393-357aeaa2e20f GE.DS 53245f54-0656-4ede-a393-357aeaa2e20f Azure Database for PostgreSQL Name Accounting PostgreSQL Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes Azure Postgres DB Firewall Settings ba682010-cfcf-4916-9f88-524f8d9ce8a8 Select Allow access from all networks Allow access from Azure Allow access from selected networks 0 Azure Postgres DB TLS Enforced 65a8827c-6efd-4243-aa81-0625c4aea98e Select True False 0 As Generic Data Store SE.DS.TMCore.AzurePostgresDB 100 975 1 182 100 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 GE.EI 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 Mobile Client Name Mobile Client Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes Mobile Client Technologies 84259115-f55a-44fc-9423-6c239e36e595 Select Generic Xamarin Android iOS Windows Phone 3 As Generic External Interactor SE.EI.TMCore.Mobile 100 433 1 240 100 5d15323e-3729-4694-87b1-181c90af5045 GE.P 5d15323e-3729-4694-87b1-181c90af5045 Web API Name Public API v2 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes Web API Technologies 1e972c93-2bd6-4915-8f5f-f46fd9f9399d Select Generic MVC 5 MVC 6 0 Hosting environment 6c5d51b0-91b1-45ca-aebd-3238f93db3b8 Select On Prem Azure 0 Identity Provider 3175328a-d229-4546-887b-39b914a75dd8 Select ADFS Azure AD 0 As Generic Process SE.P.TMCore.WebAPI 100 765 1 243 100 91882aca-8249-49a7-96f0-164b68411b48 GE.DS 91882aca-8249-49a7-96f0-164b68411b48 Azure Storage Name Azure File Storage Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes Storage Type b3ece90f-c578-4a48-b4d4-89d97614e0d2 Select File Table Queue Blob 0 HTTPS Enforced 229f2e53-bc3f-476c-8ac9-57da37efd00f Select True False 0 Network Security eb012c7c-9201-40d2-989f-2aad423895a5 Select Allow access from all networks Allow access from selective networks 0 CORS Enabled c63455d0-ad77-4b08-aa02-9f8026bb056f Select True False 0 As Generic Data Store SE.DS.TMCore.AzureStorage 100 974 1 311 100 eb072144-af37-4b75-b46b-b78111850d3e GE.DF eb072144-af37-4b75-b46b-b78111850d3e Request Name PSQL Request Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Request 892 210 NorthEast West 5d15323e-3729-4694-87b1-181c90af5045 846 261 53245f54-0656-4ede-a393-357aeaa2e20f 980 232 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 GE.DF 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 Response Name PSQL Response Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Response 918 275 West NorthEast 53245f54-0656-4ede-a393-357aeaa2e20f 980 232 5d15323e-3729-4694-87b1-181c90af5045 846 261 f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 GE.DF f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 Request Name File Request Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Request 906 322 SouthEast West 5d15323e-3729-4694-87b1-181c90af5045 846 324 91882aca-8249-49a7-96f0-164b68411b48 979 361 d826de3d-1464-4d1f-8105-aa0449a50aec GE.DF d826de3d-1464-4d1f-8105-aa0449a50aec Response Name File Response Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Response 904 385 West SouthEast 91882aca-8249-49a7-96f0-164b68411b48 979 361 5d15323e-3729-4694-87b1-181c90af5045 846 324 9840bcdf-c444-437d-8289-d5468f41b0db GE.DF 9840bcdf-c444-437d-8289-d5468f41b0db Request Name API Request Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Request 637 236 East West 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 528 290 5d15323e-3729-4694-87b1-181c90af5045 770 293 5861370d-b333-4d4b-9420-95425026e9c9 GE.DF 5861370d-b333-4d4b-9420-95425026e9c9 Response Name API Response Dataflow Order 15ccd509-98eb-49ad-b9c2-b4a2926d1780 0 Out Of Scope 71f3d9aa-b8ef-4e54-8126-607a1d903103 false Reason For Out Of Scope 752473b6-52d4-4776-9a24-202153f7d579 Configurable Attributes As Generic Data Flow Show Boundary Threats 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 Select Yes No 0 SE.DF.TMCore.Response 638 347 West East 5d15323e-3729-4694-87b1-181c90af5045 770 293 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 528 290 1 TH1535d15323e-3729-4694-87b1-181c90af5045eb072144-af37-4b75-b46b-b78111850d3e53245f54-0656-4ede-a393-357aeaa2e20f 6c2a2f80-b419-425c-a0fd-299f2c49bf6a eb072144-af37-4b75-b46b-b78111850d3e 55 5d15323e-3729-4694-87b1-181c90af5045:eb072144-af37-4b75-b46b-b78111850d3e:53245f54-0656-4ede-a393-357aeaa2e20f 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to Azure Postgres DB instances due to weak network security configuration UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to Accounting PostgreSQL instances due to weak network security configuration. InteractionString PSQL Request PossibleMitigations Restrict access to Azure Postgres DB instances by configuring server-level firewall rules to only permit connections from selected IP addresses where possible. Refer: <a href="https://aka.ms/tmt-th153">https://aka.ms/tmt-th153</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 53245f54-0656-4ede-a393-357aeaa2e20f TH153 false false TH1545d15323e-3729-4694-87b1-181c90af5045eb072144-af37-4b75-b46b-b78111850d3e53245f54-0656-4ede-a393-357aeaa2e20f 6c2a2f80-b419-425c-a0fd-299f2c49bf6a eb072144-af37-4b75-b46b-b78111850d3e 1 5d15323e-3729-4694-87b1-181c90af5045:eb072144-af37-4b75-b46b-b78111850d3e:53245f54-0656-4ede-a393-357aeaa2e20f 0001-01-01T00:00:00 High Title An adversary may read and/or tamper with the data transmitted to Azure Postgres DB due to weak configuration UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription An adversary may read and/or tamper with the data transmitted to Accounting PostgreSQL due to weak configuration. InteractionString PSQL Request PossibleMitigations Enforce communication between clients and Azure Postgres DB to be over SSL/TLS by enabling the Enforce SSL connection feature on the server. Check that the connection strings used to connect to MySQL databases have the right configuration (e.g. ssl = true or sslmode=require or sslmode=true are set). Refer: <a href="https://aka.ms/tmt-th154a">https://aka.ms/tmt-th154a</a> Configure MySQL server to use a verifiable SSL certificate (needed for SSL/TLS communication). Refer: <a href="https://aka.ms/tmt-th154b">https://aka.ms/tmt-th154b</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 53245f54-0656-4ede-a393-357aeaa2e20f TH154 false false TH1555d15323e-3729-4694-87b1-181c90af5045eb072144-af37-4b75-b46b-b78111850d3e53245f54-0656-4ede-a393-357aeaa2e20f 6c2a2f80-b419-425c-a0fd-299f2c49bf6a eb072144-af37-4b75-b46b-b78111850d3e 2 5d15323e-3729-4694-87b1-181c90af5045:eb072144-af37-4b75-b46b-b78111850d3e:53245f54-0656-4ede-a393-357aeaa2e20f 0001-01-01T00:00:00 High Title An adversary can gain long term, persistent access to an Azure Postgres DB instance through the compromise of local user account password(s) UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain long term, persistent access to Accounting PostgreSQL instance through the compromise of local user account password(s). InteractionString PSQL Request PossibleMitigations It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 53245f54-0656-4ede-a393-357aeaa2e20f TH155 false false TH11053245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 3 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may gain unauthorized access to Web API due to poor access control checks UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary may gain unauthorized access to Web API due to poor access control checks InteractionString PSQL Response PossibleMitigations Implement proper authorization mechanism in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtauthz#authz-aspnet">https://aka.ms/tmtauthz#authz-aspnet</a> Priority High SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH110 false false TH10653245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 4 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive information from an API through error messages UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details InteractionString PSQL Response PossibleMitigations Ensure that proper exception handling is done in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtxmgmt#exception">https://aka.ms/tmtxmgmt#exception</a> Priority High SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH106 false false TH1653245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 5 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by sniffing traffic to Web API UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data by sniffing traffic to Web API InteractionString PSQL Response PossibleMitigations Force all traffic to Web APIs over HTTPS connection. Refer: <a href="https://aka.ms/tmtcommsec#webapi-https">https://aka.ms/tmtcommsec#webapi-https</a> Priority High SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH16 false false TH8353245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 6 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 Medium Title An adversary can gain access to sensitive data stored in Web API's config files UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. InteractionString PSQL Response PossibleMitigations Encrypt sections of Web API's configuration files that contain sensitive data. Refer: <a href="https://aka.ms/tmtconfigmgmt#config-sensitive">https://aka.ms/tmtconfigmgmt#config-sensitive</a> Priority Medium SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH83 false false TH10953245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 7 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title Attacker can deny a malicious act on an API leading to repudiation issues UserThreatCategory Repudiation UserThreatShortDescription Repudiation threats involve an adversary denying that something happened UserThreatDescription Attacker can deny a malicious act on an API leading to repudiation issues InteractionString PSQL Response PossibleMitigations Ensure that auditing and logging is enforced on Web API. Refer: <a href="https://aka.ms/tmtauditlog#logging-web-api">https://aka.ms/tmtauditlog#logging-web-api</a> Priority High SDLPhase Design 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH109 false false TH8753245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 8 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may spoof Accounting PostgreSQL and gain access to Web API UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application InteractionString PSQL Response PossibleMitigations Ensure that standard authentication techniques are used to secure Web APIs. Refer: <a href="https://aka.ms/tmtauthn#authn-secure-api">https://aka.ms/tmtauthn#authn-secure-api</a> Priority High SDLPhase Design 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH87 false false TH10853245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 9 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may inject malicious inputs into an API and affect downstream processes UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription An adversary may inject malicious inputs into an API and affect downstream processes InteractionString PSQL Response PossibleMitigations Ensure that model validation is done on Web API methods. Refer: <a href="https://aka.ms/tmtinputval#validation-api">https://aka.ms/tmtinputval#validation-api</a> Implement input validation on all string type parameters accepted by Web API methods. Refer: <a href="https://aka.ms/tmtinputval#string-api">https://aka.ms/tmtinputval#string-api</a> Priority High SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH108 false false TH9753245f54-0656-4ede-a393-357aeaa2e20f36091fd8-dba8-424e-a3cd-784ea6bcb9e05d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 36091fd8-dba8-424e-a3cd-784ea6bcb9e0 10 53245f54-0656-4ede-a393-357aeaa2e20f:36091fd8-dba8-424e-a3cd-784ea6bcb9e0:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by performing SQL injection through Web API UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. InteractionString PSQL Response PossibleMitigations Ensure that type-safe parameters are used in Web API for data access. Refer: <a href="https://aka.ms/tmtinputval#typesafe-api">https://aka.ms/tmtinputval#typesafe-api</a> Priority High SDLPhase Implementation 53245f54-0656-4ede-a393-357aeaa2e20f AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH97 false false TH175d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 11 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to Azure File Storage due to weak access control restrictions UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to Azure File Storage due to weak access control restrictions InteractionString File Request PossibleMitigations Grant limited access to objects in Azure Storage using SAS or SAP. It is recommended to scope SAS and SAP to permit only the necessary permissions over a short period of time. Refer: <a href="https://aka.ms/tmt-th17a">https://aka.ms/tmt-th17a</a> and <a href="https://aka.ms/tmt-th17b">https://aka.ms/tmt-th17b</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH17 false false TH1405d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 12 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to Azure File Storage instances due to weak network configuration UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to Azure File Storage instances due to weak network configuration InteractionString File Request PossibleMitigations It is recommended to restrict access to Azure Storage instances to selected networks where possible. <a href="https://aka.ms/tmt-th140">https://aka.ms/tmt-th140</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH140 false false TH675d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 13 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 High Title An adversary may gain unauthorized access to Azure File Storage account in a subscription UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary may gain unauthorized access to Azure File Storage account in a subscription InteractionString File Request PossibleMitigations Assign the appropriate Role-Based Access Control (RBAC) role to users, groups and applications at the right scope for the Azure Storage instance. Refer: <a href="https://aka.ms/tmt-th67">https://aka.ms/tmt-th67</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH67 false false TH635d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 14 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 High Title An adversary can abuse poorly managed Azure File Storage account access keys UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can abuse poorly managed Azure File Storage account access keys and gain unauthorized access to storage. InteractionString File Request PossibleMitigations Ensure secure management and storage of Azure storage access keys. It is recommended to rotate storage access keys regularly, in accordance with organizational policies. Refer: <a href="https://aka.ms/tmt-th63">https://aka.ms/tmt-th63</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH63 false false TH655d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 15 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 Medium Title An adversary can abuse an insecure communication channel between a client and Azure File Storage UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can abuse an insecure communication channel between a client and Azure File Storage InteractionString File Request PossibleMitigations Ensure that communication to Azure Storage is over HTTPS. It is recommended to enable the secure transfer required option to force communication with Azure Storage to be over HTTPS. Use Client-Side Encryption to store sensitive data in Azure Storage. Refer: <a href="https://aka.ms/tmt-th65">https://aka.ms/tmt-th65</a> Priority Medium SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH65 false false TH205d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 16 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 Medium Title An adversary can deny actions on Azure File Storage due to lack of auditing UserThreatCategory Repudiation UserThreatShortDescription Repudiation threats involve an adversary denying that something happened UserThreatDescription Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. InteractionString File Request PossibleMitigations Use Azure Storage Analytics to audit access of Azure Storage. If possible, audit the calls to the Azure Storage instance at the source of the call. Refer: <a href="https://aka.ms/tmt-th20">https://aka.ms/tmt-th20</a> Priority Medium SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH20 false false TH215d15323e-3729-4694-87b1-181c90af5045f5fe3c6e-e10b-4252-a4aa-4ec6108c96a691882aca-8249-49a7-96f0-164b68411b48 6c2a2f80-b419-425c-a0fd-299f2c49bf6a f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6 17 5d15323e-3729-4694-87b1-181c90af5045:f5fe3c6e-e10b-4252-a4aa-4ec6108c96a6:91882aca-8249-49a7-96f0-164b68411b48 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to Azure File Storage due to weak CORS configuration UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to Azure File Storage due to weak CORS configuration InteractionString File Request PossibleMitigations Ensure that only specific, trusted origins are allowed. Refer: <a href="https://aka.ms/tmt-th21">https://aka.ms/tmt-th21</a> Priority High SDLPhase Implementation 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 91882aca-8249-49a7-96f0-164b68411b48 TH21 false false TH10891882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 62 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may inject malicious inputs into an API and affect downstream processes UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription An adversary may inject malicious inputs into an API and affect downstream processes InteractionString File Response PossibleMitigations Ensure that model validation is done on Web API methods. Refer: <a href="https://aka.ms/tmtinputval#validation-api">https://aka.ms/tmtinputval#validation-api</a> Implement input validation on all string type parameters accepted by Web API methods. Refer: <a href="https://aka.ms/tmtinputval#string-api">https://aka.ms/tmtinputval#string-api</a> Priority High SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH108 false false TH8791882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 61 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may spoof Azure File Storage and gain access to Web API UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application InteractionString File Response PossibleMitigations Ensure that standard authentication techniques are used to secure Web APIs. Refer: <a href="https://aka.ms/tmtauthn#authn-secure-api">https://aka.ms/tmtauthn#authn-secure-api</a> Priority High SDLPhase Design 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH87 false false TH10991882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 60 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title Attacker can deny a malicious act on an API leading to repudiation issues UserThreatCategory Repudiation UserThreatShortDescription Repudiation threats involve an adversary denying that something happened UserThreatDescription Attacker can deny a malicious act on an API leading to repudiation issues InteractionString File Response PossibleMitigations Ensure that auditing and logging is enforced on Web API. Refer: <a href="https://aka.ms/tmtauditlog#logging-web-api">https://aka.ms/tmtauditlog#logging-web-api</a> Priority High SDLPhase Design 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH109 false false TH8391882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 59 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 Medium Title An adversary can gain access to sensitive data stored in Web API's config files UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. InteractionString File Response PossibleMitigations Encrypt sections of Web API's configuration files that contain sensitive data. Refer: <a href="https://aka.ms/tmtconfigmgmt#config-sensitive">https://aka.ms/tmtconfigmgmt#config-sensitive</a> Priority Medium SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH83 false false TH1691882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 58 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by sniffing traffic to Web API UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data by sniffing traffic to Web API InteractionString File Response PossibleMitigations Force all traffic to Web APIs over HTTPS connection. Refer: <a href="https://aka.ms/tmtcommsec#webapi-https">https://aka.ms/tmtcommsec#webapi-https</a> Priority High SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH16 false false TH10691882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 57 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive information from an API through error messages UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details InteractionString File Response PossibleMitigations Ensure that proper exception handling is done in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtxmgmt#exception">https://aka.ms/tmtxmgmt#exception</a> Priority High SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH106 false false TH11091882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 56 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may gain unauthorized access to Web API due to poor access control checks UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary may gain unauthorized access to Web API due to poor access control checks InteractionString File Response PossibleMitigations Implement proper authorization mechanism in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtauthz#authz-aspnet">https://aka.ms/tmtauthz#authz-aspnet</a> Priority High SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH110 false false TH1046183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 25 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may jail break into a mobile device and gain elevated privileges UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary may jail break into a mobile device and gain elevated privileges InteractionString API Request PossibleMitigations Implement implicit jailbreak or rooting detection. Refer: <a href="https://aka.ms/tmtauthz#rooting-detection">https://aka.ms/tmtauthz#rooting-detection</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH104 false false TH1106183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 26 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may gain unauthorized access to Web API due to poor access control checks UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary may gain unauthorized access to Web API due to poor access control checks InteractionString API Request PossibleMitigations Implement proper authorization mechanism in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtauthz#authz-aspnet">https://aka.ms/tmtauthz#authz-aspnet</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH110 false false TH1175d15323e-3729-4694-87b1-181c90af50455861370d-b333-4d4b-9420-95425026e9c96183b7fa-eba5-4bf8-a0af-c3e30d144a10 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 5861370d-b333-4d4b-9420-95425026e9c9 69 5d15323e-3729-4694-87b1-181c90af5045:5861370d-b333-4d4b-9420-95425026e9c9:6183b7fa-eba5-4bf8-a0af-c3e30d144a10 0001-01-01T00:00:00 High Title An adversary may spoof an Azure administrator and gain access to Azure subscription portal UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription An adversary may spoof an Azure administrator and gain access to Azure subscription portal if the administrator's credentials are compromised. InteractionString API Response PossibleMitigations Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> Enable Azure Multi-Factor Authentication for Azure Administrators. Refer: <a href="https://aka.ms/tmtauthn#multi-factor-azure-admin">https://aka.ms/tmtauthn#multi-factor-azure-admin</a> Priority High SDLPhase Design 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 TH117 false false TH1066183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 28 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive information from an API through error messages UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details InteractionString API Request PossibleMitigations Ensure that proper exception handling is done in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtxmgmt#exception">https://aka.ms/tmtxmgmt#exception</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH106 false false TH156183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 29 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by sniffing traffic from Mobile client UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data by sniffing traffic from Mobile client InteractionString API Request PossibleMitigations Implement Certificate Pinning. Refer: <a href="https://aka.ms/tmtcommsec#cert-pinning">https://aka.ms/tmtcommsec#cert-pinning</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH15 false false TH166183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 30 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by sniffing traffic to Web API UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to sensitive data by sniffing traffic to Web API InteractionString API Request PossibleMitigations Force all traffic to Web APIs over HTTPS connection. Refer: <a href="https://aka.ms/tmtcommsec#webapi-https">https://aka.ms/tmtcommsec#webapi-https</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH16 false false TH316183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 31 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain sensitive data from mobile device UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription If application saves sensitive PII or HBI data on phone SD card or local storage, then it ay get stolen. InteractionString API Request PossibleMitigations Encrypt sensitive or PII data written to phones local storage. Refer: <a href="https://aka.ms/tmtdata#pii-phones">https://aka.ms/tmtdata#pii-phones</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH31 false false TH836183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 32 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 Medium Title An adversary can gain access to sensitive data stored in Web API's config files UserThreatCategory Information Disclosure UserThreatShortDescription Information disclosure happens when the information can be read by an unauthorized party UserThreatDescription An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. InteractionString API Request PossibleMitigations Encrypt sections of Web API's configuration files that contain sensitive data. Refer: <a href="https://aka.ms/tmtconfigmgmt#config-sensitive">https://aka.ms/tmtconfigmgmt#config-sensitive</a> Priority Medium SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH83 false false TH1096183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 33 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title Attacker can deny a malicious act on an API leading to repudiation issues UserThreatCategory Repudiation UserThreatShortDescription Repudiation threats involve an adversary denying that something happened UserThreatDescription Attacker can deny a malicious act on an API leading to repudiation issues InteractionString API Request PossibleMitigations Ensure that auditing and logging is enforced on Web API. Refer: <a href="https://aka.ms/tmtauditlog#logging-web-api">https://aka.ms/tmtauditlog#logging-web-api</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH109 false false TH1165d15323e-3729-4694-87b1-181c90af50455861370d-b333-4d4b-9420-95425026e9c96183b7fa-eba5-4bf8-a0af-c3e30d144a10 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 5861370d-b333-4d4b-9420-95425026e9c9 68 5d15323e-3729-4694-87b1-181c90af5045:5861370d-b333-4d4b-9420-95425026e9c9:6183b7fa-eba5-4bf8-a0af-c3e30d144a10 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to resources in an Azure subscription UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to resources in Azure subscription. The adversary can be either a disgruntled internal user, or someone who has stolen the credentials of an Azure subscription. InteractionString API Response PossibleMitigations Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> Priority High SDLPhase Design 5d15323e-3729-4694-87b1-181c90af5045 AutoGenerated 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 TH116 false false TH746183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 35 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary obtains refresh or access tokens from Mobile Client and uses them to obtain access to the Public API v2 API UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription On a public client (e.g. a mobile device), refresh tokens may be stolen and used by an attacker to obtain access to the API. Depending on the client type, there are different ways that tokens may be revealed to an attacker and therefore different ways to protect them, some involving how the software using the tokens requests, stores and refreshes them. InteractionString API Request PossibleMitigations Use ADAL libraries to manage token requests from OAuth2 clients to AAD (or on-premises AD). Refer: <a href="https://aka.ms/tmtauthn#adal-oauth2">https://aka.ms/tmtauthn#adal-oauth2</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH74 false false TH876183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 36 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may spoof Mobile Client and gain access to Web API UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application InteractionString API Request PossibleMitigations Ensure that standard authentication techniques are used to secure Web APIs. Refer: <a href="https://aka.ms/tmtauthn#authn-secure-api">https://aka.ms/tmtauthn#authn-secure-api</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH87 false false TH1086183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 37 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may inject malicious inputs into an API and affect downstream processes UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription An adversary may inject malicious inputs into an API and affect downstream processes InteractionString API Request PossibleMitigations Ensure that model validation is done on Web API methods. Refer: <a href="https://aka.ms/tmtinputval#validation-api">https://aka.ms/tmtinputval#validation-api</a> Implement input validation on all string type parameters accepted by Web API methods. Refer: <a href="https://aka.ms/tmtinputval#string-api">https://aka.ms/tmtinputval#string-api</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH108 false false TH956183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 38 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can reverse engineer and tamper binaries UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription An adversary can use various tools, reverse engineer binaries and abuse them by tampering InteractionString API Request PossibleMitigations Obfuscate generated binaries before distributing to end users. Refer: <a href="https://aka.ms/tmtdata#binaries-end">https://aka.ms/tmtdata#binaries-end</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH95 false false TH976183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 39 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by performing SQL injection through Web API UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. InteractionString API Request PossibleMitigations Ensure that type-safe parameters are used in Web API for data access. Refer: <a href="https://aka.ms/tmtinputval#typesafe-api">https://aka.ms/tmtinputval#typesafe-api</a> Priority High SDLPhase Implementation 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH97 false false TH1176183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 67 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary may spoof an Azure administrator and gain access to Azure subscription portal UserThreatCategory Spoofing UserThreatShortDescription Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address UserThreatDescription An adversary may spoof an Azure administrator and gain access to Azure subscription portal if the administrator's credentials are compromised. InteractionString API Request PossibleMitigations Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> Enable Azure Multi-Factor Authentication for Azure Administrators. Refer: <a href="https://aka.ms/tmtauthn#multi-factor-azure-admin">https://aka.ms/tmtauthn#multi-factor-azure-admin</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH117 false false TH1166183b7fa-eba5-4bf8-a0af-c3e30d144a109840bcdf-c444-437d-8289-d5468f41b0db5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a 9840bcdf-c444-437d-8289-d5468f41b0db 66 6183b7fa-eba5-4bf8-a0af-c3e30d144a10:9840bcdf-c444-437d-8289-d5468f41b0db:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain unauthorized access to resources in an Azure subscription UserThreatCategory Elevation of Privileges UserThreatShortDescription A user subject gains increased capability or privilege by taking advantage of an implementation bug UserThreatDescription An adversary can gain unauthorized access to resources in Azure subscription. The adversary can be either a disgruntled internal user, or someone who has stolen the credentials of an Azure subscription. InteractionString API Request PossibleMitigations Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> Priority High SDLPhase Design 6183b7fa-eba5-4bf8-a0af-c3e30d144a10 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH116 false false TH9791882aca-8249-49a7-96f0-164b68411b48d826de3d-1464-4d1f-8105-aa0449a50aec5d15323e-3729-4694-87b1-181c90af5045 6c2a2f80-b419-425c-a0fd-299f2c49bf6a d826de3d-1464-4d1f-8105-aa0449a50aec 63 91882aca-8249-49a7-96f0-164b68411b48:d826de3d-1464-4d1f-8105-aa0449a50aec:5d15323e-3729-4694-87b1-181c90af5045 0001-01-01T00:00:00 High Title An adversary can gain access to sensitive data by performing SQL injection through Web API UserThreatCategory Tampering UserThreatShortDescription Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes UserThreatDescription SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. InteractionString File Response PossibleMitigations Ensure that type-safe parameters are used in Web API for data access. Refer: <a href="https://aka.ms/tmtinputval#typesafe-api">https://aka.ms/tmtinputval#typesafe-api</a> Priority High SDLPhase Implementation 91882aca-8249-49a7-96f0-164b68411b48 AutoGenerated 5d15323e-3729-4694-87b1-181c90af5045 TH97 false false true 4.3 false false Select Yes No Show Boundary Threats Virtual Dynamic 23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 List A unidirectional representation of the flow of data between elements false GE.DF Before label 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 Generic Data Flow ROOT Line false Any Any false A representation of a data store false GE.DS Lower right of stencil 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b8dUAgCASQDc1OYevh1TCQAAJgFwU5t7+HZMJQAAmATATW3u4dsxlQAAYBIAN7W5h2/HVAIAgEkA3NTmHr4dUwkAACYBcFObe/h2TCUAAJgEwE1t7uHbMZUAAGASADe1uYdvx1QCAIBJANzU5h6+HVMJAAAmAXBTm3v4dkwlAACYBMBNbe7h2zGVAABgEgA3tbmHb8dUAgCASQDc1OYevh1TCQAAJgFwU5t7+HZMJQAAmATATW3u4dsxlQAAYBIAN7W5h2/HVAkBUBsAyPG3X3779nnev9lPEAAPqD90bQaAFALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQIAgDQC4AECAIA0AuABAgCANALgAQkBsO0C4Pfz85dfvn2e92/2EwTAAwQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7phIAAEwC4KY29/DtmEoAADAJgJva3MO3YyoBAMAkAG5qcw/fjqkEAACTALipzT18O6YSAABMAuCmNvfw7ZhKAAAwCYCb2tzDt2MqAQDAJABuanMP346pBAAAkwC4qc09fDumEgAATALgpjb38O2YSgAAMAmAm9rcw7djKgEAwCQAbmpzD9+OqQQAAJMAuKnNPXw7pkoIgO++/+ErADn+56+/fvs879/sJwiAByQEAAD8IwHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8AABAEAaAfAAAQBAGgHwAAEAQBoB8IB//tc/f/3u+x8AIMa//Nt/rf+zUv0hAwAA+P8RAADwgQQAAHwgAQAAH0gAAMAHEgAA8IEEAAB8IAEAAB9IAADABxIAAPCBBAAAfCABAAAfSAAAwAcSAADwgQQAAHwgAQAAH0gAAMAHEgAA8IEEAAB8IAEAAB9IAADABxIAAPCBBAAAfCABAAAfSAAAwAcSAADwgQQAAHwgAQAAH0gAAMAHEgAA8IEEAAB8IAEAAB9IAADABxIAAPCBBAAAfCABAAAfSAAAwAcSAADwgQQAAHwgAQAAH0gAAMAHEgAA8IH+HgDfff/DVwDgM/w9AACAz7I+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgDvtj4CAO+2PgIA77Y+AgBv9vVP/wvm8MX4W+CLKgAAAABJRU5ErkJggg== Generic Data Store ROOT ParallelLines false Any Any false A representation of an external interactor false GE.EI Lower right of stencil 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 Generic External Interactor ROOT Rectangle false Any Any false A representation of a generic process false GE.P Centered on stencil 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 Generic Process ROOT Ellipse false Any Any false A border representation of a trust boundary false GE.TB.B Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Generic Trust Border Boundary ROOT BorderBoundary false Any Any false An arc representation of a trust boundary false GE.TB.L Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABX0lEQVQ4T2NgNPXGh/mhGJscGCNzQArtgVgfxmcy87kAwlA5ZLVwDGOAFQPp/1Dcj8zHZwiY4LUPdgLSMM0YmM8+5JaAY5gRkI3dAJuUUlsgjVUzCM/ZuDPg////vEA2dgNAkqpBKTuBbKwGRNV0iQNpmCZQGMG9AxPk57IJvA6ksRrAYu67EEjLA7E+s7nPReQwAWtGC0CiMMwQkPNZ5H0TtqArIIRBAWueUCgM9gLQEG1QGHDbBr1YuftQDJDvapFYtAhdEwwDY+TO8cvXXUCWw8IAbMjCrXtDgDQHlK8E04CO1YPTVoA0A9nwQIQZAtYMxaBAw2oAFINSLaoBSFgfGEgPgDQ2jWAs5hZVCaSxGwB0Ca+iX9I2IBusGORn3YistTA+q4Xf59KJcy1BarEaAMJAQ8ABixRg6omN/fWgwF26Y38EzLsghfiwNhBbADELlC8KxEpAzAHh/2cAANCSU7ngF2KpAAAAAElFTkSuQmCC Generic Trust Line Boundary ROOT LineBoundary false Any Any false A representation of an annotation false GE.A Centered on stencil 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 Free Text Annotation ROOT Annotation false Any Any Microsoft C+AI Security 11111111-1111-1111-1111-111111111111 Azure Threat Model Template 1.0.0.33 false Represents a request from a source to a target. false SE.DF.TMCore.Request Before label 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 Request GE.DF Line false Any Any false Represents a response from a target to a source false SE.DF.TMCore.Response Before label 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 Response GE.DF Line false Any Any false false Select SQL MongoDB Azure Table Cassandra API Type Virtual Dynamic d456e645-5642-41ad-857f-951af1a3d968 List false Select Allow access from all networks Allow access from selected networks (including Azure) Allow access from selected networks (excluding Azure) Azure Cosmos DB Firewall Settings Virtual Dynamic b646c6da-6894-432a-8925-646ae6d1d0ea List Globally distributed, multi-model database service with support for NoSQL false SE.P.TMCore.AzureDocumentDB Lower right of stencil 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 Azure Cosmos DB GE.DS ParallelLines false Any Any false false Select Allow access from all networks Allow access from selected networks Azure Key Vault Firewall Settings Virtual Dynamic cd610fb8-4fbd-49c0-966f-8b4634b39262 List false Select True False Azure Key Vault Audit Logging Enabled Virtual Dynamic 78bf9482-5267-41c6-84fd-bac2fb6ca0b9 List false Select Managed Identities Service or User Principal and Certificate Service or User Principal and Secret Authenticating to Key Vault Virtual Dynamic ae94fa17-596d-476e-a283-0afc166dcf26 List Tool for securely storing and accessing secrets false SE.DS.TMCore.AzureKeyVault Lower right of stencil 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 Azure Key Vault GE.DS ParallelLines false Any Any false false Select True False Azure Redis Cache TLS Enforced Virtual Dynamic 866e2e37-a089-45bc-9576-20fc95304b82 List false Select Allow access from all networks Allow access from selected networks Azure Redis Cache Firewall Settings Virtual Dynamic 1bda806d-f9b6-4d4e-ab89-bf649f2c2ca5 List Azure Redis Cache false SE.P.TMCore.AzureRedis Lower right of stencil iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAABcRgAAXEYBFJRDQQAAMBlJREFUeF7t3SFg3UYWr/GFhYWFhYWFgQsDQwMfLAwMKCgIKAgoMFgQEBDyQGDAAsOAgIACgwADA4MAA4OAEr98ztNamZzY915rpDMzH/iR2W58r66k+WvmzOhfV1dXkiRpMGGj1JOTj/9cHZ9++sqrvy+vfv/vx+96/Or86t//OVvdwxdn4eeZPH978c13QfmdJekuYaOUyduzm46ODnDqDKNO+offP1z96+mJPvv1r9Nvjs88TLz5cPm/43pxnSHi4y+pT2GjVNP78y+dDh3QvEOad1RRh6Z1/PL8Jjj8n/97/r/f5+jdzeiDgUFqX9goHer88stw+7xznzoTn877M4WFKShMIYGQV54bknIJG6XvmebTp6H4aRj+5z9Pww5CYyP0TQFwCoTT1EN5bklaV9iosX365+r6Bv3i/ZeneArTmE+ObvDSffz07EtAePLm49Wz4y+jB6cXn0/A4LyUtKywUWOYnubp5H97/WWo/sc/HKZXDg+Ozq4evfwytcCqDUcNpGWFjeoL8/LTnDw3VJ/m1bJp1ODp5/OZUSrrDaTDhI1qF0/1r0++dPbcJLlZRjdRqTeMGDCSNe2VUF4bkr4WNqoNPPnwBMT8KZ29VfbS11ilQKHqVF/g8kXpRtiofBjG58mezp4nnehmJ+lurFghFDBS4PSBRhY2ansM5fN0z/pqnmKiG5mk+2PkbNqC2akDjSRs1PrY7pZhSor0rMSXtsUoG0WGjLo5baBehY2qjw5/KtSLbkCS8mAUjgJDliMaCNSLsFHLYw6fIX3mHn3Cl9rGCAEjdtYQqGVho5bBzYFhRNfdS/1iqS21Oo4OqDVhow7Dxc9NgJuB6++lMTk6oFaEjdod+5aznMileZJKPAhQO+DqAmUUNup2zOfz2lML+CTtijDAPh6ODCiLsFHfYnifIj6W6UUXtyTtis2IWAXEfh/lvUZaS9ioL3gtLnP6VO67za6kGlhiyDSir0HW2sLG0TFfRyGfy/UkrYlpRaYXefiY35OkGsLGEXHBceG57a6krfHwQfGgUwSqKWwcCcNuXGg+7UvKiPcUMBVZ3ruk+wobR8Ae31xY0QUnSdlQOMj+AqxCKu9n0iHCxl5Ryc8FxIUUXWCS1AJqlHifSHmPk/YRNvaGxMz6Wyv5JfWEokE3GdKhwsZe8MTPWlvn9zWhyJObZoSnKs6Xu7z5cHl9070Pln1F//Yc75GIPuck+n4aE+eDGwxpX2Fj6+z4+8cLlqaOkNGdecc572hHqaLmnJ9/b1a0zI8J9S7T8XIkrF9sVObKAe0qbGwVS/l4svJFPG0isE2dFE+/dFzUbEydmhulLGseGtjlcgoLdCL8Bi6JbRejWV4vukvY2Bo7/jZMw+8su6SjodOh8/GJJbcpKLByht9tPjUR/c7Kg9ExVw3oe8LGllAJ65NKHqywmJ7gCWV0HN6A+jcfRWC6gSma6PzQ+hhZYySt/M2ksLEFPJUwzBWd8KqP0MVQMTd8NimhAyh/I4nRHc4NzhOuV1+bvR2uWa9TzYWN2fGk4XD/eqZh++mJvvw9pH1RsU5wnKYTLNhdD0GMB6j576ExhY1Z+dRf3zR8z83ZZUVaE1NFLLGcphFcrVAPD1CGeYWNGXGy+tS/LJ66GMafKu3LYy5tjRDKkkZeye0Onssj7PvmwXGFjdnwRBCdvNoPAYoRFKZQrLxXixglYHSK6naLf5dBwaZLBscUNmbBkD9PqNFJq90wpM8TvsP56hEdFyME3CesIzgcDwe+W2A8YWMGPKGa8PfHMCkFe6zZdmhPo6ETY1jbZYj7o+aCMFUeU/UrbNwaT6um+d3R6TMk6lO+dIPRAVauGAb2w5RreSzVp7BxSxSj2fnfzU5f2p1hYD/UCpXHUP0JG7fCEiCX/nwfx4YL07k66XCEAaYJfNC4nSGgf2HjFniStfOP8bRPIZ9b6krLoUaGFTGOCnwfo4zlcVM/wsa1kchN499iMxSK+crjJWlZjKq5yVjM9wj0K2xcEyncDT6+Rsfv3L60Ph5GDALf8kGkT2HjmrzYbrBm3x35pO2xDNk9SG4wQks4Ko+T2hY2roUdvaKTbTTMQdrxS/kwEucbDL/gAaU8Pmpb2LgGCtrc29+9uKUWMA9ukfLJ9VLK8tioXWHjGtitLjrBRsEuhy7nk9rBtMDoowFMBbgaqR9hY20Mq0Un1yh4s5nv45baw2gdS+Oi63oU7g/Qj7CxtpGLa7x4pPaN/oZSRwH6EDbWxIkz6lyanb/Uj5FDgO8L6EPYWBPFNNEJ1Ts7f6k/o4YACrjLY6H2hI01sZQkOqF6xkZHVvpLfRq1MNDNytoXNtZCJzji8L+7aEn9GrWo2SWB7Qsba2Gzm+hE6hkFj+VxkNSXEVcGeG9rX9hYC2/eik6knh29MyVLveNV5tH13zOmPsrjoLaEjbWMWADoZj9S/1jdFF3/PaO2qTwOakvYWAvb3kYnUs8s/pPGMNrW5tRzlcdAbQkbaxnxzX/u+CeNgW1yo3tAz8pjoLaEjbWMGACcApD6N+IUAMrjoLaEjbWMGABcKiP1j6W+0fXfu/I4qC1hYy0jBgDfoS31b8R7G8rjoLaEjbWMepGw/LE8FpL6MOL+JpPyWKgtYWMtowYAqoN9e5bUH1b5/PL8NLzuR1AeD7UlbKxl1ACAx6/cNUvqzcj3NJTHQ20JG2sZ/WLh+5fHRFKbRr+foTwmakvYWIsXjCFA6oH3si/K46K2hI21eNF8wXSAGwRJ7WHO3/vYjfL4qC1hYy1eODcoDOQFIuUxkpQTm3qNXPAXKY+R2hI21mIA+BbHxNEAKS+e+kd8j8kuymOltoSNtRgAYowGuFeAlA87/PnU/33l8VJbwsZaDAC34/WaBgFpe0zP/fqXHf9dyuOmtoSNtRgAdsONhyeP8vhJqotd/di+O7ou9a3y+KktYWMtBoD9MPR49O7CGgGpsld/X149OLLj31d5HNWWsLEWA8Bhfvj9w9Vvrz9enXx0O2FpKWzP/ft/P17X4ETXne5WHlO1JWysxQBwfzyl8LRCZfL82EraDfP77MURXV/aT3ls1ZawsRYDwHIYFeAmZhiQ7sbcPqNoPu0vqzzOakvYWIsBoA7DgPQtO/36ymOutoSNtRgA6iMMPHp5fvX87YU1AxoKc/oso+U+Y6e/jvI3UFvCxloMAOtjbwGeglhW6OiAesP2vOzS55r9bZS/h9oSNtZiANgeRYRUPlMIZSBQaxjWf3Z8cT3KxWhXdI5rPeXvo7aEjbUYAPLhyYkRAuoHTi+cMlAe7H/ByBVP+G7Ok1P5m6ktYWMtBoD8mDuloJBRAp62mFctf0dpaYxGcb5Ru8J9wv3321D+jmpL2FiLAaBNP/7x4foJjFDASMH78+utCcPfWLoLoZIpKM4nhvLt7NtV/rZqS9hYiwGgL4SCabSAoVqe4MrfXONiFQrnBOfHkzdfhvEJk9G5pDaVv7naEjbWYgAYA9MI3Oy56VOwRSfgqEGfqBvh9+WdFXT0/O5W5I+jPB/UlrCxFgOAqNymkwAdBhgOphNxVUI+LLPjt2Funt+KER9+O9fZC+X5oraEjbUYALQL5oSnkEAFOB3PNJIANzi6H6rrp2PJxjlTEHv44ssx96142lV5bqktYWMtBgAtjeHmKSxg6szAU+vU0aG3ZY5T5fyEAs3595+e1ifR8ZPuozwn1ZawsRYDgDKaVjlEqFKfd6q1cG1Efx9WySur8h6vtoSNtRgAJKkf5T1ebQkbazEASFI/ynu82hI21mIAkKR+lPd4tSVsrMUAIEn9KO/xakvYWIsBQJL6Ud7j1ZawsRYDgCT1o7zHqy1hYy0GAEnqR3mPV1vCxloMAJLUj/Ier7aEjbUYACSpH+U9Xm0JG2sxAEhSP8p7vNoSNtZiAJCkfpT3eLUlbKzFACBJ/Sjv8WpL2FiLAUCS+lHe49WWsLEWA4Ak9aO8x6stYWMtBgBJ6kd5j1dbwsZaDACS1I/yHq+2hI21GAAkqR/lPV5tCRtrMQBIUj/Ke7zaEjbWYgCQpH6U93i1JWysxQAgSf0o7/FqS9hYiwFAkvpR3uPVlrCxFgOAJPWjvMerLWFjLQYASepHeY9XW8LGWgwAktSP8h6vtoSNtRgAJKkf5T1ebQkbazEASFI/ynu82hI21mIAkKR+lPd4tSVsrMUAIEn9KO/xakvYWIsBQJL6Ud7j1ZawsRYDgCT1o7zHqy1hYy0GAEnqR3mPV1vCxloMAJIy+Pd/zkK///fjnZ4dX1wdn35aFP9m9LcmTz+LPm/03dZU3uPVlrCxFgOApCX8/Ofp/zrBhy++7rhfn1z+r2M9+fjP51tPfD/q1duzm2Bx9O4mWPz2+iZE/PrXaXhc91X+bbUlbKzFACDpNlMHRWdFp/X87c3Tdnk/0XKmY/zi/eVXYeHB0e2jDOW/o7aEjbUYAKRx8dRJpzI9kU5P6iM+pbdoCgmEMn4/7uflf6O2hI21GACkvk1D80/e3MyV28FLOYWNtRgApD788vz06tHL8+snwTcfLq/enztEL7UmbKzFACC1h6F7rt3pif7T9QN9fI1LakfYWIsBQMqNzp4CMKrH6ezLa1hSP8LGWgwAUi50+MzXU5B3cd3fx9eupP6EjbUYAKRt2eFLmoSNtRgApHX99OzD9ZC+Hb6kUthYiwFAqo8KfZ7yrcyXdJuwsRYDgFQHQ/tU6bvmXtKuwsZaDADSctimlWr90ws7fUn7CxtrMQBI9/PjH1/m9H3Sl3RfYWMtBgDpMDzt86IWN+GRtJSwsRYDgLQ7n/Yl1RQ21mIAkO7GC3V82pdUW9hYiwFA+j7W7NPxl9eNJNUQNtZiAJC+RcfPO9Z94pe0prCxFgOAdMOOX9KWwsZaDADSydUPv3+43rTHjl/SlsLGWgwAGh3L+azql5RB2FiLAUCjmp76y2tCkrYSNtZiANCIHr44c7vehrw9+3R1fPo1tlz+/b8fv8IeDf/+z9nqHr86/+azvPr78pvP7NsfdZewsRYDgEbCRj4u69vWvEOk4HLqMOlEpw6VfRei3683vDBq+s68LXI6Frwq2tAwprCxFgOARkGn4lx/XdOT+tSxT506r0OOfhPth3oVjicjHRxfRkE43hz38rdQm8LGWgwAGgFPWueXdv73xTGcOvinnzsgOiM6peiYaxtlSHjz4fLq/bkBoRVhYy0GAPWO+X6HUffDEyXD0POn+OjYqi2MxPBbzkcPvDZyCRtrMQCoZ5zf5TmvGxRC8oRIh/Do5fkwc+/6GitiCAbUIRAMnFLYTthYiwFAvXKJ39cYBqYyfRq6pyAyOm7ShOkE+gimfBgtKM8pLS9srMUAoB7RyZXn+kjY0XB6snf4XktiGoFpIUKBtQXLCxtrMQCoNwxll+d575jHZc6eIVyL8rQmpg+osyFsOkpwf2FjLQYA9YRq/xH28+c70uFT6e0SO2VDCGUUjnPUIsP9hI21GADUC97k1/PufuxhwLArT1vR95eyIhBw7roPx93CxloMAOoBw5A9Vi4zj89TvtX56gXnMuc0owO+ffNbYWMtBgD1gKVL5bndKm6MFFkRaqLvKvWEES2uXzfq+iJsrMUAoNYx71+e161h9IKnIqYxou8ojYAVK7yrY+S6gbCxFgOAWscweXlet4D5UCqnHd6XvsVqHvatGG2aIGysxQCglrW45I8hftfmS7thKowpsVaD/r7CxloMAGoVN4ZWNiJhSJMqaJ/2pcNx/VAv0PMUQdhYiwFArWLTm/J8zoZliXxOt92VlkP4p+/qcVlh2FiLAUCtylw1TMfvtSXVxx4D1AqU12CrwsZavEmpRcyhl+dyBgxN8sTvEj5pXUwPUF9TXpOtCRtrMQCoRdne9EelMp/JoX5pWywLbjkIhI21GADUokxb/jL86Pp9KRdGCVt8OVHYWIsBQK3h5TflebwFahDcl1/KjWu0pV0Gw8ZaDABqDZvnlOfx2hhidLhfagPXKstwy+s4o7CxFgOAWrPl2n+K/LxmpDaxYiD70sGwsRZvZmrNVsN5BA/n+qW2sUInWxHxXNhYiwFArSnP4TXwsh6H/NvHzZ/isH25g2N/qA3IuKNg2FiLAUAt4UZcnsO1sQe56/rXR7Hn1AHzzgdqPyZsB0uF99zW20IzMlV+JmpF5p+bNz7Og0X0vbUelgxmWlGEsLEWA4BawhxeeQ7XxKtJ7fyXRYij8+PeQ6fIcOzUYfa4tesueBKdjgHnHMfl6WccJ8756DhqGUzrZXqnSNhYiwFALVnz7X88vUWfQXej05qe2unQ6NiyPWm1ZgoJ06jCNJrg1NT9cQyzvG0wbKzFAKCWcNMrz+Ea6Ky8sd6O40MHxJMqS6zonFpab90TdqLk+LMpFeGA8MUUSvS7KcZIH7U+5bFdW9hYiwFALeHmVp7DS+Nm6rDr1xi2n57oeVLyab4NUzAgoHGv97y+HdMBW5/bYWMtBgC1ZI0AwMt8or89EjoKnuwZbvapvj+EAmovqIR3pOtrnPsEp/nxWlPYWIsBQC2pHQAYAoz+bu+46XFs6RjKY6L+UQTHygpGeQwEJ1ePX61Xa1QKG2sxAKgltQMAN8Do7/aGIX2ufeaMM66F1rYIwowAsUwuOn9GwOhXeVzWEDbWYgBQS2oGAIa6o7/ZC4rCOH6jLrXTYbguGB0Ybd8Cwk95LNYQNtZiAFBLagaAHuf+edK309dSpjAwSjHhFvsDhI21GADUkpoBoKcNf5jDzLKuWX0iVLIst+eaAaYEy+9dW9hYiwFALakVAHoY/udGzLytVftaExXzjAow2hSdl61b+3oKG2sxAKgltQIA1e/R32sBHT/HxWI+bY1dH3t7Y+baI2lhYy0GALWkVgDgCSb6e9lRt+ATvzJhRICNh3qZGuC7lN+xprCxFgOAWlIrADB0Hv29rKjoz7BtqfQ9BFM2GorO35astf34JGysxQCgltQKAC1dB4SVLXcqk/bR+hs1Wf5YfqeawsZaDABqyegBgJtp+dml7JhHbzUEGACkJEYOAHb+almrIcAAICUxagDYcm9yaSktFtsaAKQkRgwAPDVZ6a9etPZ+AQOAlMSIAYClfuXnlVrFS3ai8zwrA4CUxIgBgDf2lZ9XatXpRVu7bhoApCRGDABbvJBEqik6z7MyAEhJjBgAtnovuVSDIwC3CxtrMQCoJdYASG2zBuB2YWMtBgC1ZMQAwMtVXAWgXtChRud5VgYAKYkRAwD4fOVnllrDZlbR+Z2ZAUBKYtQAAHcCVMsoZm3xDYEGACmJkQMADAFqUaudPwwAUhKjBwA8O173/eTSfbCPRaudPwwAUhIGgC8eHJ1dnXy0MFB5XXy6uq5dic7flhgApCQMADd4qnr+9uLq03UOiL+XtAWW+rF6JTpvW2MAkJIwAHzr5z9PrQ1QCsenn65ae9nPXQwAUhIGgO+bgoAjAlob7/qno4zOy9YZAKQkDAB3Y2rgt9cfr9hytfye0lKY46cgleAZnYe9MABISRgA9vPwxdn1qAA36/n3lQ7F/D7Xyw+/9zHHfxcDgJSEAeBwj16eX79a2CkC7Yu5fUaVWl7OdygDgJSEAeD+eHIjDBy9u3CaQCFGjAiLXBe9VPMfygAgJWEAWB5zuDzdMbTrVMG43p59up7TZ4+J6DwZlQFASsIAUN8vz0+vn/wYIWAL1/JYqX28XZLA9/Tz9UQHF50H+sIAICVhAFgfUwbcBOksKCg0FLSFaR6W6XHtMPXTe9X+0gwAUhIGgDwYKua4MWxMkZj1BNuiuJPfgZA2PdmPWLS3NAOAlIQBID9umI9fnV//Vjx50im58mA5zNVzTAleT97Y0ddmAJCSMAC0jW1iuaFSdMhvydMqnRnK32REvOCJYzEN2YPjhVHW3WdjAJCSMAD0j2VnU6fHUPbUEfLioyksIPvbEKch+QnL6qbvAubj+Y697Z3fGwOAlAQ3zvIcXoLXQV8YEp9CxF3mIaPsnO9i590/fufyflFT2FiLNz61xAAgaU0GACkJA4CkNRkApCQMAJLWZACQkjAASFqTAUBKwgAgaU0GACkJA4CkNRkApCQMAJLWZACQkjAASFqTAUBKwgAgaU0GACkJA4CkNRkApCQMAJLWZACQkjAASFqTAUBKwgAgaU0GACkJA4CkNRkApCQMAJLWZACQkjAASFqTAUBKwgAgaU0GACkJA4CkNRkApCQMAJLWZACQkjAASFqTAUBKwgAgteXhi7OrH//4EP5vLTAASEkYAKR2cL0+efMx/N9aYQCQkjAASPn98PuHq9cnl1fvzz+F/3tLDABSEgYAKbef/zy97vi5rh4cnYX/TUsMAFISBgApLzr888t/Pl9SV/968f4y/G9aYwCQkjAASDk9fnV+9em677/618Wnq6ufnrVb+DdnAJCSMABI+Tx/e/H5Mrq5nn573Xbh35wBQErCACDlwfI+iv3m11IPhX9zBgApCQOAlMO82G/u179Ow/++VQYAKQkDgLQ9iv2Y559fQzh6dxH+9y0zAEhJGACkbXGtTMV+c1T/91L4N2cAkJIwAEjbKYv95noq/JszAEhJGACk9VHs9+bD18V+c70V/s0ZAKQkDADSuij2O/n4ZXOf7+mt8G/OACAlYQCQ1kPnFxX7zTEtEP1/e2EAkJIwAEjrYE4/Kvabo/Cv5Vf97sIAICVhAJDqYzlfeY1ERrhuDABSEgYAqR6e5o9Pv93cJ/L2rN/CvzkDgJSEAUCq45fndxf7zfVc+DdnAJCSMABIy6OTu6vYb673wr85A4CUhAFAWtaTN/tdUxT+/fB734V/cwYAKQkDgLQMOvFdi/3meO9/9O/1ygAgJWEAkO5vn2K/Of4/0b/XMwOAlIQBQLofiv1OL3Yv9puwJ8AohX9zBgApCQOAdLhHL8/3KvabG6nwb84AICVhAJAOs2+x39xohX9zBgApCQOAtB867hfvv/8mv12MVvg3ZwCQkjAASLuj2I8d+8rzfR+8Bjj6t0dhAJCSMABIu6Fg75BivzkK/ygajP79URgApCQMANLdKPa7601+u3h2PGbh35wBQErCACDd7ulC18jIhX9zBgApCQOAFKOzfvX3/Yr95hhFiP7OaAwAUhIGAOlbPz27f7Hf3OiFf3MGACkJA4D0NYr9GK4vz+lDUTvw859jF/7NGQCkJAwA0g3W5y9R7DfHNRb9rVEZAKQkDADSFzWuBZYNWvj3NQOAlIQBQKNbuthvzsK/bxkApCQMABoZc/Pvz5cr9pt7fWLhX8QAICVhANCoHhydLVrsN2fh3/cZAKQkDAAaUY1ivzmuq+jvygAgpWEA0GjYjrc8X5d08tHCv9sYAKQkDAAaBZ0y8/Llubq0hy/Owr+vLwwAUhIGAI2gZrHfnIV/dzMASEkYANQ7iv0urvv++FxdCjUFbCEcfQbdMABISRgA1DPOw5rFfnO8NTD6DPqaAUBKwgCgXj1/W7fYb87Cv90ZAKQkDADqzY9/rFPsN0enFn0WfcsAICVhAFBPKPbjabw8H2tiG+HosyhmAJCSMACoF3QsaxT7zVn4tz8DgJSEAUA9+O31x9WK/eaevLHwb18GACkJA4Bat2ax3xz7Clj4tz8DgJSEAUCtotjv+LT+5j7fQ0cWfS7dzgAgJWEAUIt+eb5+sd+chX+HMwBISRgA1Bo6kLWL/eb42xb+Hc4AICVhAFBLKPYrz7W1Wfh3PwYAKQkDgFpAsd3Ru22K/eYo/Is+n3ZnAJCSMAAou62L/eZ4sVD0GbU7A4CUhAFAmVHsd3qxXbHf3Iv3Fv4twQAgJWEAUFYPX2xb7Ddn4d9yDABSEgYAZUShXXlObYniw+hzan8GACkJA4AyodiPofbyfNqShX/LMgBISRgAlAXFfm/PchT7zf3612n4eXUYA4CUhAFAGdDJZin2m2PpYfR5dTgDgJSEAUBbe/TyPE2x39z55T8W/lVgAJCSMABoS08rnX9LsPCvDgOAlIQBQFug2I8X6pTnTRYW/tVjAJCSMABobQyrZyz2m7Pwrx4DgJSEAUBrylrsN/f8rYV/NRkApCQMAFrL41fnV5+u+/74nMmAwj+WI0afX8swAEhJGAC0hlrn2dI8b+szAEhJGABUU/ZivznqEqLvoGUZAKQkDACqhWI/qunLcyMrC//WYQCQkjAAqAY6U+bTy/MiKwv/1mMAkJIwAGhpLRT7zRFUmKqIvouWZwCQkjAAaEnPji8+//zxOZEVgSX6LqrDACAlYQDQEniCfn3SRrHf3PGphX9rMwBISRgAdF8//3naVLHfhGkKC//WZwCQkjAA6D4eHJ01Vew3Z+HfNgwAUhIGAB2K37ilYr85C/+2YwCQkjAA6BA8PZe/eUss/NuOAUBKwgCgfbBPfovFfnNvPlyG303rMABISRgAtKtWi/3mmLL45bmFf1syAEhJGAC0C27aF9d9f/x7t4J9CqLvp/UYAKQkDAC6y2+vPzZb7Ddn4V8OBgApCQOAbtN6sd/co5eekxkYAKQkDACKUOxHsVz5u7bKwr88DABSEgYAlSiSO/nY5uY+EaYvKGCMvqvWZwCQkjAAaI6bcw/FfnOc49F31TYMAFISBgBNKPYrf8fWnV5Y+JeNAUBKwgAgHL3rp9hvzsK/fAwAUhIGgLFR7McrccvfrwfsWBh9Z23LACAlYQAYF8V+DJGXv10PLPzLywAgJWEAGNPDF/0V+81xXkffW9szAEhJGADG8+RNnd88C5YwWviXlwFASsIAMA46xV6L/eYY3Yi+v3IwAEhJGADGQLHf27M+i/3mLPzLzwAgJWEA6N+vf/Vb7DdH4d9Pzxz6z84AICVhAOgb6+B7Lvabe/r5XI6OgXIxAEhJGAD61Xux35yFf+0wAEhJGAD6Q0f46u9+3uS3CzqV6FgoHwOAlIQBoC/MgY9Q7DdH2ImOhXIyAEhJGAD6MUqx35yFf+0xAEhJGAD6QLEfneH8NxgBdQ7R8VBeBgApCQNA+2r9htm9P/9k4V+DDABSEgaAdo1Y7DdHRxIdF+VmAJCSMAC0iXlvnoDL4z6K88t/rs/dHrGfQc8jGwYAKQluOOU5vASvg3oo9qMDLI+52sfv+uCo75ENA4CUhAGgLY9fjVnsNwJGdH7+8zT83XtiAJCSMAC0o9Zvpe3xEqNRChoNAFISBoD86BjoIMpjrD5wDUa/e68MAFISBoDcGBIeudivZ0zlMKUT/e49MwBISRgA8qIYzGK/PvG7UswZ/e69MwBISRgAcrLYr1+M6Iy8fbEBQErCAJDP87cXnw9hfFzVNjZuGn33QgOAlIQBII8f/7DYr2ds8BP97qMxAEhJGABysNivX0zl8LKm6HcfkQFASsIAsD2K/S6u+/74WKpdvJ551GK/7zEASEkYALb12+uPFvt16u3Zp+tpneh3H5kBQErCALAdi/369eK9xX7fYwCQkjAArI+nwjcfLPbr1ZM3FvvdxgAgJWEAWBfFficf3dynR9RxWOx3NwOAlIQBYD3c+Cz26xPFfr88t9hvFwYAKQkDwDoo9iuPkfpwfGqx3z4MAFISBoD6jt5Z7NcrfluL/fZjAJCSMADUw1MhT4flsVEfLPY7jAFASsIAUAfzwRb79Yk6Djqx6HfX3QwAUhIGgOU9fGGxX68IdRb73Y8BQErCALAshoXLY6E+WOy3DAOAlIQBYBkUglns1y92bYx+d+3PACAlYQC4P4v9+sV7GljCGf3uOowBQErCAHA/vOmNTWDK76/2WexXhwFASsIAcDi2fbXYr08U+7Ftc/S7634MAFISBoDDWOzXr9cnlxb7VWQAkJIwAOyHYj9e9Vp+X/XBYr/6DABSEgaA3f307MPV2zOL/XpEsZ/37nUYAKQkDAC7sdivX9RxPDiy2G8tBgApCQPA3Sj24wlx/v3Uh/fnnyz2W5kBQErCADA2Ct7K324UfHff5Lc+A4CUhAFgXLyzoPzdRvHs2GK/rRgApCQMAGPiyXfEtxUylfP4lefmlgwAUhIGgDHV+t0zO7/857qYMzoeWo8BQErCADAeit5GK2qk2I9lnNHx0LoMAFISBoDxjFb49+pvi/0yMQBISRgAxsKSxvK36hnnd3QctB0DgJSEAWAcPAWPspkRUxyEneg4aFsGACkJA8A4av3W2RByLPbLywAgJWEAGMMohX+8q8Fiv9wMAFISBoAxvPnQf+GfxX5tMABISRgA+jdC4d+TNxb7tcIAICVhAOgbT8RsgFP+Pr3gTX4W+7XFACAlYQDoG3vel79NLyz2a5MBQErCANCvX573W/h3fPrp6sc/nO9vkQFASsIA0K9eC/+O3l1Y7NcwA4CUhAGgT7zxrvxNemCxX/sMAFISBoD+9Fj4R7Hfwxdn4fdVWwwAUhIGgP48f9tX4d/Jx3+u6xmi76r2GACkJAwAfaEqvqfCP4v9+mMAkJIwAPSFDrP8LVpFsV/0HdU2A4CUhAGgHz0V/v322mK/XhkApCQMAH3opfCPYj86iOg7qg8GACkJA0Afeij8o9iPtxZG30/9MABISRgA2kfhX3n8W8OmRRb7jcEAICVhAGgf78Avj39LGL2Ivpf6ZACQkjAAtI3jXB77VrBc0fNkPAYAKQkDQLsYMm+18I9ivwdHFvuNyAAgJWEAaFerhX/vzz9Z7DcwA4CUhAGgTa0W/r0+sdhvdAYAKQkDQJt4ii6PeXbPji32kwFASsMA0B52ySuPd2YU+7FLYfRdNB4DgJSEAaAtPz1rq/CPz2qxn+YMAFISBoC28IKc8lhnxTQFgSX6HhqXAUBKwgDQjpYK/179fXn9foLoe2hsBgApCQNAO1op/OOcij6/BAOAlIQBoA0tFP5Z7KddGACkJAwA+TGPzs558+ObzenFP9dTFNHnl+YMAFISBoD8Xry//HxI4+OcAS8jsthPuzIASEkYAHJjCV15bDOx2E/7MgBISRgAcstc+Pf087kTfWbpNgYAKQkDQF5P3tT5be6LeoRHL/19dRgDgJSEASCnrIV/FvvpvgwAUhIGgJyYWy+P6dYo9vNNfrovA4CUhAEgn7VvkLtgC2KL/bQEA4CUhAEgFzrZbIV/1CJEn1U6hAFASsIAkEumwj9qEB6+8E1+WpYBQErCAJAHhX9spzs/jluh2O+X5xb7aXkGACkJA0AeWQr/jk8t9lM9BgApCQNADmvfFL+HYr/o80lLMQBISRgAtkfh38nH67H/8FiuhTcORp9PWpIBQErCALA9ttQtj9+aKPbjphx9NmlpBgApCQPAtrYu/GPkwWI/rckAICVhANjW65PtCv/efLi02E+rMwBISRgAtsMa+/K4reX5W4v9tA0DgJSEAWAbWxX+Md1gsZ+2ZACQkjAAbKPWcb8NxX4Pjiz207YMAFISBoD1/fzn6eqFf7xfgL8bfR5pTQYAKQkDwPrWLvzj71nspywMAFISBoB1PXp5/vnwxMesBov9lI0BQErCALAeCv94yU55rGpgiuHxK38D5WMAkJIwAKyn1rEunV/+Y7Gf0jIASEkYANaxVuGfxX7KzgAgJWEAWAe77pXHaGkU+zHNEP19KQsDgJSEAaC+NQr/+B2jvy1lYwCQkjAA1MUTOXPy5fFZisV+ao0BQErCAFDXs+OLz4cjPkb3RbD49S/n+9UWA4CUhAGgHl6zW6vw7+3Zp+tXCUd/V8rMACAlYQCop1bh36u/LfZTuwwAUhIGgDqYly+PyRKefv69or8ntcIAICVhAFhejcI/phJYTRD9PaklXQcAbqjRl5YyMgAsj/33y+NxH2wfbLGfetF1APDlG2qJAWBZdNRLFv5R7Oeb/NSTrgPAi/eX4ZeWMjIALOv49NPnrx8fk31xL7HYT73pOgCwF3f0paWMDADLWbLw78kbpxLVp64DAByyUysMAMtYqvDv4pPFfupb9wHAC1itMAAsY4nCP4r92Dwo+velXnQfAKwDUCsMAPdH4V/5/fdF7YAjhxpB9wGAKmAvZrXAAHB/VOqX338fR+8uLPbTMLoPALCIRy0wANwP37P87vv47bX3CY1liABAQZCpXtkZAA7HKN+hhX8U+3EjjP5dqWdDBAC4KZCyMwAc7tDCv5OPFvtpXMMEAGoBfv7TC115GQAOc2jhn8V+Gt0wAQAUCDkVoKwMAIdhw6/yO9/FEUFpsACAZ8de+MrJALA/CvfK73sbRgIt9pO+GC4A4OELC36UjwFgPz8926/wz2I/6WtDBgBuBL7SU9kYAPbDmv3yu34PxX7WAElfGzIAgCcHbwjKxACwu30K/16fXFrsJwWGDQDwqUCZGAB2t2vhn8V+0vcNHQDASz8MAcrAALCbXQr/KPbrdepDWsrwAQBMB1gToK0ZAO5G4R81PPPvV+J6fnBksZ90FwPA/2eFsLZWKwD0tPSVt3uW32+OqQFH9KTdGAAKvjhIW6kVAF793ccrsXmqL7/bHMV+bvQl7e7xq/u9QGtfYWM23DC9kWhttQIAT8XR32vNbYV/bvAl7Y/rpryWagobM2KFgPOIWlOtAMD0VvT3WsLIXPm9QLEfTzHR/0fS7Rg1K6+pmsLGzEhIjgZoDbUCAFp+4933Cv8s3pXuhwfd8rqqKWzMjqFHRwNUW80A0PJ6eKbkyu/DNUkwiP57SXc79C2a9xE2toKbqDuKqZaaAYCh8hY7zKhK2Rod6f7WHv5H2NgShh0fvXTOUcurGQDQ2goXOvmy8O/p52MU/beSdsfDwPy6WkvY2KLj00/uG6BF1Q4AhNeWnpznhX+MYBi8pWUwmj1dW2sKG1v25sOlhUhaRO0AADbSif52Njyh0Onzmdmu22tMWgbX0nRtrS1s7AHzKS1XWmt7awQAtLA18FT49/bMYj9pKVxLBOrpXrC2sLEnPGG5FakOsVYAIP1nDqtT4R/XksV+0jK4lpi6nu4DWwgbe8MNljkWn1y0j+9tdlMD638zrmjhJsVnc0tuaVlH77aZ958LG3vGUKZ7CGgXa+/LTYV9thDAq34t9pOWtdbo4l3CxhHwVMPcq0Oa+p67XnZTQ7YNdayjkZZ11xs01xQ2joQtTZkesE5AJTri8nxZA0VBno9SXxjdY5Vaeb1vKWwcFT/OwxdOD+gGVe/lebIGQoBP31IfCPTlJloZhI2j4+bLHI1PYWKaqDw/1kLxqjvtSW3joZJNv8rrO4OwUTdIbVRAGwbGRI3IVpt0TBiZcgWL1BaG/DPN90fCRsVYs0lVtDfjsWy1TecctSpW40tt4FrN+tQ/Fzbqbuw0yPCwbyPsH6MAW+7WNccyVgOolBPXZrZCv9uEjdodw8PclFkzbhjoF/N45W+/Fc45alRcwirlwL2fa5KRuvm1ml3YqMNRNU7hli9L6U+2+TyGGAme0WeVVB8hvMWOfxI2ahncoOk0HB3oAxf7VssCb0Ohqq/CltbDvYDi8Bbm+W8TNqoOOg9OGtd3t4sgxy6S5W+bAUWqFgpK9XD999DxT8JG1UdRGaMDFBIaCNrCktAsRYGRaZvr6LNL2h/3aF7es/WS4KWFjVofiZKVBaRLX1aUX/YQAM4p6lGcfpIOw/RtS1X9+wobtT2SJkO6FJgwv2vFdz50rBlrAkoUKPH0YrCU7sZSPoJz9oC/hLBROdHZsCkN87zuTJgDwSz7bl9zTA9wc/P8kW7Q6bPJGw9d5TXTs7BRbZhGCZ4dX1zP+br0cDtM3bQ2P8jQJueNo0saESN4nP9MvZbXxijCRrWNUMCQL4nW5WHroVCohSmBElME03JVw4B6RqfPec7mbb0V9B0ibFR/WCvOSc/wL6HAIeA66EAZkSmPfyu4KU7bXLvlsHpAMGeErsVwXlvYqHFwUXDDp9iQZOyIwTIouMv4/u99cX64d4VaQginTopR0BEK+e4jbJRYQsZUAkWHjhocjifpXjYNoYCQmypB0dEBZULg5j7V85K9GsJG6TY8FU51Bowc0MkREHxKjPFEwnHqbc6RQDCtSnGvAa2F64mXc3FNjVa1v7SwUboPisq4MEnjXKQgIGDkIjOemltaMrgvpjxcpqqlcd0w6sS51cO0WiZho1QbFzIhYT6SgGk0oecRBW5o3Mx6r0Jm6mMKgTyxOW2gu3DNEyA5Z7g39DJ9llXYKGUzjSpgKlqMQsOkhT0RGDbn87f6KtFDUJQ1/X78Tk4djItrlGuXVTNc1y7LW1/YKPVqChFzPI3PA8UuysBxm2m+8nu4AY78pDOFO34HVhxwzBwt6ANTfvyedPSc64wIOYyfR9goSVvjiZBgwBTRtBLF9xnkxNA9vw+/E0GO322kka1WhY2SlNkUDjCNpDDSQic0cqFpDVPnTiHeNGI1HXuH7dsWNkpS6+aFplNImEYSMPKyVebfp+PAtMt0fKjPsHMfR9goSSOhOHHq+MByzalTnEz1CaWog61lehqfm6rmS/PvA4fkVQobJUlSz67+9f8AHXEg066vd7YAAAAASUVORK5CYII= Azure Redis Cache GE.DS ParallelLines false Any Any false false Select File Table Queue Blob Storage Type Virtual Dynamic b3ece90f-c578-4a48-b4d4-89d97614e0d2 List false Select True False HTTPS Enforced Virtual Dynamic 229f2e53-bc3f-476c-8ac9-57da37efd00f List false Select Allow access from all networks Allow access from selective networks Network Security Virtual Dynamic eb012c7c-9201-40d2-989f-2aad423895a5 List false Select True False CORS Enabled Virtual Dynamic c63455d0-ad77-4b08-aa02-9f8026bb056f List Azure Storage false SE.DS.TMCore.AzureStorage Lower right of stencil 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 Azure Storage GE.DS ParallelLines false Any Any false false Select Azure-Redis Generic Cache Technologies Virtual Dynamic 2226af6a-5cfe-4283-a62d-f35d3234336d List false Select All Cache Version Virtual Dynamic 250ddabe-ef50-4fe3-9f7d-74881a8c608e List Cache false SE.DS.TMCore.Cache Lower right of stencil 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 Cache GE.DS ParallelLines false Any Any false false Select Generic OnPrem Database Technologies Virtual Dynamic 6047e74b-a4e1-4e5b-873e-3f7d8658d6b3 List false Select All V12 MsSQL2016 MsSQL2012 MsSQL2014 SQL Version Virtual Dynamic 0a5c9e0f-f68c-4607-9a1a-a02841f1e9de List false Select Yes No SSIS packages Used Virtual Dynamic 649208cc-3b55-40ff-94b9-015c0fb0c9e8 List Database false SE.DS.TMCore.SQL Lower right of stencil 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fAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwAegkAJVLxAeglAJRIxQeglwBQIhUfgF4CQIlUfAB6CQAlUvEB6CUAlEjFB6CXAFAiFR+AXgJAiVR8AHoJACVS8QHoJQCUSMUHoJcAUCIVH4BeAkCJVHwA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 Database GE.DS ParallelLines false Any Any false false Select Yes No Azure SQL DB SSIS Packages Used Virtual Dynamic d8830a8d-37b8-472e-abcc-0d157857f576 List false Select Allow access from all networks Allow access from Azure Allow access from selected networks Azure SQL DB Firewall Settings Virtual Dynamic e68e212d-896e-403e-8a2d-8c6d2b2505df List false Select True False Azure SQL DB TDE Enabled Virtual Dynamic 3a2a095f-94bc-467f-987c-8dac8307cdc6 List false Select True False Azure SQL DB Auditing Enabled Virtual Dynamic 6a3509e5-a3fd-41db-8dea-6fb44b031e4b List false Select True False Vulnerability Assessment Enabled Virtual Dynamic 212cf67e-047a-4617-860f-92282e04b8d8 List Server based TDS service for highly available, globally distributed apps false SE.DS.TMCore.AzureSQLDB Lower right of stencil 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 Azure SQL Database GE.DS ParallelLines false Any Any false false Select Allow access from all networks Allow access from selected networks (including Azure) Allow access from selected networks (excluding Azure) Azure SQL DW DB Firewall Settings Virtual Dynamic b8c8850c-979b-4db0-b536-9aa364b7e6a2 List false Select True False Azure SQL DW DB TDE Enabled Virtual Dynamic d2ce181d-abae-448d-8ef4-9acdbeb839fe List false Select True False Azure SQL DW DB Auditing Enabled Virtual Dynamic cd2a18a2-cebd-4b0f-ae4c-964b190e84f2 List Cloud-based Enterprise Data Warehouse false SE.DS.TMCore.AzureSQLDWDB Lower right of stencil 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 Azure SQL Data Warehouse Database GE.DS ParallelLines false Any Any false false Select Allow access from all networks Allow access from Azure Allow access from selected networks Azure MySQL DB Firewall Settings Virtual Dynamic 9afccb81-bc8b-4527-ad05-f90ec3e396cb List false Select True False Azure MySQL DB TLS Enforced Virtual Dynamic 4d3b2548-8c31-460e-88e5-4c26135003ac List Fully managed, enterprise-ready community MySQL database as a service for app development and deployment false SE.DS.TMCore.AzureMySQLDB Lower right of stencil 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 Azure Database for MySQL GE.DS ParallelLines false Any Any false false Select Allow access from all networks Allow access from Azure Allow access from selected networks Azure Postgres DB Firewall Settings Virtual Dynamic ba682010-cfcf-4916-9f88-524f8d9ce8a8 List false Select True False Azure Postgres DB TLS Enforced Virtual Dynamic 65a8827c-6efd-4243-aa81-0625c4aea98e List Fully managed, enterprise-ready community PostgreSQL database as a service for app development and deployment false SE.DS.TMCore.AzurePostgresDB Lower right of stencil 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/ocTAAQAAeBCf3787FUmGo3HFVhGZvVnpU528qyuSU4jAAgAAsCVZKbx59+8MDwAC8m96pOnz9/0wFXXIOcRAAQAAeDKsnIgLxrKpiPjsQbOl217s0lXdb3xcAKAACAALCi9Anli8a4BOE+25k6Q9rS/HAFAABAAViIMwIdp9NclAAgAAsAGhAF4S6O/HQFAABAANpYbX1YSZFazZYXsXbbXzmRZY/rbEwAEAAFgMr//+9veAUsL2YOsiskkvjzl25N/LgKAACAATCwrCrLJSZ6YrCrgFmSNfhqWbJRlnf7cBAABQAC4IQkEeUthbq7pIcjN9vhvCWvLsFWe8NNrld6r6rxlTgKAACAA3LjDkEFuwuYQsLRMXP3i3y/ezFvRpX/bBAABQADYmUwqTC/Bp1+9DQVWGvAQh678DD99/OT5m3OqOt+4XQKAACAANJHx2EzEevT1izcXvi2LOcjM/CzHy9BSZud7su9BABAABIDGDr0FCQaHeQUmG+5TAl9u+Flumr91JpeapNebACAACACUfvPobTjI/II0GLlZuGHM7dDIH57mM06fv2Emj1Z/Y3pzPQsAAgAPksmHx70HGSs+hASrE64vEzxzbNNLk+Md6a7P30CXPQ8hAAgAAgCL+d3nb0NCZCLZoeFKN/QhLOT8G8/JLjLccjgOmZtxOD7pnj8cN1vkshQBQAAQAJjGYdjh2HFwODhMZPyQawaL44a6cuhyHx035AfV74Yt5Nwdz/VuysJOBACAfgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABACAhgQAAUAAAGhIABAABICN/ObRD6/+8I+f/ufPj5+9+uyr5/f69LXjf/frv/5Qfj6/9H+fvTvm9x3v4+P8u89/LD8PbpkAIAAIAAtLQ/+nfz579ejrF4tecM9e/ufN53/x7xf/a7y6hoNDQ5+G/Mn3L6923HOtHI7xX/71TDDgpgkAAoAAcGW///uPbxrgNDw5tuPxXtuL19d4LvQEkASRvYaC/LbPv3nx6puf1r2p5fg+/eHlq0+ePn/127/dfiAYf9+aqvqwHAFAABAAriBP+Wn0v3++fYN/im+f/fymsUyjmafl6jfdgtT/y29fvkojfPz7tpRje8thYPw9a6rqw3IEAAFAAHigNJwZR87T33hMb8nPrzNLGtHqN84oDetsjf5dcoNNSKl+x6zG37Cmqj4sRwAQAASAM6ULPU/Pt9AAneoWzoEMrTz+7jbDVo7vx0+e30Rvy1j3NVX1YTkCgAAgAJwhE78y2W48hrdu5nPgoy9+2s2NKudOgkD1O2cx1nlNVX1YjgAgAAgAJ8hs7z1fLDOeA5lXka7+sa57kHkCWaVQ/e6tjXVdU1UfliMACAAC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 Azure Database for PostgreSQL GE.DS ParallelLines false Any Any false Browser false SE.EI.TMCore.Browser Lower right of stencil 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 Browser GE.EI Rectangle false Any Any false A representation of Dynamics CRM Mobile Client Applications false SE.EI.TMCore.DynamicsCRMMobileClient Lower right of stencil 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 Dynamics CRM Mobile Client GE.EI Rectangle false Any Any false A representation of Dynamics CRM Outlook Client false SE.EI.TMCore.DynamicsCRMOutlookClient Lower right of stencil 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 Dynamics CRM Outlook Client GE.EI Rectangle false Any Any false false Select Generic CSharp NodeJS IoT Device Technologies Virtual Dynamic 0e4c07fd-732f-44e3-901a-81446a6bcd4c List false Select Yes No IP Capable Virtual Dynamic 5a86ce50-eedb-4cd4-9686-8619c3196d05 List false Select Windows IoT Core Other Device OS Virtual Dynamic c654e773-cfea-4cee-b832-ed22bf619348 List false Select Direct connectivity Agents Azure IoT device SDKs Device Connectivity Virtual Dynamic 2774528e-4318-498b-9228-8341d7112a6a List false Select Azure IoT Hub Custom Device Identity Store Virtual Dynamic 51551b3e-c1e1-4181-b8d3-b74ad078b0be List An IoT client agent which generates and sends telemetry data to the cloud, and receives messages from the cloud false SE.EI.TMCore.IoTdevice Lower right of stencil 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 IoT Device GE.EI Rectangle false Any Any false false Select Generic Xamarin Android iOS Windows Phone Mobile Client Technologies Virtual Dynamic 84259115-f55a-44fc-9423-6c239e36e595 List A representation of a Mobile Client Application (Mobile App) false SE.EI.TMCore.Mobile Lower right of stencil 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JACgTgA0BABkEgBQJwAaAgAyCQCoEwANAQCZBADUCYCGAIBMAgDqBEBDAEAmAQB1AqAhACCTAIA6AdAQAJBJAECdAGgIAMgkAKBOADQEAGQSAFAnABoCADIJAKgTAA0BAJkEANQJgIYAgEwCAOoEQEMAQCYBAHUCoCEAIJMAgDoB0BAAkEkAQJ0AaAgAyCQAoE4ANAQAZBIAUCcAGgIAMgkAqBMADQEAmQQA1AmAhgCATAIA6gRAQwBAJgEAdQKgIQAgkwCAOgHQEACQSQBAnQBoCADIJACgTgA0BABkEgBQJwAaAgAyCQCoEwANAQCZBADUCYCGAIBMAgDqBEBDAEAmAQB1AqAhACCTAIA6AdAQAJBJAECdAGgIAMgkAKBOADQEAGQSAFAnABoCADIJAKgTAA0BAJkEANQJgIYAgEwCAOoEQEMAQCYBAHUCoCEAIJMAgDoB0BAAkEkAQJ0AaAgAyCQAoE4ANAQAZBIAUCcAGgIAMgkAqBMADQEAmQQA1AmAhgCATAIA6gRAQwBAJgEAdQKgIQAgkwCAOgHQEACQSQBAnQBoCADIJACgTgA0BABkEgBQJwAaAgAyCQCoEwANAQCZBADUCYCGAIBMAgDqBEBDAEAmAQB1AqAhACCTAIA6AdAQAJBJAECdAGgIAMgkAKBOADQEAGQSAFAnABoCADIJAKgTAA0BAJkEANQJgIYAgEwCAOoEQEMAQCYBAHUCoCEAIJMAgDoB0BAAkEkAQJ0AaAgAyCQAoE4ANAQAZBIAUCcAGgIAMgkAqBMADQEAmQQA1AmAhgCATAIA6gRAQwBAJgEAdQKgIQAgkwCAOgHQEACQSQBAnQBoCADIJACgTgA0BABkEgBQJwAaAgAyCQCoEwANAQCZBADUCYCGAIBMAgDqBEBDAEAmAQB1AqAhACCTAIA6AdAQAJBJAECdAGgIAMgkAKBOADQEAGQSAFAnABoCADIJAKgTAA0BAJkEANQJgIYAgEwCAOoEQEMAQCYBAHUCoCEAIJMAgDoB0BAAkEkAQJ0AaAgAyCQAoE4ANAQAZBIAUCcAGgIAMgkAqBMADQEAmQQA1AmAhgCATAIA6gRAQwBAJgEAdQKgIQAgkwCAOgHQEACQSQBAnQBoCADIJACgTgA0BABkEgBQJwAaAgAyCQCoEwANAQCZBADUCYCGAIBMAgDqBEBDAEAmAQB1AqAhACCTAIA6AdAQAJBJAECdAGgIAMgkAKBOADQEAGQSAFAnABoCADIJAKgTAA0BAJkEANQJgIYAgEwCAOoEQEMAQCYBAHUCoCEAIJMAgDoB0BAAkEkAQJ0AaAgAyCQAoE4ANAQAZBIAUCcAGgIAMgkAqBMADQEAmQQA1AmAxvn5+S4CgKdze3u7Own0EABQJwCAob6dBHoIAKgTAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGEADAUAIAxhAAwFACAMYQAMBQAgDGOKgAuLi4WL0T8HwJABjjoALg06dPq3cCni8BAGMcVACMPhjg6QkAGOOgAmBxcnKyekfgeRIAMMbBBcDvv/++ekfgeRIAMMbBBcDV1dXqHYHnSQDAGAcXAIvj4+PVOwPPjwCAMQ4yAD5+/Lh6Z+D5EQAwxkEGwP39/ebly5erXwA8LwIAxjjIAFh8/vx59QuA50UAwBgHGwALPwqA508AwBgHHQALEQDPmwCAMQ4+ABZ//vnn6hcD+QQAjBERAIubm5vdndf+ESCXAIAxYgLgm+WA3717tzk6Olr9B4EsAgDGiAuAh5bfFri+vt58+PAHEGi5+ufDua4SAFAXHwAAAgDqBAAQTwBAnQAA4gkAqBMAQDwBAHUCAIgnAKBOAADxBADUCQAgngCAOgEAxBMAUCcAgHgCAOoEABBPAECdAADiCQCoEwBAPAEAdQIAiCcAoE4AAPEEANQJACCeAIA6AQDEEwBQJwCAeAIA6gQAEE8AQJ0AAOIJAKgTAEA8AQB1AgCIJwCgTgAA8QQA1AkAIJ4AgDoBAMQTAFAnAIB4AgDqBAAQTwBAnQAA4gkAqBMAQDwBAHUCAIgnAKBOAADxBADUCQAgngCAOgEAxBMAUCcAgHgCAOoEABBPAECdAADiCQCoEwBAPAEAdQIAiCcAoE4AAPEEANQJACCeAIA6AQDEEwBQJwCAeAIA6gQAEE8AQJ0AAOIJAKgTAEA8AQB1AgCIJwCgTgAA8QQA1AkAIJ4AgDoBAMQTAFAnAIB4AgDqBAAQTwBAnQAA4gkAqBMAQDwBAHUCAIgnAKBOAADxBADUCQAgngCAOgEAxBMAUCcAgHgCAOoEABBPAECdAADiCQCoEwBAPAEAdQIAiCcAoE4AAPEEANQJACCeAIA6AQDEEwBQJwCAeAIA6gQAEE8AQJ0AAOIJAKgTAEA8AQB1AgCIJwCgTgAA8QQA1AkAIJ4AgDoBAMQTAFAnAIB4AgDqBAAQTwBAnQAA4gkAqBMAQDwBAHUCAIgnAKBOAADxBADUCQAgngCAOgEAxBMAUCcAgHgCAOoEABBPAECdAADiCQCoEwBAPAEAdQIAiCcAoE4AAPEEANQJACCeAIA6AQDEEwBQJwCAeAIA6gQAEE8AQJ0AAOIJAKgTAEA8AQB1AgCIJwCgTgAA8QQA1AkAIN7oALi8vNxcX19DlOX7du37+akIAKDb6AAA6gQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEAeQQA0E0AQB4BAHQTAJBHAADdBADkEQBANwEwzunp6ebDhz9inZycrD4ufj4BAHQTAON8O4mnOjs7W31c/HwCAOgmAMYRAOxLAADdBMA4AoB9CQCgmwAYRwCwLwEAdBMA4wgA9iUAgG4CYBwBwL4EANBNAIwjANiXAAC6CYBxBAD7EgBANwEwjgBgXwIA6CYAxhEA7EsAAN0EwDgCgH0JAKCbABhHALAvAQB0EwDjCAD2JQCAbgJgHAHAvgQA0E0AjCMA2JcAALoJgHGOj483yyaa6sWLX1cfFz+fAAC6CQDIIwCAbgIA8ggAoJsAgDwCAOgmACCPAAC6CQDIIwCAbgIA8ggAoJsAgDwCAOgmACCPAAC6CQDIIwCAbgIA8ggAoJsAgDwCAOgmACCPAAC6CQDIIwCAbgIA8ggAoJsAgDwCAOgmACCPAAC6CQDIIwCAbgIA8ggAoJsAgDwCAOj2/v371RMMcLjevn27HV8BAHQ4Pz9fPcEAh+vDhz+24ysAgA6Xl5erJxjgcC1zu8zv6lAD/BtfvnxZPcEAh+vr16/b8RUAQKezs7PVkwxweF69erUd279m94dhBqi4urpaPdEAh2eZ12+z+8MwA1T99tt/V082wOFYXq1r5/a7IQbYx93d3ebk5GT1pAOMd3x8vFnes9PO7XdDDLCv29vbzYsXv66efIBxlrm8ubnZjun3M/vdJwA9llcCljcZrZ2EgKe3vDK3xPnDWV38cANAj/v7+81ygSCvBsA4R0dHm+VKncs8PpzRb1ZvBOi1/K7xxcXFZnmD4HIyWjtJAY9reQVuCfDl1biHM/nQ6o0AwHO2+c//ANXKlJNVydZSAAAAAElFTkSuQmCC Mobile Client GE.EI Rectangle false Any Any false A representation of Active Directory Federation Services (ADFS) Server false SE.P.TMCore.ADFS Centered on stencil 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TQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDMTQGAPmJYmQIAc1MAoI8YVqYAwNwUAOgjhpUpADA3BQD6iGFlCgDM64vr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 ADFS GE.P Ellipse false Any Any false Azure Active Directory false SE.P.TMCore.AzureAD Centered on stencil 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 Azure AD GE.P Ellipse false Any Any false A representation of Azure Data Explorer false SE.P.TMCore.ADE Centered on stencil iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAQ3SURBVGhD3djNa9RAGAbwnvyD9ODRox78BwQVD3oQRD14qAp6EFSoINiDXgQFQURBlFJsVbSVHsQiiq390NrP3e2XLda223a7HfsMeddJ8iaZmUyy2z7w0CWZyeZHdzPZNJ14WhBNzX117Z7L/eLQk0FxpG0os57q/CkuvZsSTWI79UTnhv0w/h+M1AOdKzYIRvJE547lwEge6Lpgo8BIlmhT7OnXI+L+t2lx9u0vdj9XFhsHRrJAm2KBnF3dkOezslEVzd1j7Di1kVg0Doy4RKfBUpLQsVg0CYy4QNt8Z8f+rHln4M/iWkUcbx8OjU/EojpgJA3aBgvQRnXLe3d/sB3fa3W8FhbVBSM2aBss9e6XkvfO/jwemPON08aiJmDEBJ0GSw2inw3P+/YbYVFTMKKDdoGl3vlcFP3zK3JpUrcbY1EbMBKHdomNqhUWtQUjHNoUi6UHV2MsPzprLBrEtn4uyfnF5XX5Wt0XahowoqJtsOo6q3NjwWHLlap3BCFfx6LTghGg02Ipcegg9nZv0YelYBv2qWNrdQFGjj0fZU8yqrjaRqVr8k9oPPed7SkseTPC+Vj6Gxov6wqMHH2hf3N/8+OUNysc3avxg74Zb0Y42MfNcQpGTNDcjYXpOst9UrCNGyvrGozYom1vKlR0LBbNAoyYoHFfjIuYuk0XS235VJDl9vmaFRgxQasNYgHpGF3UAyU1SzBiig5i1XU2cY3VqS14avGlGCy1iOrWurclOrroOCwlDbq5a1xce180B/+YuSde9e2V/TR6xgma+84ulCvebH+W1jfFlZ6J0Pi4Anvw4Yi41T1nBlaxrtAcFqDgf5dSqW6JG9vreHBOVAm7r9UQzGGpQOskiOawVG6NRRKXHqUq1ggch0W7hg57I5ND6DgsNYhOg9UG62BXNwreaL2cbBtjT5Lro++zYmihLP9y+7lyWC1wFljK+U7+ZNM2CpsIzhJLcY2Ow6KRYBfYymb0zzc1rtBJWJQFu8DSMb4Vrnpb4pMWrYNFQ2CXWGrWaF0s6gNngaVmhTbBojVwllgq7r91oos2xaISnAcWx1irRD/HCiYJbYNFJZg7QaorbNIxuEShbbGoBL8ZOGB9ollhKUF0GiwqwUvlQRFENwKWQui0WLR20VLReWGHZ+7I6uRc50RqLFoDI0DjKUYeWCxTNF53ybrQPs0iTOoD68Q1lpoX2gicFZaq+/FOg9YGZ41Fv05e9EYmxxatBc4Dq/tcTI0NOhHcqFiKKToW3OhYigk6ErxTsBRdNAveaViKDjoE3qlYShLaB97pWEocugbeLVhKFFqCdxuWwqElmDtBqg4Wj264udR6YClBtASneQCA4FdWR99+9hj1xFJUtATbPgBQM/e3J4RuBCyF0LWLlukDAC4qupGwFKBrYATo/uJ1Kyzl93Kv/JnXaFjK11JZ/APE8zEB5VpUdAAAAABJRU5ErkJggg== Azure Data Explorer GE.P Ellipse false Any Any false false Select Only Azure Azure and On Prem Linked Service Types Virtual Dynamic afe0080c-37dc-4d53-9edd-d0a163856bdc List Azure Data Factory false SE.P.TMCore.AzureDataFactory Centered on stencil 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 Azure Data Factory GE.P Ellipse false Any Any false A high-scale ingestion-only service for collecting telemetry data from concurrent sources false SE.P.TMCore.AzureEventHub Centered on stencil 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 Azure Event Hub GE.P Ellipse false Any Any false false Select Allow any IP inbound Allow only other Logic Apps Allow specific IP ranges Nw Level Access Control Config for Triggers Virtual Dynamic d488c23c-1667-45a1-994b-f56f2655727b List false Select None Specific IP Nw Level Access Control Config for Contents Virtual Dynamic 0b0ab9bc-a582-4509-a6c4-8d56de65661e List false Select Yes No Trigger_action has sensitive inputs_outputs Virtual Dynamic b1724997-7ae6-4b30-a001-9c5b42d9d1d1 List false Select Yes No HTTP request based Trigger Virtual Dynamic 5afb52dc-dffb-4319-aa22-523f78ee3845 List A representation of Azure Logic Apps false SE.P.TMCore.ALA Centered on stencil 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 Azure Logic Apps GE.P Ellipse false Any Any false A representation of Azure Machine Learning Service false SE.P.TMCore.AzureML Centered on stencil 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 Azure ML GE.P Ellipse false Any Any false Ingests and processes high-volume data stream false SE.P.TMCore.AzureStreamAnalytics Centered on stencil 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 Azure Stream Analytics GE.P Ellipse false Any Any false A representation of Azure Traffic Manager ( DNS-based traffic load balancer ) false SE.P.TMCore.AzureTrafficManager Centered on stencil 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 Azure Traffic Manager GE.P Ellipse false Any Any false Enables execution of background processes in Azure false SE.P.TMCore.AzureWebJob Centered on stencil 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 Azure Web Job GE.P Ellipse false Any Any false A representation of Dynamics CRM server false SE.P.TMCore.DynamicsCRM Centered on stencil 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 Dynamics CRM GE.P Ellipse false Any Any false A representation of Dynamics CRM Portal false SE.P.TMCore.DynamicsCRMPortal Centered on stencil iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAABcRQAAXEUBuS1iLAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMzQDW3oAAGWmSURBVHhe7d13fBRl/gfw7G56T0jZnk3vvUCoIUAo0lEURVAUFT0sWE5U1IueCinbN21TCAmEKiA2VBRPrKd354nnef688zy9s5yn3tlQmN/3mZ0NIQwKmLY7nz/er919sjs7MzuZ72dmnpnx4TgOAAAAJEa0EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2DoQb1j3LVczfBgAAAGeJ1dL+9XWgiDYOBDbiPso6AAAAOEuslvavrwNFtHEgIAAAAAD8PAgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAIGDD/FXd8wAAACPOYNW9/vV1oIg2DoTBmBFsBvf/HgAAgJGA1Six2vVzIAAIEAAAAGCkQgAQIAAAAICUIAAIEAAAAEBKEAAECAAAACAlCAACBAAAAJASBAABAgAAAEgJAoAAAQAAAKQEAUCAAAAAAFKCACBAAAAAAClBABAgAAAAgJQgAAgQAAAAQEoQAAQIAAAAICUIAAIEAAAAkBIEAAECAAAASAkCgAABAAAApAQBQIAAAAAAUoIAIEAAAAAAKUEAECAAAACAlCAACBAAAABAShAABAgAAAAgJQgAAgQAAACQEgQAAQIAAABICQKAAAEAAACkBAFAgAAAAABSggAgQAAAAAApQQAQIAAAAICUIAAIEAAAAEBKEAAECAAAQ+vOmmdiyEJyAVGJvQcABg8CgAABAGBoUdHPumP90zvIY2vvOzDGR1kj94s3MTKx9wPAwEIAECAAAAytMbM3Z5fP3ry7YGrnu6MybZtk8bUbfOONGygAnE/CxD4DAAMHAUCAAAAwtGRqSw7ZJ1OZ6P+llqMAwFEAYDqIUuwzADBwEAAECAAAQ8tHXZtD9vmoajmf+DoKAHWcnCji6zoIAgDAIEMAECAAAAyNNesekpOI5HJHha9uwxM+qg0UAOopADAsCNR2EAQAgEGGACBAAAAYGlT8w8i8ect6zKOybG/5qOrp/4XEGzmfOMbUQRAAAAYZAoAAAQBgaFx23a6YFat33jL7wi3PxeU0fOzD9wFwBwAzsVAAsCAAAAwyBAABAgDA0CirbIsZPbXtluyxzc+FJlo+Zrv/XRAAAIYSAoAAAQBgaCQVNsaRak2O44+BOtN/WAdAFwQAgKGEACBAAAAYGkmlTjVp0RY0fRlssBzhCz/2AAAMOQQAAQIAwNBQ5jZoSVdMpp0L1Js5GTv+jz4AAEMOAUCAAAAwNPz1dVrS5a+r4xSqWgoAta7/GQQAgCGFACBAAAAYXCuve1xG4sbM6JoYaDDulbHiz5/3T/8v6AMAMOQQAAQIAACDi4q/Lyk7Z8nO66LSbYf4/xO+6BP0AQAYcggAAgQAgME14Zwe34mze8blT+q8JSTR8qKr6FPB57EQgAAAMJQQAAQIAACDKyLR5huZZBsXmmC9RaE0vshv+SutxEYQAACGGgKAAAEAYHClj3UGppW3XJVY0vxkiMHyD77gKy0CBACAoYYAIEAAABhchVPbQ/Imt1kzxzu5qDQ7FXwTcR8CQB8AgKGGACBAAAAYPNWmP8gKJ28MV2VZ7bHpFi5Q5y78DAsCCAAAQw0BQIAAADB4rrjloCJrXHt0gLLG4RtXw8n4nv8IAADDCQFAgAAAMHjSx7UHxGU3KBVKYxO777+r8FuERwQAgOGAACBAAAAYPDPP3akbP6tncrDBtv34sX8EAIDhhAAgQAAAGDwXXrZv2XnL9j6eUNDyN584+v/gDwFQ4We9/3kIAABDDQFAgAAAMHhmnrfjnqqF27mEgmYq8LVEKPju4o8AADDkEAAECAAAg0dbYL9Hk2/nQpKowLsLft+tfwQAgCGHACBAAAAYPH662nt8tbWcXM3+N9wBoB8EAIAhhQAgQAAAGDwylfEeQv8XIoXfDQEAYEghAAgQAAAG3vLVj+hIZXRmY5eP0t3pT6T4MwgAAEMKAUCAAAAw8Kj4zyZbUsrbD/so2fF/FgJEij+DAAAwpBAABAgAAANv/OyeCyfM7nlend/8Dx92CEAMAgDAsEAAECAAAAy8mNSm5eQPQXrLxz6qWir49L+BAAAwIiAACBAAAAZeSIL1KvKhn8b0P9f/BRV6BACAEQEBQIAAADDw/HWmNeR7uVoo8ggAACMGAoAAAQBg4JRP2xpHysKT7Ra52vQDOwVQ9mNnADAIAABDCgFAgAAAMHDKp/XkktUxGY0P+SiNR1lxl7ECz276I1b8GQkFgObWZ+SM2N8AhgoCgAABAGDglM/oOYfs0+Q3v+sTX3eMv/Z/LAIAQ4XfjyiJmgSIvQdgKCAACBAAAAbG3bUvyoqndl9WNKXrE01+ExX2Wir+9D8Rw4o8kXgfgNU3PxR2zY17R6+45sEpY2Z2ZsVk2rTqrNo4Xfb6MCIT+wzAYEAAECAAAPx8VPwVJFhX0LwqNrPhk5BEq1DY6X+C3QUwnh4lHgDSytq15JeJxa1b43Iae2IyrQ4KALdS8a8iIWKfARgMCAACBACAn2/FdY/7r7j2scjQROu1CmX9p67j/ibCijwFAP5/Qyj4/Xl5ALiz/iUZCc6b3FUam9G4NSrV8VlEqv1IZJr549j0mufi0tffHJ+xPkrsswCDAQFAgAAA8POlFjYFpBQ2xfqpTTfI4oyf8sf+iYwCgFzJzgToV/T78v4AEECyZl384KXRGdZn/XR13/lp647662u/CTLUfBKUuMFK4sQ+CzAYEAAECAAAP58qx6om04P0ZjsV9C/4ok7Fn+0JUMSbXGcCiBV/xssDwFW3PhlOzpt18a7mUVnWt32UG2iaaziZqobz1dVyfvraTqIS+yzAYEAAECAAAPx8ukJ7JdkdmWb5m1xl/N519z9W+E2cIk44FVCs+DNeHgDOW7knntRNW7ztvfgcx/9krD9ErJGT03T7ao2cn87YSRAAYMggAAgQAAB+vphM2wLydmiyhXNd/Y8VfDMfAOTCoQApdgI8d9V+2dg5W3SjZ3V35U3eyEWl2VzzIpbmS7yZ89OYOX+duZMgAMCQQQAQIAAA/Hy+GssCX63lbbma3faX/R+wAk9FnYq7jPUHYIVemgFAEZ/XbAhLsXcHJ1o5hYZNL80fNl9UJs5Pa0IAgCGHACBAAAA4e5ev3h9NxqWVd9xLAeADV+EXCruShQF6zZ8JQCQWAK68/ilfUj5v6UM3RWc0vOCaN+71BAUACku+OgoBenMnQQCAIYMAIEAAADh7VPzziGn8OVtfpS3c/50YANjzPq+lFwCCyK8vuuKxj5PL2r7pP29kaiMCAAwLBAABAgDA2auct7W8cu7WPdnjOj4OTDAfOV7gzoCXBoCJc7YFj53ZYymZupmLyWo8abr5AKClAKAzdRIEABgyCAACBACAs5dY2FRBXozLtB/11RiP9S9yp8VLAwBNW7BcbbQQ0emWqeqFswAQAGBoIQAIEAAAzlz1/S8EEG1xZfeymPTGP4QYrNypCt1P8sIAMPei3XlV5+64NDKt4fHevhD9ppvdKhl7AGA4IAAIEAAAztyd9xyKWFf93Njxs7bfEWxoeNtHaaFln4pc/+P8P8ZdDL0wAMxe8uDy6eftfFKT1/qej9JK00khoN/0ow8ADBcEAAECAMCZK57YMap4UsdMTV5zrZ/e9q6PmgJAvwL3k7w4AKSPda5JK3f+LTLV8QV/OiQCAIwgCAACBACAMxeuN6qC1XXL/NXGTrnW/A8fDRW5vkX9THhRAMga3+lLAqPSLfdFpJq5AL1Q/MUOAbgDAA4BwBBDABAgAACcGZPz977qvKacYL3Z4a8xvSVXmfqd/neGvCsAaMnEsGTrRn8q7gp2VUR24R9+3XDidLs6ASIAwNBDABAgAACcvsvX7JddcdMTweq85vGBestTfhp2SVuhyLkv+HOmvCgAJJY4RycWO28PNlie5udHfC2pcc2fftONswBguCAACBAAAE5f2hingkSHJ1mnK1TGg/yNbeKoyDH9Ctxp86IAEJVmvoi8Eqg3/tNHyeYJzR8VWy+cPN24DgAMFwQAAQIAwOlTZVmDSVlEkulGubLu973FP44t+1TY+nV0+1HuYugFAYCmR0YUwQnGG4MNxu/9tGx+0HxhxV9s2gk6AcJwQQAQIAAAnD5NtlVF7o1NN7/ur637nBU5ORVxRuIBwI+EKTTGteR7tnvfNT9OPU8QAGC4IAAIEAAATl9MqsVAeiKT2K1s6zgZBQAFLfO9AeBseEEAkMcZDWQ2TU8H+eGE6TuF44cAKADgboAwhBAABAgAAKfPT2kxkB5fpZmTU+FmfQBkyhqea/kXL3Y/yjsCwHxyUBZf/4HoNIo4fiVABAAYWggAAgQAgJ9WNG6TL8k05Dkv9ldbn/GJM1HBpiLG93LfQMu9NAPA+Sv2xZAx6tzG9QpV/X/4TpEiPf7FHD8NEAEAhhYCgAABAOCnUfEPIaszS9ufDku0fcgXMFrWXQGAFX965Jd/8WL3ozw7AJQSY+7E9pf8dHXfnsl8QACA4YIAIEAAAPhphnxneEJeywOa7OYPg/TWr/iizZ/n3odIkTstHhwAiiq7phZWdu3XFTT/y09T/71rHSAyjSJwCACGCwKAAAEA4KeFGKwRxEHF/weF0nzMJ5YVbBLPmFzO9mqAHhwAQhKt88ibgTrLD77x5mNyfj6ITKOI45cCRgCAoYUAIEAAAPhxeRVN+pTRDVXBBuuDvhoLJ2PXtmd9APhi58aKP+lzmttPchdDDwwAJZVt0aQ8Lste7a8z/UNB08OKv4xNy2nOB5wGCMMFAUCAAADw4ygAVGaMa/w1bem+0ntnO3fB70ukyP0ozw4A6eR2fYHjCT9t/eeuSyEzwjSJTW8/CAAwXBAABAgAAD9OX9x4pbaw4VBwooXv/DfgPCgAnHfpwzLir8lvGBebZdsclmz+q6/K+K2M7wdB//+neQYAc7wPAC4FDEMLAUCAAAAgLmtiu4zI43IaHojNdnBBBrbb/2f09j8VDwoAMxZv86s6tycuJst+vp/O+Du5ul64HgKbDpovZxQAcDMgGB4IAAIEAABxVPxDiSo00WIN0ve9te3Jxexn8aAAUFbVoiM3JJc1PBxkMH8sV5k4udLsOvZ/huHo+JUAEQBgaCEACBAAAMSllrcYyNQArXGLTywVN3bDnzM4xv2T3MXQQwLA9Xc+7Td6emtpfkXT/uQyBxecaKWteCr+DN8Pok8AEJveftAHAIYLAoAAAQBAnKHYcS7ZF5ZoeccnjooWv5VLzqbDnxgPCgCs+BPt2NndC5W59ufCUyz81ruPSsAHAGF6EABghEMAECAAAIhT59l/qc61cxQAqEiz4/+C/sXu5/KAADDzwp0hVefvqMip2HhnoMHyR9HpOEPecAggWGsOIRoSKfZ3GJkQAAQIAADiQhJsvyScn4YVfVq23YWa3wsgXtTOigcEAFVeYxy5fVSm4wUq1p+KTscZ8oZOgFT4c8lqMoXIxd4DIw8CgAABAOBEwYnrY0ihQmmyyOMsrh7u7GY/7JE/FHBiIfvZRnAAyJvQLCORmjx7WViSZUtQgvm/CrXxe9HpOEOeHADSR7ePIiXRKfbVgRrTXj+V8dc+sXUVRC/2fhhZEAAECAAAJ6LiP4W0+apr/+ATS8UqrpaKNAsAP/OmP6cysgOAHylLKnZcG6w3PSdXsev91x89aRrOgicfAqDiP4Fsic9q+KOfuv5fsvi6v1Dxf55cKvZ+GFkQAAQIAAAudz5wyJeERKYZLwvQ1/xJoar9/HgAEG75q2JoORfp1HbG3MVwhAaAmcv3yTLGtYVqch2XxGXYtvtrje/2ngYpNj1nyBM7AU6e3T6KjM8qd96ry29+PyrVziloOtheIhktK2Sd2OdgZEEAECAAALhQ8Q8lBlVe422+mvpP5Urj9677/tNyzQcACgJ88R+YAugBAcAvpbwjLiTBWh+oNX+iUNV/4zrXX9IBoJRsyRnX/PfwZOu3vhr63YRrIfjSb+gbZ0EA8AAIAAIEAACXBRfvSl6wdNfFhuKWzbRV9xXf25/v+U/LNb/7nx754i+NADB5bk9p+fTu1bSV+4wvFWs5P67COItNzxnypAAwZtbmCDKhcHLrXdljHW/r8qxcAI2765RQE3+DKEW8mUEA8AAIAAIEAACXyrmbK8n25NKWvyg0pu9dp/sxQtHjC5/b8UJ21tzDHKkBYE7P2gkzN/9TldvwlUxVx1/sR+Y+DVJses6QhwWANNKQNaH1najUuq/8NOs5Nk9650XvsmJEAPAACAACBACQuo4tf/Qj0aXTNi1NKWl5dVS6/XMqTgPS0e20jNAAkFbWdl9KaSsXkWKl8WT9IGg8B/A6CHwAGOGdAGct2RVGpo+bveXetDFtrypzGr8K0Jt+EJseAQKAB0AAECAAgNRR8Q8jGbmTOm7x1xjfl8XXHRuUa/6fyggNAH5qy31E2PXPAoAwrv3H/yx5wmmAVPx1pH38nJ6v47Iav1eoLMd8VA3ETtMgOi8QADwAAoAAAQCkbubibfEzz982VVvQWK9Q13/kOubPluWTVu6DY4QFgPDUhrHkDj+t5SA7tu0ax8EIACN3D8BFNz3lT2bOu+KRmsKpXX9IKGrhQgxW4RCIhdDvhQDgsRAABAgAIHWGogaDobBhRUSKZbNcXffv48syrdD7HLMecO6iMYICQOX8zQoq/reGpTi4AD3b9c/Gk+YFCwDsbAh2ISTWJjY9Z2ik9gGYffF22fnXPh65ZM2TjfOufIQzlLVxsjj6nRh2uh/NC+YUywcCgAdAABAgAIDUBelMJaTVX2N8U66s/6a3MIuv4AeO+ztGSACg4p9HfqHOb9rnr7dwCv4SyO7xpP/t3j0Awvj/TCM4AEyZceG2BwpndL+SMmEjF55mF6Zd+L349Zzw/OTpQgDwAAgAAgQAkKryqk4FCaPiv5C28F5nW3lyfguv30p+sA1zAJi64HEZUYyb1XU+eVFX2PQRf6aD2LgOoN4AMEIOASxZ9WgQiZl+wbb7Ji/a8pmmsOnEMHh6EAA8AAKAAAEApIqKv45cmVTUsi1Qa/tIFs/uay9s9fJ9ABjRlfzAGv4AEETidflt18ZnNf01JNH6FX/BI7FxHUCuToAjKgDMIC1FU7t/q85r+Zbmw4/19j8VBAAPgAAgQAAAqSqc1JZPticXt3warLcfkbHOXSqhc9dQdgQc5gCQNnqzMq1sc0WIodFC3/8lGx/XOe6DO/0j5SyA2RduCydJs5fufmD2xXuOpozZ6Po9+MMd4uP+IxAAPAACgAABAKQqNsNSTB6JTDF966upOeq60Q9b6bMAILpyHxzDHABCE+wTQw32Tn+N+U1ZfP0RFnxkYuM5wEbKdQCo+E8lHYVTOl/XFbZyYSnsFD/xcT4NCAAeAAFAgAAAUjN14TY/otcXNF4QpK9/0VddQ1ujD9Cyu8FV+Ptu+Z3cyWvguL9jmAJAZsXGEJIckeK4MUBjed+Xxonv3c4CAD8P+ozrIBjuToBjZmyMIFnjZm+qHj97038MJS007cJpj+67PoqM909AAPAACAACBACQGir+8WR1QUXnvvAk24fsEreuZVcoxtIJAFnkV/F5Tc/4aSz/5ecDH4Bo65yd7sfGS2y8B8gICABjSVNaefPv4nLsR0KS2G5/4TdxLw8i4/0TEAA8AAKAAAEApKJ96zsyErTwkofyiqd2tqeObv0oJNH2jWurz935j/CBgK38z6oAnL5hCgAXrdobQNT5UzrP15e2HIjOdHyqUJu+7512VgSFc95Fx3uADFcAKJu2OZqU5U3ouDOz3PkXZY7jG4Wm/phox0eR8f4JCAAeAAFAgAAAUkHFX0F0S69+fLYqt+HRYIPpO4XGdNRV8PtjK/+zKgCnz11khj4AxJH5JVWd5ohU6zu+GiM77n/s+NYvGyfhUWy8B8gwBoAysimttP0vUYmOrwM05qP0W1MA6DP9biLj/RMQADwAAoAAAQCk4rq1zwat/uXB2QuX76uPzbS/IXMf5+2/0h9qQxgApszfpaDCn1E0dWN1YmnzbwJ0pv/0nvEwVGc9CIa6E2Dh5I1RZELWuPa7U8va3lFmN3H+KrPrKn8i43eWEAA8AAKAAAEApOL8Sx+OvmDFIzWzzn/wn+q8xq97O3qJr8iHzhAFACr+chIUn9MwPjzFsi/IYPpSrjZ+z2/tD0cAGOLTAKn455CNKWXOf4Qn277xo/AhU9MyoBrQ5QABwAMgAAgQAEAqiqd0xZRM7XLmTtzIRbLLu4qvwIfeEAWAlDHOCDJLmdtQE5hg/rOCtsDFx4f+j4cgDAzVhYDUeU2hZKImr+lOXX7TG3GZDs6fvvfE9Zb4OJ4FBAAPgAAgQAAAqfDV1sX46+udfrp6Ts6O1w7gve1/liEKAIllLYmkQ53f+HlQguUIf6ofX+jd3ONDz4ciALj7AAx+ANATe2ym48MgnflrBf/9tNXPpjGWzfsBXQYQADwAAoAAAQCkQJl9/9hR6fff7KutOeRaTo3HL/t7ckeuoeEuGoMcABYt3R5IJlbM6bpdW+h4NTzVwvlpzMK5/mwc2PzoLWAu7gAgNt4DZLA7AUYn1wWSqqjk+l+HJ1t+G5Jo/c5XbTzq6uAoTB8fgsjALQcIAB4AAUCAAADejoq/nNwVm3n/vwL1tV/xxV9l4omswIdOb7Gl54MbACLJA1ULut9X5lr/56PawN/wyHVve2EcTkVsvAfIEASAaNIYkVj3vb+mnp3tccyFTZd7GmlcBjYEIgB4AAQAAQIAeLMFl+8Onbl0hzY6xWIJ1Ru/8lXXfT8Uu7fPyCAGgMyihrD0ksaMtNHNTkNx45chSZYj7DvZ1v+P7gEYAjIqmAPdB6Bp05vR9vY30tNHOy8I1tXVBunqXgvQ1XFydo5/39McBw8CgAdAABAgAIA3m37hDs2UxdvGhSc0bVbE2oUr3NUQd89vRnRFPnQGKQCsuP5xeWpBQ4IqwzrdT1u/x3WhG9rqj2ffRY/8vDj+fys6boNoIM8CuGHdozLi+2vTK5n3Gl9ZlFrW8mCQloavZt9F08am001kXAYQAoAHQAAQIACAN9MWNk/XFjTbg/W238mpyMr4IsACAFtWRVfgQ28QAsB1dx4MuXrtAaUyq2FlaIJlp6/a+M4JRZCd+85f7Y/Nh+GZFwN5HQAq/nGkuKxq45qkkuaHIlKs79A0c3L2Pfw003diDwAIEAAECADgjXIn9shJQHS64/qoNPvfAnTmz3uLH3/+P1tZs13g5OTjuEPDXTQGIQBMPXebvnLhtopRaY4tQVozp2D9HfiCz254xLB5wV4L48CIjeMgGog+AHOW7pQTv/Mu31VIrk4sadwXSFv+rlMcTVT83QGAvRaIjMsAQgDwAAgAAgQA8EZU/KNJVmiSvdZfZ/6SCsJ3vYWuF62wvTQAxKRYzhuVYtkbpLe8o1BbXB0e+e9z/5+650EfYuM4iAYoAISRJENp61UxWU1PhSRa/6ZQu/oXuH5f9/S5X7u+exAhAHgABAABAgB4I0Nhe5ahsO2SoATrgycUuZFoAANA6YyNUSQtMslsDNKwY+Cs8NOw+VMeRb57GPUGAB0FAN2ZBYC4XLuCBKeWOzMyx7cuCk91tMtUlq9HwHQiAHgABAABAgB4o1Ep9kXRyfanA3Xmvx9fNkVX2MNvYANAFelQ5jS8rqBiKKdh89e6H5rj32fk+FkAZxUAIkhOaLL5qsAE0z5fjen/ZPHm74/fz3/YIAB4AAQAAQIAeJOFy58II4nxmQ13h+rNX/lrqLj2LpuiK+zhNwABoGhGeyjRZ05wrs0Y7/woJtPxHSuGrPjL42ja+b4PIt89jI5fCvj0A0BoutOPRIWlNhSFp9pXBuhNm+Wqus96r2vA5qXIdw0hBAAPgAAgQAAAb0LFP5usTipt2+unrvvu+B3/GNEV9vAbmACQQa5QFzTsCE2y/C9AZzqq6O0AJxD77mF0lgEgkpQHJzXeGJhgf9JPY3lfHl9/xBUAaLjDv6cDAcADIAAIEADAmxRN2VZJtqhyW96SK2t/OH6+v+jKemT4GQGgsHKDH4k0jHbM1pU2doanWt+gQvg9K/xymm4Zm/YRGwBO/xDAVdc/FkKKp527Y8mo7Oa7/HTW3X4a88fs7IbjPf3ZNA77dCIAeAAEAAECAHiTYIP93JBE+xsBOstXcvdlX/nl8qQV9cjx8wJAJMmLzjTe6m8wv6VQm/7nE1N/jN8SZr3hadplccKNb8S+exidSSdAKv4GYp6/dNebyrzmv8pU9Z/I4jYc8Ylj13Sg4fEBgJ4P/2+NAOABEAAECADgDTJKTaPImLAk46/lKuPHMqVwqVtWHNgV8Ni13088XWv4uYvGWQSAW+/7jT+JLZnWOi42o+6mQH3dHpm6/gt+WOwOd+xRuAoev3XMvkdsHIbR8QsBnToAzDp/ZwApm37u9uunLtj6csnUTi4ynd3KmaYpbgNhRd81na7rO7DfWvz7hggCgAdAABAgAIA3oOJfSGrjMowvKjT1X7HCL+MLISt8bietrIfXzwsAEaS0tGrTLcH6+lfl8bVf0P/eD73DdJ/v3vua9P/+YXaaAWAUuX/SnJ6/6fIb/xukN3IKNVvP/MihHZHvGkIIAB4AAUCAAACebPqc7b4kUp9nnxuXbn40LNH4oVxdf4Qv/DG0QmanwIkViZHkLAJAxvjWRHKjMrfhET+N6d+u3eD9hjvCufoAiN8LIKW0QUaKU8uars4c13YgeXTrkbBk69ERdKz/VBAAPAACgAABADwZFf8QkqrMbLrGX2N+S64ysq3gY3zhZwEglq2U3cvmCSvqkeMsAoC/rq6M7KcC+q1MZT7quskPG1a/YY9grrMA6ikAGCkAGPsHAD9yi6HI8VZ4qvU/Cq3pGP22x1yHdQh/VT/x4Q4zBAAPgAAgQAAAT5ZUZEtMKrTeEJNufshPY/yUP/bPrnzHigQr/iP0HPgTnEEACDPUjCLnBelqG3zV9e9SURSmlwUAD5jWPtgeAD+tifPXmTpJbwBIKW0cn1zSsC4+y/5EZIrtPwE667fsaoau0/yEDo0jN+ggAHgABAABAgB4MnWOsVyVbXw2Oo22JLW1fFGRq6xULFhBpWLB94AXVs6uY7Qjh7tonGYAUOc6ZFT8s0ITanYH62s5BRsGf7Ef1wV/XD3i2bHxETitIuRqtvvfTAHA3Bmgt/QGgOSSxnUUALjIFDv9jvRbxtk4WayVpo/WL/yNjEb0dCIAeAAEAAECAHiiWeduDSAJySXNSyNSLK8GJpiooLgKgkxFxZTfJU7LY98txZNX1sPLPV6nEQCo+IeRxTEZVmdQQv3bvpo6Puzwu8LZ5/npdP8PjsBpFeHqBGg+qRNgQlHjOn1hAxeWTEWf/x3dezjYNLLCL0zjyJxOBAAPgAAgQAAATzR+xqYIUplU7LwnQGf7s+uGN7QCdhcGT/ITAUCT1x6kymnKUGbbN8dk2LgAPRVDseF4mFOdBaAuaFynzm/gQpItop8b4RAAPAACgAABADxRZLJVT6pDDJaXFSrzZ3wRFV8hj3w/EgCo+CvIYmVOa2d4sv3PgQlm4V73IsPxMKe6EiALACoWAJIQAGBwIAAIEADAk4RprTIS7q8yjlco6x+T00q39xrwfXf3e5JTBICscZuj0sZ0ZahyWltjM1uOBultxzx2L4eIU90LAAEABhsCgAABADwJFf9gMj1Ibbpfoax5Q8Y6hcWyzn5s2RNdIY98pw4A52aUd++ISW/6c6DOesxXbT0mV7Ki6CWHAH5kDwB/CAABAAYJAoAAAQA8xTU3Pxk0emq3ITzBenuAyvicPH7DRz5x6ykA1BwPACd2yBrZ3EXjFAEgc+ymOzPKO7noNAe9p46Tx5uJ0DFObHge5lR9ADR9+wCIfG6EQwDwAAgAAgQA8ARU/OUkec6FD86JSrFvlcfXfyKLr/3GdaofK6JCMRVfKY9MPxEA0sudd6aNcXJR6VbaWmZ39qP3sR7x7FFseB4GAQCGCwKAAAEAPMHkeZt9K+ZunlE6dWNtRLL1970XveGP/dOKlz82fsKKeOT7iQCQWt58Z8qYJgoAFj4A9L4XAWAkQwDwAAgAAgQA8ASaHEuAPt92hybH+m5wgunL4wGAEQopI75SHpl+IgCklDvvTB7TwkWm2Wjr3/1e4VFseB4GAQCGCwKAAAEARrpr73g+c+WNB89PKml5KDyJCoaWFUJa1vpyF0hPdMoA0EoBwEkBgN3+VuRzHg6dAGG4IAAIEABgpKMAsPrqW597O7ei+zOF2uTaGvb0ot8XAsBJAQCnAcJgQgAQIADASLX2gYNBJHbGBXtrJi98kNMVtbmKJX/cny1rJ618PRMCAAIADCkEAAECAIxUVPzjSbE2v6U5SGvlfFXC9eARALwCLgUMwwUBQIAAACNV9oTmsdnjm6vDk23P+sRS8Y8Ttv7FVrzHO2F5Dve4n00AEBueh0EnQBguCAACBAAYqUal1q8gbwfpTZ/7xFMx6L0jnAjxlfHI5h53BAAEABhSCAACBAAYaTQZ5iiSFWow3xukN3/qpzF+6yp87mWsXzH0dOgDgD4AMKQQAAQIADDSqNLMKcpU04WBWstmmdJ6hF0BT6bcQMtWDel3P3hvINkAgJsBwfBAABAgAMBIsfr2/TLiF6ozzwxQGrf6qoxv0VbiUf7Kd72X+2XL2AkrXM+HPQAIADCkEAAECAAwUuRWOEPyKpy6YK35ZnmM8WP+Nr9qWqZYgYxlBZLdBY+ee8mlcHuLBvoAoA8ADCkEAAECAIwUyhxLkTLbsiE00fS8PL7+G9cWP61U2WPvHgB6jQAgPjwPgwAAwwUBQIAAAMNt9JxNASROnWdbMSrd/BcKAPzxYb4w9vb8F479i690PZO7mCMAIADAkEIAECAAwHCj4p9ALkssa9kclmj9xE9DxZCtTN1b+15W+Hq5pwkBAAEAhhQCgAABAIZL/qR2GfHLmNhaRlrVBU1vBWitX8vYVn//wu/NziYAeIFTBQBcCRAGGwKAAAEAhgsVf18SHZtpnxOWbDkQlGD+Uq4y/cAXRPGVq3eSagCgLeZTBQCcBQCDCQFAgAAAw0Vf5IgiU6PSLPf7aerfkbHlhx3v54/5SwgCAAIADCkEAAECAAwXVZ4tjTRFZ1j+5q+t+1oWX8vJYus4GevxL75y9U44BIBDADCkEAAECAAw1C68fHcwKZ84u+sWVa7ttdAkKgT8+f4UAKj4y/hDAOTEzlXex100ziYAiA3Pw6ATIAwXBAABAgAMNSr+amKecd7WD9R5jq/lqlq++Ltu8ctWoqb+K1Xv5C7mCAAIADCkEAAECAAwVCbM3SwjEWNmdpWUVm3alT2hnYtIoZW8u/j3vdBP/4LnzdAHAH0AYEghAAgQAGCoUPFXkOSM8W0LQ1Js+311ZuGCP2y5EVag7k6AUuoIKNkAgJsBwfBAABAgAMBQic1yBMRmNSyJTnd0++usf/FRUtFjxe+Ego89AO75hT0ACAAwOBAABAgAMFRCEq2hxBaUYOX81FZOFs92/wuX+uUDADsubCboA8CgDwAtHyKfG+EQADwAAoAAAQCGQtH0rul5Uzrro9MbXvXXmDk52/XPLy99CxtbgUqk+DPu6UYAEAkAjRQArKKfG+EQADwAAoAAAQAGU+aEFjnxp+J/f87kTi42s5GT01a/TFlDy8oDhN3kp19xkxqpHgI4nQAg8rkRDgHAAyAACBAAYDBR8deQ8crcpo2jMhq5YL2VAgAVPL7jn5voilQ60AdAPACgDwAMEgQAAQIADAZ7x5v+JCK/smOSvrjhl0EJ1gM+cbTlH2d0XemPDwHC8X/xFal0/EgASBrtzQFA/CyA3j4ACAAwSBAABAgAMBio+CeRBaNn9dQG6EwvKVT1H/Bb/XF1/OV+fVgI4IPACStPaZLsHgAEABgeCAACBAAYDL9Ye3D8NbceNOVWbHqJivwx18V+aqjI0SMLALH0yJ73vQaAVOEQAAIADCkEAAECAAyG1NLWxSklrb8dlWb/VEZb+exGP64AQCvJWFbw6Hn8BmGZOWklKi1SDQA/dRogAgAMEgQAAQIADKTyqp4YUhaf0bAhRGf53F9touLPAgAtG3wIYMWOHfun50ohAJx4GpV0uIvG2fQBEBueh8F1AGC4IAAIEABgIFHxn0y2Gwpb3/FXW47IlFTsTyhetJLsvdIfW168o5idFfc8OZs9AGLD8zAIADBcEAAECAAwEKoW9YSTnIKKzrUZ5R3vK7ObODlbIaKT309DH4ATAgC7FDAOAcBgQgAQIADAQKDin07WZk1o2x+eZv3CT8dWhhuouLEL/py0koS+EABOCgC4FwAMJgQAAQIADIT0MS1l6WOcm5W5jr/66Yzf8suC+za/4itKcDubPgBeAAEAhgsCgAABAAZCgM5YQQ75aYxH5ErjMRnr6BdLK3BW2MRXlOAm1T0Ap+gD0HsIgPUBEPncCIcA4AEQAAQIAHA2Lr/ugJyE5kzsTAlNsi721RptcnX9e+ziLjK2ImRX+WNFjT3yN/mBk7D5wop/bwAwUwAwoxMgOgHCIEMAECAAwNmg4u9HNBQAFlAAeMZPa/qOVuhHffi7/DG0MnQTX1ECHwBYUBLCEgUAGQIAAgAMOgQAAQIAnI20sa3RaeWtK7QFjT3BBtPfFep+BQpOi4zdGZG/JwIVjzhjBz2iEyD6AMAgQwAQIADAmSqsdPomFDemawoatsdl27lAHStk7Mp+7PcXXSnCKciUtCXM7wmg1/H1HdQmoQAgfi8ABAAYbAgAAgQAOBNU/IPJ4sxxza0xmbY/ByeYOV8V/e7suv787y+6UoRTYP0l+BAQb+ZkZ3IIwAtgDwAMFwQAAQIAnK6LV+8Nrlq8JTm/wrkxvbyJi2DHaGNppee+sQ9bAZ54PHT4nbByZq/d+rb3/7tY26na+7b11+/vwjixY9+MXG08ptAYf/DVmI/4axzfBmgaWki8e36nlDuFAGBz7yE4aVieDH0AYLggAAgQAOB0UQCYsejyXfWpY9p+F5li5/w1rPMaK/70uzMjsTC5CyaPvXZzt7mX275/d7eLfUbkvfx9Dtztfd9z4mu2xeunNXOBBisXRvMvMt1xZFRm43+0hW3v5VRs+13htJ13FVXtGuWe364A0MJFplpd85n/HmGY/afTAyEAwHBBABAgAMBPGT2p05+Ezb54+7rpF2z7m7bA+aVPHK2c+fv5C8f+R2phYuN0QnGmNv7UO3e7G3vdV99DGmw4fT7DHoXhydlxbE09F6A3cSFJVi4wwfw/marunzJV/QdytekDX63xA/8E4we0pf+uXGV6KzDB+lZ4quOt2OymtzQFztcNJW2/KZy29cGFK59qWLbm0EUk3D3fU8c470wZ7eSiUtm8ZndS7PPdYtPqYRAAYLggAAgQAOCnUPHXkQmG4uY2VV7jf4MTrUdOKKJ9C6z4SnH4sGWSvxyxu6Cz12y8GfZ34ToFbNx729l72PvZ5/p81v0Z/nP1HDvzISjBxI3KtHPJZU6ubPomLndi++vBCSZrsMGyISazcUNqeceG4umb79cVOa+iADCfAsB8CgDzKQDMpwAwhwLAjMKpWydTABhDxT+R+Lrne8aYtjvTR7dx0ewQQN9xRwAYyRAAPAACgAABAE7l+rue8SXBaWXOioS8xnVBCeZnewu9p2DFnN993icA8O20sman4CnNvN7CzmOfraWt+1rOT1PLRaZbOXV+0/dhybZ36e8vMjJl/Yu+mroXw5LNL2oLm14snrbpxXlLd744Y/FWe2ymbY4qu6GysKKr8oIrHq9ct+HVSUQrNo/76tz6RgwpvP2ep8tmLuouyxjd2mQoaOEiUigAuK+v4A4AXuBUAQBXAoTBhgAgQACAU6HiH0FS4vMa1vrpjIfl6vpPPK4AsfFlhyriqLAz/NY74zr/XhFv5nzjLZwsjnW0s1KhNQnFto4L1Ju4qGQbN+6crdyyXzzx5bTzdtfS5ysYCgAVFAAqKABU6AqbKoqndlZQAKigAJAfm2FTUgCIpQAQSwEglop/DAkSm8d9UfGvIjsoAByYde7mA2llze+GJpo5Py0bX/d0EC8JATgLAIYLAoAAAQBOJWdiZ3bOhM6V4am2PT7sVD/2+3pkABCKP7viHhV/OW15+ulMVODNRwI15n+HJTj+GZfZ/s+odOefFDrLAR+18TEKAY+FGCyPKTMaH5u3dN9jd294dQeZxeaLs+t1+S/vfdb/sjWPR827ZE985sRN8ZrCFqW20KEpqerOmbxw15TSGVurUsd1VsXmNFbRd1Up1KYqChxVND6ktspH6VYntNVXzV+2e8MN6w58umTlHq5sagenyXVw8r7znYq/DAFgpEMA8AAIAAIEADiV0ATbBeS3/hrzJ70rOI8sPrRcsvGmrX85vfbX1nNRaWYuNtv6eWSa7ZWksvb951z88P55lz5aYxjdMZkCQAEFgIKQBEsBBYCC+RfvK6Din0tGUfGXEf9f3nMwhgJAydxL9kylADCVAsAMCgDzKQBUUwA4RAHgNQoAr1EAeI0CwGsUAF6jAPAajQepfY2Kv6BOaKt/LSzJ8jdtfuOR+OwGLizZxgVQSOnbx6L3okHuPgseDocAYLggAAgQAKA/VXqthswM0dc3+qlNX8nZbvG+neV+zIkdos4SG457eWLDZY/sGD57Tn/vHQ/3c+I+fs+PQx1tXTL1XFiqlVMXNh6LyrD/NVBveS4y1XowPsv2hDrf9qCmwOaMybLfmTO56/qVtzxz/dr1L88i4Rdf82w8Ka2Yv7M8odBRnjGubUbOpE2LtQXOxREpjvPDU+wXjcpquDKxzHm3vsRZF5nuqAtJsppDk8yNusLmZ7IndH6TPLqdU+W3cPRezldDwYPmoeuSvzR+fEEXuAs8v4VPj+7TKvn3Ce8VuC4aRG08ajuBu/0siP4Ggw+dAGG4IAAIEACgP1b8yZPhhtoP5aq6o67ibyXsUaSA9CW+UjxDrHj37bm/gTxARZB15qNx4Hfn03fRIyuq8jgqru7d/FQo5fRZBevAR8NhF9KZcsH2H8rnbNmZMa5j1awLdiy/bPXD86cv7imiAKCnAKDMreyKpQAQy4o/kVPxH0dqJs3baaUAYKUA8AQFgHcpALwbnuz4q7/O/FcqXn9XaE0fko/o+UcUNj6mefWJn8b4ZaDefDRAZ+b8NCYaDzaONK7ugNKf+xoK7uP7wmsZK/h9ij8fAHrb2HwQ0e//8GQ0fDEnzf+hgQAAwwUBQIAAAG6FlZ1askiX39AYmWT8MFBX971MWXPMtZXNTkU7jQAwIKjQ9Z56R9/NFz0KBHwhZQGAHt1byTRuMnpPWKKNSyxu4/RFzreDEuo3+aprGv3UtY2ZE9oa51z6YEPVkh2XjJ21pfC6W5/MtjS8kn/rr55buHTVI1ekj2m8Ili34Qp5bM0VPrF1V9A0XqHOb63PmdR9yFDsfCUyxfxKfLb9Q01+IxedZuWC9FTUqXCJjjdfoGkrva/ewk6f6Q0u7L1suthzmg5+q59h0+TCF/o+/1MnYvOG8POEYc+pvfczbPhi3O+h5yMA+gDAcEEAECAAgBsV/0rybEKx87/+OtsPMmX9MZlyPf2mbMXGAoBZeD7Y3MsSK5JUBFy3yqXnVPz5rWZ6Tyz9nR0mULsetQUt3OyLHuKWXPn4tknztmdTAIj0V9dFZk1si5y7YnckBYDg8plb/K5f+5TvzXf9JvWGO57dtPSqRz7LGNP4GQWAzygAfEbD/IwCwGdylfFLhbruW1913XcuNT/4qtdzvsoHON/4B6g4s70T/cZZKLJiAYAPAbE03vxlk+k1w9pZMeYv8LNBwIo5m25hmPyhEDFsmlkIYOPBsM+40fewoMbPK4bNN4Y+N+ICAG4GBMMDAUCAAAAXXbVPRS6YMHdLi6Gk5YOoNAdt5bKVL21d81ua9Luywiu+whsE7iJGj6xwsS1nKqABWgsXmmj7PjzJ9mFYkvUVf71po0xTt0GmqluvK3KuX3DJw+svu+HAyitveaZw7rI9+aOnbxqbMab9fEOB8+bwRNvNVHxv9okz3RyR2vhA0dTu1wunbOJiMyycv6qGL8p8keb3ctCjsBteTtg8kFGhlcVv4IkWUb7AsqLu0lts+S18htqEvQDscMXxPQPu97Liz4o6PXcP86TCL+j3/3bieLB5xvQNAQz7G723r76fGwbYAwDDBQFAgAAAVPzLyFOTF2w9GsXfeY4Vwr5FhIWAB6iNbW2KrvQGGOswZyVsHKjgxtL3xtZy4YlWTpPb/HVSSetLWePbjTkTO8rmX7pDUTClQ0Zbk7LLrj8gW7X2Gf3Vtx2cRQHgSgoAd1EAOEAB4CgFgKMUAI5SADjqozQT+h5WBN273mPZdLI9HMKeBmF3vWtLvf/4ncIJAYDNMxpvfqueYf8bbL7SsBlW+Fng4PdssO+lv/Nb9kyfYYoV/94CzobH5hFDf3MTgkZvGODfw/7W57P859nwhs9p9QEQ+dyIhj4AHgEBQIAAIF2FFd2hZHTepE235Ezc+MeEkhYuIMG15X9iYaHftXfrVPjbiR2ffgRbKdLnGP7YNRsetfMrTDZc92tWGN3t9ZycnsdkOLiscW1cSpnzD6qcxi5VTlMtBYCbk0tbl4+euWXBJTceWLz0+icvShvfuiIyzXJdeLL17uh0hzU+p2lrbFbjI1FpjmcjUxx/i0i2cwFaKrL8MXb2Pazosu9lrwm/JU7t/N9oHNyFk293vYfvgU9tchpPf72VC02xc6OyHJwqv5EzlDq5tLFt3+dO6vg6saTlzQCdabtCbez21Ri7/bTGbn+dsTss2do9KrOhOza7sVuZ29StLWjpTihydhuKW9lz56hMR42mqMmSMamjM3G0szE6w7E+odTpyK7o7O4rY3zHRm1BkyU+p8GYUNLcnljm7E4ocXZrC1u6lXnNNPym7uiMRvo+e3eA3kzfbe721Zq7FRoT0xNksOyl73reUNr6aeLoVk5T0MTF0HREpFi4wAQTJ+cPqbDfoM+84H8XN/pb30Di/p1PeM+Jv2Xve/nXx9/H9gAotBQCdMZOcjwA5DvWqfMcrj0AvcuRx0AA8AAIAAIEAGlavOph39KqLfrcCZuuTyhq3UeF/599V84ubIXNflP26F6pC8RXfiLo8+x4Nd+rn+0+p2HxxZYNl20ls9esI5+ZHXY4RgXrGBXN7xTq2i9Txzi/mL909xeLVzzUsfwX++csuuShTGW6NSxYbwqbu+KRtFV3PHfbeVc/vjtlrPPpiDTLm1RkvwrUmV1b4PwWcN+tefo+/jvped8AwL82UTEycb5qE3/uvZ/G9B21f0HvIbWk7gsaJjF+4auyfBGW7PgiPq/5i5Ty1i8KpnZ+MWFuzxczl+z89IKVe/4++6IdPfE5jReFJNnnR6Y3zY/JapmvynPOL5rWPX/6BTvnz1u+a/6SVQ/NX3XrgQU3/erZBWvveWr+3eufmWJq/m1OU/frY5s3v35BU9cfqhztv89s2fRGZWv34Yt5mw9f3N7zp4s2bn1rfse2P+WbW1/JqK5/ZuodDxyYf8u9z8y/+ran5l/4i8fnz1nx8PzKJQ/Nz6vaPF9d1DA/Lq9hflSmY35IsmN+aGrDeboS55WFVd21left/H3Foh1fFE/r+iJ9bOsX2nzHF5Gp5i98NbVfyFQ03UozTbfpOKXpS4Xa9B39Nj8otPXH5FrXFjwr4mzenXiNAvb70iM/f0lvABTmNx+02Dw/VQCwUwCwUwCg3+mEZckjIAB4AAQAAQKA9FDxDyBlFefuuEad79wVkmh/V6Ex/+94wWfY875o5daX+MrvZHyRX88XA1bkXcWYhscKsPB97I56fmozZyhq/2HOsoe+m3nh7mdjsuy3pI1xrpp/8e5Vi1fsqzr/8oczUoubLqMAYA/Sm+yBCZYObXHrIX2J853wVPP7Abr6f/trTUcUKvYdDG09sg6E9J2uUwTpu/gQIEwLX4QsnExr5wKTGrmY7GYuc2InN2XxTq58ztZngxJta+i9qygAkLpVFACIcRUFgFUUAFZRAFiVMrZ1FQWAVRPm9ayiAHAFBYAVsy/aOTMuuzGdAkAyBYBkCgDJyjxnMgWAZAoAyRQAki+6Zl/K9Xc+nX7bfb/JuO3eAynrrYdmmJpfrt1gf35rdd3BR+7e8MyuOx84uPFXNc/uuKfuN49V1z372L31z+6rb/yts6HzzVuaNr1ZTAEgigKAjgJAMgWAZAoAyRQAkikAJFMASKYAkEwBIJkCQDIFgGQKAMmhKQ2pFAByCqZ1jacAcBEFgFUUAFZl0HRQAFhFAWAVBYBVFABWUQCg6Tb1ikxz/LL8nO5HJi3c8kFmZfvXqpImLjTVxvnpaB6yec7mJz9vaR6zYs8f/mC/u3D4gw8ELIwJvw+FMPY5Wu44X62501dr6Q0A2oKmdZp8Gn4yuzQzfc6zIAB4AAQAAQKAtFy/7vnApav3a2YsffDq0eds2R2Z1vie6xg0K4hsBc621Bn2fADwheB+wnah2+mRFYHaoxQEvpUpTf/105v+E5hg+jhYZ/nH6Kqe9+41vvqerf2NhitveSI/eXSzTh5fr/PTmPWhiba0uDRrW2yqhQvkr5DHhs2+g+2eryEsaNAKmBX8eCunUNmO+mpsP/iqrd/6qcxfBWktX4UkWP7rpzF+RJ95jwrQez5q+3vyhJb3wrPa30sa2/le1YUPvrfmnufeW1f30oZ7LL+NvXbdwcD5l+4OyqlsDxqVYw1etGJ79KXX7lHNWfagZvz87bqcio26hJIWXUxWky4kyaZTqOt1svhanSyOqaNxN+poOl3Yc6VLUIJFbyhuSkkqaU4JSbImXH7jY5fe8cDBP9967wFu9W2Pcr+49VFu9dr95HF6TdY+xl1722Pf3lx98I9r73uxY+k1++fI42n49D19se+mwCWoc30ffa8s3uSiNOkUGpMu0GDRRWU267RF7ToKPbqxc7bq5i5/SDf1/F2xkZnW4IBEU1BEZkNQ2aztQUuvPhB0yz0v+m9wvKi+33rolpvuPbB/5qU738iZ3vlebF7je4EG23sylZWWIROpe0+urvvAV1/3ka9mw398VQ98JYvf8BUFr6/l8ebvFUrrUXmc5Ygs3vKNXGX5yk9r+yo4seGr0KQGZ2hyo9K9jGoLnOsIBQDWH6XPsuQZEAA8AAKAAAFAOqj4y0j+stVPLU8b17ElOsPxV3+t5b+urXJWPGkF5t5tK75yO3P8FiAFAH4rkLYW2XH0+LpvfZXGv4QZ7M9kTujsKZmxpUaT23Ll6KotV/1i7YF7LrnuEfuU87ZsShnT3K1Q1ndT8dosU1q20hb+W0E6I+dLW1quDoKE/x4WAtgeBiO/JyEkwcZFpTq+VeU0fk7eUec0vjBmZs8Lc5fve7pgSte99P4lFACWUABYQgFgCQWAJRQAlkxb8uASCgBLfmV+ZXp9y+sF1915sIgCQFn25PYydZFj/Lkrtq++ZPUeGwWAtvHztnVTAOjWl7R0UwDopgDQTQGAxrW2mwIAqSP13TRfXeKJstdmucrYw7DnMVmOZ3IrOj7Pr+zgsie2CtpIO2Ft7VzWhPYfMsdv/Hfy6I4/R6baH6N52E1F/wTsu6n4C+pc30lo/rko+X4A3RQAuqMymrspAHTT/O+mANA9Z9ne7imLd66NzLBOCEwyl1EAKBs9a3sZBYDSX977Yrp94+tJFALG3PzrAzMpAJxLAWAJBYAlFACWUABYQgGA1C1RFTT9Im/qpntTRrds0eY5XghLNL2oUNb+jsLXJ+FJ9m9DEuz/CNbZ3ghLsL6izWt+oWzGthcmzHvwrvHzdo1yL6fa/JZ1mvwWLjSJnXrab3ka+RAAPAACgAABQDrOWfqQYu7yh8+dunj3xtjsxj/xPdbdxd+9W57fqh5IrOPfes5XU/9tgN7yub/G9J6fqv7VQLVpizqref3cpQ+tXbnmwKVUoMerch2VicUNV+ZMat1cXNXxpa6okaMA4Cr0/PF8Gl9avqhwcv5aM3+Z3Yg0Ow3X/E9fjeldP435z8F6y+GoFNvrmtyGl9LLmw9kjXN2501sr1l541M1lvY3q+uaX59xw10HddPO26PLq9hsKJq2KSOvcmN28pi2nPjc5tygRFsuBZKp8y7dd/nkRTtWF0zpXKMubFoTmW5dO2l+16NzL972r0kLtn5dOK2bSylv41T5TVxkegMXZGB7HdheDvofiKul+eoKJMfDVZ/QwuYxf0iCTZsbfe4krN39mePY78afnsh/Ty0nZ9/Ffx/bC+J28ufZMXp2ESOaX1x4aiMXn+vkksrauPwpXdykhTu4khmbXwhOMt/upzetCUqyrUks61gzeua26yfO37l88qKdczLGbiyPSLbnaguaclPGOLPTxnakZ0/cmFw0pSNhwaW7dXfVv6KpaXw9w9hyuGzO0r0riio31Siz7HX+6hp7VKr18bjMhpdGpTY8GJ1sd8alWk1FFRtrlv3iyZrVtx9aQsLdyykV/3WavGYKAOzqkzQNngUBwAMgAAgQAKQjNM3uOyq7cW1UZsO7VARYxzYqGmx3OhUIvlCz891FV2pnT+gBHp1hfz+tvO05fVHz/dGptnPjMxqmppY4ZxVObrudinRrfJZjV2ii5clAnenlkETL36LSbUeCDWyPAX2+t5C5AoC/3sjFZNu50bO2cFMX73w/d9LGTm1+022G4paVuoLm82MzHOdo8hqqMsqbK2nY5RQACi6/8akCo/OPZXfXv7j0+rueubVq8Z5bKQDcQwGgI2/yxt0UAPZRAHg4ONFGrE9FpNpeCkuy/jY4wfKqn9b8Km05/z4q3fqhKs/xTWy24/uodAcXmmzjAhMsHP2dCqurI5xrXN3jy+YtO7TCTmukAty34AsBgAWG44Wb/n96P9+fq4gfJ/Ye+jzr58D3dWD/i33a6ZH/vamNXZ6YjXOg3kJF1sJFptm4uJxGFqY+kauNf5CpjK/KVaZX/fXmV4MTLa+GGKwvkIMhCdb9FAAepgDwMAWAXRQAOigAGCkArFt46Z6b1tW+fN19tt9Nq29+I3bu0r1JFAAKKAAUUgAooQBQQQGgigLABAoAZRQAiigAFCxf/WQBFf8E4uteTlkAUOdhDwAMHgQAAQKANNCWop62TCdTMe45fkoWcQcAvqe+KwD09uY+3rHJxd3O9xcQnvMFhj2y18IwafjBtPWmzGviItIdf/dRmQ5Sgd07c8mO9vIZm2/Q5zrPic9qnBGTYV0al2FuGZVmfjU82fo5K0iurWY2zHrOX2fmwlKoyOrNf6XXBxmZqv5goMF4UFvccHDOst0HV974ZNfCS/Ysr1q0teSaW5/Qr177TOrFq54YM27G1gnRBsuEIHXNBHncr8kDE6LTrdOnnb+jZvbFu5/Kr9z8lKGk/aXU8rZ/JY1u/U5T0HI0KqOBC0igLXkNK+a0LJ8wbQxbvllQYo+ucez9e+97+nIV/1MGAHrkAwDff8H9fYzw+d7XQlt/fb+r9300nL4BQPifPHH4wvt4wne7fzuee7jsuetzbJnw05g5CgJcbJaDnT74jbaw5V8Jxc43k8qanx09s/vxRSsf2Tftgj13+modk2SxdRPkMfdPiEs1Tcgb3zLh4qv3Tli3/tliEi22fPalLWhZp2WHAChgnbQMjnwIAB4AAUCAACANFAAuoQDwPK3wPzhxhU8rLUbYUj+xrR++mLl71xO2a5u/gh61M3zhoYKiruUSy5zc3KV7uOmLH+xS6CzjFl22e+nq256oLpzUtS3K0PhyoM78kq+m7rUAbd17AVrj574ayxG5ig2T9RKnYVHRicl0cDkVG7nU8tYWel3OUAAopwBQri1qKJ+zfHc5BYCCBcv3aCgARFAACFp29ROzll71xG4KAIdGJVoOUQA4RAGAPHBIoax9kbbq/y86veGTkCTbJ4EG638oqHxLjgYkWI75UeCQsy15flr7zQueu62vvn//KWKfFyP2/r7DEdP3vT+X2DApwNB8YeHIX2+moGT+gebZt4EJlv8GGsz/Dk2xfTwqq/FfoSkNf5ap7M9TADhEAeAQBYBD+RNaDlEAOETFfxMZK7Z89pVY1LzOUNTMhVP4O2kZHPkQADwAAoAAAcA7lVV1y4l/VJojNSzJPkuhqt3kut583y0+WmGdsJL/Kawws2PxAn43Njv+bOYUSvO3AVrTxwG6+jdkmtrHMie0P3HRlY++dM6S3eZAnWVe8bSum6ecu71dn+98I0Rn4/zU7Hh0HRdsoK38ZNu3IcmOjwMT7IflSuvjFAD20LD3qPMa95TP3rxn8qJtK1ff+pRqwrwtquQxTn3FvO1jJ8zeNic+s3GOPL5+DgUXF3qeOW5j7YQ52z7OHNvOhSVQsWJ7NeIeIBsITTu/i5xNt7DCFp1OOHts74mVXzZksRu4iEQjZyhq4CYv6OEWXrrnb0VTu35Fv8Ec+k3mRKda5uRN7p6TX9k1J6mscU50mmWOLLaWHq1d8dkOLjiRAqHod4xoCAAeAAFAgADgnaj4B5BoCgBXUgB41V9b95GrNz7rlU8rqt5dyCetwE6td/cxe81+ayqoKtYpz8wFJdg+VeU6ntcXOh4ITzVNSCx1Ti2e0nW1Mqux1V9jfiNQb303ONH+L3+d+Ss5FX85FWYKC1xcdhNnKG3/d8r4jheSxnXURGU2TaIAkEkFJFOd35hJASBz6dWPjF79y6eqJs7bUpVc7lxEAWDj+HO2HVZmNh6mAHCYir8LPffTGt8PSzYdCTawgFHLyWk83dfe53fBu3ePn830w6m5lwt+XrO9QTRv6bWr06GJi0hxcFFpTd/466zv0W9wWBa3/jAFgMP5k7sPUwA4nDS66TAFgMMUAA4rVPUf+eloGVH3Gb7nQADwAAgAAgQA7zQqrTGNrAhNtG4L1Ju+82UrU/7Oc2yLmH4nvoifRQDgj12z49Z1RwISTB+HJFneCEywssvu9qSVNe1IG91opRX5VUEJpjX0vfV+GuNztEI/xu6PH5Jo/SE0yfp+RKr11dhM23Oa/IbHDSWt29LGddpyp3X9cuyCbcsWXfbY1IoFOys1hU0zotPtCyOTbUsTilpuzRjbbonPabSEp9icKaPb/5Q2poOLSLK5Cjs/LcL48cV9A72maeWvPsfaWDESppX/uzD97jb4+fj5yQgBoDdguecxaxPa6X1sj0yIwcTpi1p5cbTFH2owC3dKFPpF8OsTYfieAwHAAyAACBAAvFN4omMR+R0V4S9k6g3H+CIZa6EVLFtBuw8DnGEBZCtvtmVHRddXbfxfXGbDb1PLWhtSy9pm54x1nlMwvsWRVOh4LjzZ/H+0df8vharuU1qRf8UuAUxtnDav8bvUMucTo6u67ztvxZ7rrvnl/nMXXronjwKAMmda16jzLn987LKrn6qmANCpKWzePSrD/hIFgPeDE8wfUZD4t0Jl+rdcafrMX2v+lgUKdjogGxc5myZ2Yx2+uNB09XZsY6/ZeAvjz/dxYH93E9phYPDzms3z/gGAYe9hv4nwPiry7BRPdjonu8ujv9rM+bKrA8aa+NMaFfHs4k7C+z0LAoAHQAAQIAB4jzttf50+d+UzC6Mym6/w11o6AnXW//hpaGXMrsPPr3TZsXsqlnxxFFZYfBGk16w4sr0EvZ0Bhd+Tf82e1/Lnj4ck278J0FmeCjVYmgsmde4fO33zk/rCxtrwZFNdfIb1megUy9/ZHgcq3lx6uZPTFjS8SgHAGplqtiQUNhmzx7VfOWPR9gWXX7Nv3SVX7TFnjXGulcfX/kIeX/OL2EzHhsxxGw8kFLe+EZ5q+7/gRMu/g/TmY74aoYC4i4u7oPDTxI41C7v3+QLE0Pj2FiLCb5EKn+t9D2HD6J1elxOuZ8+ohM/R39wd4Nipf+wc9cg0Ozcqs4GLz23kVHmNnKbAwSWWtXCZkzZy2ZM7udwpzCYuf2oXVz67h5u8aPtpq+Dt4CrO3clNWrSTm7BgJztPn8tjw63cxGVN6uSSxjg5XXETR2GJP+OC3ZwoOtPBsbMZwlIdXJDBxi6zy487P0/ce374aXdPZx/839h72O/NuOZJrxM+654v/fDzXSDaTp9jj+7DMvTcdYaEGztjgt0Miu0FoO86sYOdJ0AA8AAIAAIEAO9BAWAjBYD9UVnNH8rVpm/kKtNRvkd7b4Gj5zzhNVuZs6LA9giwu8Bp6TUfAtjvyHajs2P87DU7PXADF5Fu4zQlzn+ri1uuqZyzNXPhhbu3TZm39Uh8tu1rH2XN13Jl/RG50vgDfcexlNGt3HmX7uaWrNxrpOIfGpFiDqYAEJwzvt1/yfKdhotX7Oqcc17PN7ocx1cUAP5HAYD5WqGqOyJX1f9AK1JSf5QfF3782Xiz4nG8IPcWpL56p5O9l3VUZB3SbK5H4d4Arr8TftrY8AkVPb7w8AVJ+Cy7aRC7zj29l22NsgAUlmLnYqjAanKbuZSyNi6Xin1JFRX4WZu4CXM6uHMu2sYtu+4x7rKbnuBW3vokd+XaA9w1tz/DVde/yFmdr502i/N3nLntD5y5/Y+csfUNrqbxj9wv73mOW3XTfu7KW57ill+/n5u7fCc35bwt3KQFW7mymZu5nIoOLmNCB5c2vpPTl7RxsdktXLCBTT9NXyz9ljGEPfJBgKbfXYzd3MsCO0zU/7oELGDxZ3yw1+w3oPnS9/Puecq/1zX83mtMsM/yZ3ewszyE34Bes7+7AoDwGf59ruG5lluPhADgARAABAgA3mPl7S/0TDxv78Gw1IbPWcc8duta1xYtrVhF0e/Fr3iF385dDPnz0ms5tuUdnGjjcmirc+Fle7lzlu/mplyw86vM8Z27w3SOupTSttfTRrd9G51q/yAq1f4nan81fWznXio6tRnj2i0LL9ndM+/SvY4pF+69I2Vc2x3+uto75KraO4ITTDWppS2/T6et5YgkVgjcBcddnITxYePIioO7uLhf8+h1XzStbJr9tBZ+yzcs2c5FpTVwESkNX4YlNnwQkmD7vxC99XBMuv2wvrDpcPbEzsO5FV3Pq/Kb2gINpvUUOu6lQlRNAaCaClM1FalqH6Wl2kdFlNSmrKsOTDBXh6fYqykAVGvzmqvTxrRV51V0VpfN6KoeP7urumLexuq5y7ZXr7hxf/WVtz5Vver2p6p/se6Z6uvverb6fsvL1c2dfzgtTaSRNGz6Y7Wj681q+6Y/VZvb3qy+4/7nq1ff+mT1Nbc9XX3ZTU9WL1ixq7rq/J7qyYu2VY85Z0t1XuXG6qxJG6szJnZWJ5S2V8dlt1TTb1FNBb2aCn81BQDXY1wdTZ+RsOlkjy4RKXZLQpGzJ7nM+XTamNbDymzH4dAE4+FAbf3hQJ3x7ahU2+exFH4iUlkPfTvnr7PwF0ByFX6GhQJ65Au5e+ue/Vb0W/KHjui9vXtjXMsme4/rbwJ+OORHl9sRDQHAAyAACBAAvMc5l+7qyZu66WCQwf45u/Oei9iKtM/vJays+a2+uBp6fw1tBddyCloBh1Ahjctu5i68+nGua/dfuPscv+WuWPsklzep6wdFrOUHhcr8vZ/W/O/wBPvLuWO7d1172/PNGxxvXHbrfS8px8zZmjJu/vb5FYsf3DT5gj1Hk8e2UsGo5Xv/n7Bl6S787jb3+PS+ZluJrLizMwfqj8mUtaw/ww9UJASmH6iY/CBXWWhcbEdCEh1HRmU0HdHktxxJGe08klTi/Lu+oPlFbY7jEV22dUvJZOeWeUu2brl+7cEtv6773QN1ttfGbNn2ShhRiM1TKVlvez2RzLn29oNrL1n92JaJszZtScg2bYlLNW6JTTPvSRvtfDdrfMeRhGLnkbjsxiPhydYjATrz9/Tb0O9gJlbh0fgD/UZH5fH1x+TxdcfkFChdQaAP914p/vdmwcC9d8YdKIT3nbTsjngIAB4AAUCAAOA9Zl+6mwJANwWAhs/5lSm/cqXfhN+i7r+iEray+ELLCjC18VtjdZwyp5EbP2crN2PJLm7ust3cvEse4haseJibfO4OrrCq61ttQfPz/ipzG21hm1PGtNdPmr21adbiBzuqzt/bVTJ9S2tsltUUlmxuCU9xPBif23g4oaT5WGS6lT/v33WFPYZ9N9sadL9m338iOY2fL23VhyVauLgM2zF9QdOnyaWtfx6V5ng0QGveGJXm2KjMbWrTFjkdyryW9VT8byVrKACsoQCwhgLAmqRS55UUAC6iALCIAsDs0snO2XOXbJ19w20HZ1MAmEgBQEXF35/IxOaplFDxDyfJFABGUwCYTQFgNgWA2RQAZlMAmJ82xrmSAsAaCgBrKACsoQCwJibTsS6ptNWcXNrWnFDk7IjJaNjoT7+NrrDlNzkTOz+g+f9fZU4DF55k4/w1bK8U+23p93avL3qXBbb3QCj+/HsEJyyzHgEBwAMgAAgQALzH7Ev39uRP20IBoPFz/phrTI3rmC+/wu23ouJXuGyLi/7O307XxPlqrFxooo0rqNzEXXHTE9yNdz/N3firp7mpi3cciUhp+F9QgvU/vhrje8GJ5kZNUcPFY2dvnXHZ9U/OuXHd03dcsHJfW/Lojr0RqbY/hCbWf8XO8ecPQVC4kMfdz+9dcK3o3ePAVvZmTqGi71Ubv1eoTf+Vq02f+aiMn1AR+Jihto8DteaPlZm2j9NLGz4qn97125nnP7i9sKLrJmVGw9xx53TPXbJq74xb7z84rqbp5TQSJDZfYPC0bvpjNCm+v+65yutu2Td72sLuufHZjrlV5++6f/EVjzwzcd62t7LHd3ysymn+ODjB9rGvqv5jCpw8maruU4Wm/nNfrelrCg1Hffn7KfRZRj0TAoAHQAAQIAB4DxYA8qZuFvYAsN2qrOiyAi+youK3vlkRpgKtruUCE8xcWnkbd+Gqh7glV+3mxs1u54qr2rmiqk1c6YzuP5XP2rI9eXTrvSFJ1lVF07c0jZ+/4wlDSeveUWkN+/TFHS9qCtvepL/91V9r/MSPL+j1nEzFDilsoADArsLHjgmz0MG28Gg5UdWzy8lyqoIWLqW84/3UsRs364pb7w40WFdR8V/BUABYQQFgBQWAFRQALqUAcB4FgBkUAAooABgoABgoAOgpAKio+EcSye/GH2pU/ANILAUADQUAAwUAQ1yWw0ABYAwFgPkUAC6kALCCAsAKCgArKACsoGWSNyq7YU1WZXddduXGJ9MntvwvPtfGKdTu0//67A3wLAgAHgABQIAA4D3cASCQBQB+BUoBgN/CF1ZO7uOu/K5/V6e5IIOZi0izcLTS5ibM2cLdYzzEXb/ucS53koPTFlg5TUEzVzi164Xlqx/dMHPJzkXxeY3FExbu2jJu3g5OmdPkOnVLye7axnrZ1/Gnb/mpLGyr/ohMvf6//traL0P1pi8D1JYPZfHWtykAvE3j9LaPqvbtkBTz21kVnW9XnLtr39Jrn1x+Z91rmQRb8RKxYdM7sWT8hTc8uq7i/K7fpoxreNtPs/5tCgC0jJiJiZYT4zv+evNHFAy/VGhNX8rUxq8UGtP3cv70VlqOe5fpfsv3CcTaRJzYm/9sIQB4AAQAAQKA9zgeABxCAGC7/xm2AmS/DQsE9EivZUoLF5LYwOVUbOLGze3hSqZ2c2Nn9nCzL9rNLb3mEe6aW5+kIHCAW3PX09zilfs+zq/s+qMyt/GAXF23JyrD/n/s9rHBtAUvp2EpaMueYcd3A3UmLjqtgYtKsf0rSFf3kqGw8dC4GVsOZZVvXE8BYCEFgIU0XgspACwMTjEvzJq8aSEFgCkUAJKp+EcQbMVLBBX/QBK/5IZH8ykAzKYAsJACwEIKALSMmIlpYUiSbSkte03F0zYfistpOESB9Q8R6fbPw1LtHAUCKrjuZZsIAUBOoVROAbe3Eyx/CIweGX4PFMMOf7kJexvEC/qZQgDwAAgAAgQA7+EKAN39AgD9Jvyu/jpOptrAKVS0ha5hN+BpoK37dir+27l5l+zlFizby81YvIsrm76FO+eiPdwt9xziz13/tfEFbuGKvZwqr5kLSaKtfBoOOz0wMMH0Q4jB/N9Qg+XjEJ31b4Eay59oq/+10ETLy5rc5pdV2Y27Iwym2tLKTfdfvnr//SuvfaJCbJwBfsyVNx4IJedecMUj96eXt94fkWqxx+c17R+V3fiyn970slxT/3s/rfHtQIPpH6Epls+CDeZvAmn59mOnwcYLt5fu7WjYh7v484elhADA7yn42RAAPAACgAABwHuIBgB+xWal4s92+ddxQQkWLjq9kUufsIkrPWcrl1/ZzU2ct51bfdsBvtPfosv3cBULe7jCaRu53MkdXPakjeze71yQwch26/OdBdn59QlFrV9nju84XDCl86HMCV3mhNKN14en2OeFJFoqKQBUUgAopwCQSwEgh4o/Eys2zgA/hoq/L9FQAMhJK2/NCU+1FCjzmsaPym6opABQGZ1hv8BQ7FybO6mtrWxGx29Sy5v+Hpdt5UIMrPizIs+KMq2X+MJP/xNsbxi/B8x1jQI565vCXwfjhCL+cyAAeAAEAAECgPc4VQBgt2cNTLByEWlWblS6g9PktfCn9C1cuY/Lm9zF5U7s5Hf7X37j49yMC3dQ0W/jQpPqubBkM3+cPzLV9q5cVbOfVpz75UrL/vjslv1Z4zftHTenxzxr6a7rZyx7eO70S57II6Fi4wUwWGactyuWlM25aPtFC5Zvu7tkelubtti2PyzFQsuraT8V5P0KrfE3kakN/2KHpgK07NAAu+oj/V+wQwWx9BwBQHIQAAQIAN5DPACwc+9NXEyOg8uoaOUSS5q55KIW7sKrHuZuuPsZbuyszZyairyusJXT5LdyozKauLBEGxegruOS6H3TF+3mKubuaKMAUEQBoIgCQBEFgKKscZsKxs3uSacAoKcAEMuKP8HxexhSVPz9SPjci7YrKQAkFU9vy9KV2IsoANDyaiqiglykL2qZO+GcbfvLpm7mYtIsrhsNsb0D7OJDsfR/wq5AKF7MzwYCgAdAABAgAHiPucsf6imYsvlgcG8AqOP8dSbakrdxhrJmrmhGB5cx1smllLZws5bs5Jas2vd9fsXGf8ekO/4Rl9n8fnRa8x/91faH5XGm7X5xtdszR7dtv2DFY9uXXfnEhWLfB+AJzl32cDxZM3X+ju2qLOt2CgDbfeIt2wN1jqdi0hr/Ep5k+4evxvihQmP8kt3wib8PAX/orK/+hb5vO1vv9f4NAcADIAAIEAC8x8Klj/QUT+45GEoBQK4088c5I1LtnKG0lcue1M6VTu/gsia2cYllTmpr4bSFjf+LSrX+Pj7L8fj4WT2P0pZUbfa4TRMpACRTAEimAJBMASCZAkC02PcBeAIq/r5ESQEgmQJAMgWAZFm8Jbm0snvRjAXbNuZPaH88LMn0dJDe/H/BCbZjvhrWd4CKO99ngGHPad3mxl9hk7UJ7ezsGna2Dd+OAOAJEAAECADeY9HF+3qKKzcfDDHYPmc3xQlJsnMxWY1cQrGTy6/s5CbN33K0dEbX2xkT2ver8ht7QpPMtkCd8TZllv3qmYt3XHXpNY/NIqPEhg3gbZau2JtEloyt2nR1ZIrp2hCD+R7632kJTbLtDE+1PaPKb3lfV9TKhSfbOF8Vu5AVK/C0juuLP82WcbchAHgCBAABAoD3WLhsT0/RlE0Hg5LMnwclWTllnpM0c3FZDVzhlE3c3It3f3/ORQ9umbJ450WjZ20pDE00R1MAiIjPsofNOG9HKBX/ICIXGzaAt6Hi70tCxs/oCgtPNoZRAIgMNdhHlc3oGj9pQc+qmRc/eGDakl1ccqmTC9aaOF+2N4C/HTIr+Gyrf4PwnO0J4Lf+EQA8BAKAAAHAe6y6YV/Puct3Hiyf2f157qTOw4ay9gZVXktNbKajhgJAzbzle9eTC+Ys35tFosSGASB1cy7eqZyzbFfxgpUPrTxn2e6a1NGtNSE6Uw0FgJpwg6VHn2/7QJll4fw19ZyC1nf+6nrOT1X/CoWAejJVbJgwsiAACBAAvMd99z3Wc8dd+w9ef8uTn6++6amuK67br1PnOxUUABQZ49oV85fvVcxdvldGxV/yd74D+DEUAmQLVz4kX3TlwwoKAIrwBLPCT2lSzFjYUXnOeRtfKJ3s5MISbFyAysiF62q5CF2tMVhTG0QBAP9bHgABQIAA4D3uv//x+evu3n/xDbc+ddN1txyYR8LE3gcAZ2fO4k49uaS0svV2CgC3ByiNt1MAuD1SXzuN4DRYD4EAIEAAAAAAKUEAECAAAACAlCAACBAAAABAShAABAgAAAAgJQgAAgQAAACQEgQAAQIAAABICQKAAAEAAACkBAFAgAAAAABSggAgQAAAAAApQQAQIAAAAICUIAAIEAAAAEBKEAAECAAAACAlCAACBAAAAJASBAABAgAAAEgJAoAAAQAAAKQEAUCAAAAAAFKCACBAAAAAAClBABAgAAAAgJQgAAgQAAAAQEoQAAQIAAAAICUIAAIEAAAAkBIEAAECAAAASAkCgAABAAAApAQBQIAAAAAAUoIAIEAAAAAAKUEAECAAAACAlCAACBAAAABAShAABAgAAAAgJQgAAgQAAACQEgQAAQIAAABICQKAAAEAAACkBAFAgAAAAABSggAgQAAAAAApQQAQIAAAAICUIAAIEAAAAEBKEAAEgxEALl29nzvw/N8BAABGHFajxGrXz4EAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBCAAAAAAShAAAAAAgQQgAAAAAEoQAAAAAIEEIAAAAABKEAAAAACBBHhkAAAAAYOQSbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8G6ijQAAAODdRBsBAADAu4k2AgAAgHcTbQQAAADvJtoIAAAA3k20EQAAALybaCMAAAB4N9FGAAAA8Gacz/8DA6+zSJMsMSQAAAAASUVORK5CYII= Dynamics CRM Portal GE.P Ellipse false Any Any false false Select Azure IaaS Generic Host Technologies Virtual Dynamic 97da4742-4e59-441a-994c-a1490d70dd28 List A representation of a machine e.g., on-prem or azure server that hosts an application false SE.P.TMCore.Host Centered on stencil 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 Host GE.P Ellipse false Any Any false A representation of Identity Server false SE.P.TMCore.IdSrv Centered on stencil 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 Identity Server GE.P Ellipse false Any Any false false Select Generic NodeJs CSharp IoT Cloud Gateway Technologies Virtual Dynamic 9c1cc117-8938-40ca-bb0a-23d6002ddcf0 List false Select Azure IoT Hub Azure Event Hubs Azure IoT protocol gateway Custom cloud gateway Gateway choice Virtual Dynamic 1e48cf4e-8ae0-4455-9a2b-c158693877f3 List A high-scale service enabling secure bidirectional communication from variety of devices. false SE.GP.TMCore.IoTCloudGateway Centered on stencil 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 IoT Cloud Gateway GE.P Ellipse false Any Any false A specialized device that acts as a communication enabler between an IoT device and a cloud backend false SE.GP.TMCore.IoTFieldGateway Centered on stencil iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACHDwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZEsRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTsAIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQdli7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtFehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGXwzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNFhImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH554SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJVgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyCqbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiEj6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhGfDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFpB+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJyeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJCYVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQlnyfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48vvacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0CvpvfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15LWytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AAbWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0zllmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHWztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5sxybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPwYyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmRXVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNmWS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wlxqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33zaEb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2vTqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqbPhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h/HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavrXTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxSfNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAARRJREFUOE99ksFmQ0EUhtOHKCGUUi6hhEieoVy6CiGrkG3IA2TVB+hThVLyDN1eSghdZTX5P84fc5u5d/H558z5z5kzc+/gYVb/ZydS6F0+pdTCCcwHUYsvQQPU8Vb0NjgKirog39vgXWA8iZWYhBKzT76zwUZ47KV4ER/iOWL2yeMrNriECUbiM9Y0IXYOX7FBPsFCcPJeUEzMfu8E8CYw/gqKnkKJ2SdvbwsvvgXGLsi3Co0X+X+AUoTy+v4PXgXX+xFDMRa3Bjlr8RfqvbmgqT+rdZ4X9sGD0pRJH0OJR3evmiODaQQnVqE8MtoUC40MhsKz4GTujhJXxUIjg5kKTmTsXKfFQiNDDg/JJBRzBcX14ApRBWL6a6sYxQAAAABJRU5ErkJggg== IoT Field Gateway GE.P Ellipse false Any Any false false Select Generic NET Framework 3 WCF Technologies Virtual Dynamic b28a8275-e02f-48b5-888c-87d03d5b01be List false Select Transport Message Security Mode Virtual Dynamic 6644d5f0-e070-4350-a13b-4d36dcb86531 List false Select None windows username certificate Client Credential Type Virtual Dynamic 18aa87e2-8648-48e7-a197-46f0b65a81d1 List false Select None EncryptAndSign Sign Protection Level Virtual Dynamic b81b55b0-ca7b-41df-8cfa-d644e1df1c92 List false Select BasicHttpBinding WSHttpBinding NetTcpBinding WSFederationHttpBinding Binding Virtual Dynamic cdaf2be7-2522-458a-8401-64055c7bdec3 List Windows Communication Foundation WCF is Microsoft s unified programming model for building service oriented applications. false SE.P.TMCore.WCF Centered on stencil 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 WCF GE.P Ellipse false Any Any false false Select Generic MVC 5 MVC 6 Web API Technologies Virtual Dynamic 1e972c93-2bd6-4915-8f5f-f46fd9f9399d List false Select On Prem Azure Hosting environment Virtual Dynamic 6c5d51b0-91b1-45ca-aebd-3238f93db3b8 List false Select ADFS Azure AD Identity Provider Virtual Dynamic 3175328a-d229-4546-887b-39b914a75dd8 List Web API false SE.P.TMCore.WebAPI Centered on stencil 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 Web API GE.P Ellipse false Any Any false false Select Web App Web App for Containers Type Virtual Dynamic e8c6c66c-d75f-4ddf-bc22-3dad2a5934db List false Select True False Azure Web App Processes XML Virtual Dynamic 049c845a-28c2-46f8-bda2-971ff7df9bd4 List false Select True False Azure Web App Processes JSON Virtual Dynamic d69db950-2372-4bd3-8328-f751f0b04c03 List false Select Allow access from all networks Allow access from selected networks Azure Web App Firewall Settings Virtual Dynamic 327ab565-9b38-4f6a-8171-6ab7deb2246b List false Select True False Azure Web App CORS Used Virtual Dynamic f6b0309d-2020-4c3f-838f-5ab8ea0d2194 List Web application built and hosted on Azure App Service false SE.P.TMCore.AzureAppServiceWebApp Centered on stencil iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAABcRQAAXEUBuS1iLAAAR6FJREFUeF7t3SHYJMeRoOEFAgcMDhgYLFhgYHBgwQGDAwYHFhwwNTiw0NDggICBwYAFBgsEDAwMRBYIGhgILBAwMDAQEBAQMBAQEBAw0c33z9ZM/TnR/Vd3V2VFZH7gfR47Jc1Ud1dVRmZGRv7D999/L0mSJhM2Ssrpb9/+/ftPv/zurY//+u33v/7T12/96o9ff/+z3321q19+8u7PX/voz9+8vY4vv/n768uLr1lSTmGjpL7+8rc3Heknn7/r0H/+h789dcD//O9ffv8PH35exk9+++Xb4IGAZPk8f/zi26fPSBDTfn5J/YWNkva37uD/9T/edO7//TdfhJ3oDH760Vff/8vvv3r6Pn772ZvZBGcSpH7CRkn3Wabo6dR+8bGd/L2Y9eC7WwcHzhxI+wobJb3ss6+++/73f/n2+w9fd1J29H386NUXb2cNWFJwxkC6X9go6bnPv/77U9IbU/fV1uRHR+C1zBawxGJQIG0TNkoz++51/7FM4zPadGRfz3/79ZuggNkZgoJvvnv9ywa/tTSzsFGaCZ0D2+nY7uboflz8tgQELB0Q5K3vAWlGYaM0Ml7+dAJ0Bnb482IXwhIQtPeINIOwURoNCXuvPv3maVo46gykJY+A5Z/2/pFGFDZK1THKZ1qfrXiu4etW5BBw77DLw/wBjSpslCpinziZ+lTQi17q0r24p7i3rEWgkYSNUhVsz2Nq37V89cJSAcWJ3G6o6sJGKTNevKzV/tO/2enrXASeBKAEou19KmUXNkrZLNP7jvSVFYcgEZg6M6AqwkYpAxL5SMJyTV/VsEzAvWu9AWUWNkpnYl82JXfJxI5erlIV3MPcy2xDbe9z6Wxho9QbU/yspbqur1Fxb3OPu5NAWYSNUi+M9tlvHb0wpVFxxgR1Klwi0JnCRulIjvalNyhSxRkU7iLQGcJG6Qisgzral2Iku1qGWD2FjdKeOI6Vg1eil56k59jqyg6C9jmS9hY2So9ibZN9+07zS/f50asvnioOehaBjhI2SvdifZ9iKB7AI+2DZ+lXf7TAkPYXNkq34uXk3n3pWOTQ/OVv5gloH2GjtNXS8UcvK0nHoNKgCYN6VNgovcSOXzqfgYAeETZKl9jxS/kQCLg0oFuFjVLLjl/Kj1oCBgLaKmyUFnb8Uj0kC/Lsts+ztBY2Suw9/vBPX5vVLxVG8G4goEvCRs2LAj4UH3EfvzQO6gh4CqFaYaPmxOlkVu6TxsRsHrN6nkCoRdioubCNyFr9Y6B8LBnhEV7+VGncguNqoz8DLgvVxj3C+Rzte0DzCRs1B44gJWs4ekkoh6XTXTrvP37x7dO+7yz14ck453rA2Q9LAMHa83LtdDjRZ9O5+G08hnhuYaPGxhSgCX7nI8+ClzCjbTrNV59+87YzbX+zEXAcNAEMn5Uz8A0OcuBd4IFDcwobNS5ewK7z90Unt3TyfP/u037fOjhg9oAjcaPvUsfgHvUI4vmEjRoPGcBO9x+v7ezNvH4MsyHsSiEoME/leHzHBqjzCBs1FqaWne7fn539OZgtIN+AZQSDgmPw3bosML6wUWNg9PST3zqVugcCKDv7vLjXWcs2INgPOSouC4wtbFRtRO6W730cwRMFVOjw2+9YeZHkyjY3fjtzCR5H4GvAO6awUXXRWZlZfR9G+eRJML1s+dRxEBBT5IppbWfE7uNswJjCRtXjqP8+jvLnQ3BHkMc2xOie0GXOBowlbFQtjvq3c5SvNQJnRrbukNnO2YBxhI2qwVH/NnT6H+DDL9zipIvIHWCpgKN03TXzMmcD6gsblZ+j/uvo7KOXON+ZI39tQSIhAbYnY17mbEBtYaPyYpTCmnX0MOrNaD9qXyMznNmT9fcqXbPMDET3kz5/+m58puoJG5UTB3e4rel9TO9H7dcwfemxqLoVU95UJnQ3wfuYXTOZtpawUfkwzeZU5L6Y3m2/Z2kr8knYWuhz+RwzlAbXNYSNyoMHyUS/d1jbj9rvRWW/9juXbsUSAbNK0T02IyoymmuTX9ioHBhhONW4bV3/ESYxaS8sERBUmqD7JkHQJYHcwkadj33qs29F6vX5+Xt8UWlPzNwRWBrAf/50RkP7/SiHsFHnIZN29qIkZwQ+jFasEaAjEFzOvjxA1UVrBuQTNuocZPnPPGI4e8bjn/7tS9ctdRieb/J5Zp3ZY1mEUxvb70XnCRvVH0VHZs0m3jux7xHWCNDRZs8TMPE2j7BRfb369JvwQdE5mK5tfyNpb0ueADNP0X04Mp4xA+3zhY3qgxfAbNXFmP5kGvTfP8sd9LC/u/29pKNQXGi2GQE+72dfuSRwprBRx2OteaaqfixvUCBknQiUPTGKmZnlWqWjMSCYLRBgQEANhfa7UB9ho45FIsws6/28zFjzi6b7CIKyJ0T5clJvPCs8MzPlBBlsnyNs1HGI8KMHYESM+F9a58v+fRCgmLmsMyyBwCy7BlgaZBZk/R3oWGGj9seNzbpydOOPhql9tjy138El2ZdCGInd8nmkPbFsRjA9QyBgcmBfYaP2xQ1NIYzohh8J2cxsZ2w//0sowJP95cZns5CJzsT9N0PSMAMC63H0ETZqPzMk+9F5s4b3yPQd5UKjPzsTawQoA5akRn+nkDtkZc7jhY3aB9PGo+/xZUSyx8iY4KHCd8UUpeuUyoD8mZETBRlY3DOjqO3CRj2O/a0jP5wc97n3Hl5qpkd/VzYEPe21S2cg+B79uHACnfZzax9hox5D1Dpqwg5Tc5xU2H7mvVR5mZGU1V67dBaCcYLy6F4dgYW5jhE26n6U9oxu4BGwTn/0GniVpQC4d1nZEJyPOvPo8tv+wkbdhz270Y1b3a3b+h5FklN0HRkR8LXXL52JIH3ULccGAfsKG3W7EdfhmO5nXb79rD1U2BUAlnrO+o6ka1gWGPF4cZY63I2zj7BR2xGNEpVGN2plP//D3059yPheq7y8CAI81EQZ8RyNOBvgltx9hI3aZsTOn/XDLNPaFQoELawWqMyYpRrtkCGDgMeFjXrZiJ0/nydbtTsS7aJrzYjkRSuYKSs6y9GWKgkCrNB5v7BR143W+Wca9UcqbW9yVKLsRpsNMPC+X9ioy0br/DmjIHsEXeHY4DW+U+6T9WeQMhltNsAg4D5ho2Kjdf6V9rGzvzn6DFmRRNl+BimbkWYDDAJuFzbqfSN1/jzwFbPW6VSjz5OV1ctUATOAo5xWyrvNQ4S2Cxv13Eid/9nb+x7BdVepErigOFT7OaSMqtTeeAk5TQYB24SNemeUzp819CNr+PdSqUrgwmqBqoIlgRFKCbstd5uwUW+M0vlTUGekh6FiyWWrBaoK1tFHOFjInICXhY0ap/Pn6Fo+y/qzjaDamiUzMMxetJ9Dyoh3xggVBBn8uC33srBR3/8DHWd0Q1Uy8jnaRPbVpipdm1Q1H/+1/tHm1ua4LGycXfXIl45mhtHmJ5/XO3qZLGWnJVUJy4fVDxViNnfEmdBHhY0zq36kL9HuTB1MxWImrE1avnQO/M4E4yAPhPfLgk6Jpay1vWa1+HPaP/tXf3z3d5MQvFzXlvcFI+jqs6LW5nhf2DgrpsyjG6eKUdf7r+HzVhydOC1ZH7/fumNnG93S2Ua/eQUk/3H9dJZ8Jt6J6yCh+lZBBgzL7ycDgLfYqhXdMFXwsLafaRZMUVZcp3RasgaKZrEWzjPGb1Z9OvwRBK58/g9+Hf/zCghi2t94VmHjbIjgqya6MNXHWnj7mWZTNYBzWjIPOnruIzp6RsHVik719MGHX5RODqxUBv1IYeNMeOir3si8oCx28U7V5E2nJftjNwbr4NwzI+x5P8sPd8pZOIMFuiYPAHgJ7JV00xtTcSaSPcd0etWX+cxLOEdj/ZqXPUlwldfns/rHV3VnSmYv0BU2zoDOs+oUH+uQJpDFeNlXDepGrtvQ09LhM7PiNH4fVb9nZn8rHoy2l7BxdJVHijNm+t+KqD767ipwWvJ2dvg5VP3uue5ZZ1PDxtFV3DsOpjDbz6IYU+rRd5gdI5LZpyVfQgBM4ivr93b4ufzj69+j4g4BBoQzDqzCxpFV3evv9PDtqq73zj4tGWGUT9Iey1/Rd6Y8fvjqi6ddAtE/y4yAsr3vRhc2jqri1DCdgdPC9yFPouoIkTyG2c8N4Hll1mvmffdV8d6qOBMw20ArbBwR2+WqJYdxvU4HP6b6Nk9Gvu1nGhkFd8hzqZrIqXd+8Pq5+0Gx35F3BZUP2/tyVGHjaBgJVhtFOALcD51K9B1XwH07+o4Pglzycuz0x1MxCOA+nCXwDhtHU23d0M5/f5VrmFPzYbQEJWZmWHPldMToM2scT0FAsVm4EZ+5SNg4EtYQox84Kzv/41B2N/rOKxjh3ACW4QjEzNyfD0mB1WZ4ZijTHTaOgqzh6IfNys7/WHSgRPbRd19BxSCA5QueQxP5RBDADoHon2U1+pkBYeMIqp0QZ+ffB2t7laedq5wbwBQ/11o1AVPHqBgEjHzYWthYHaOkSiMOkmTs/PupvDMAWYMAR/vaoloQwOBs1EPXwsbqKlX6oyPyON/+Ku8MQKaqkI72datqQQBB7YhJgWFjZRTNiX7AjHhh8iC0n0F9VN4ZgDNPEORlSNEUR/u6F+++SomBVZbfbhE2VlVp3Z+bHySltZ9D/VB0Jvp9quidpMShKQRO1TK6lVO1OgGjzdaGjRVVW/dfAhU6oPazqB/um6onQy56lIomR6XS0prqIJhkMBT9s2y41pGKBIWNFVV6Of1wFfGeOY2rNxjVVt+bflQQwIin6qFKqqNSPgDPQ/ucVBU2VlNp3X/d+YOs6fbzqD9GuJWT2Lj2vc6NYFaE+9KCPeqJo4Sj9oxGGbiFjZVUWveP9p972E8ejHbb36eSR4MAtvHxYnN9X2epFASw+6V9hqoJG6uotO7/o1fxdY66v7Qqkuqi36kKgoBba0rY8SuTKjNPXGf1g7rCxio4TCT6YbK5VnmOIGb9mXS+6jsD6Mi3BAF2/MqqShBQ/byAsLECzmyOfpBsrt3IjNbaz6XzjbAzgHvr0rnmdvyq4MdFZnd77MI5StiYHS/oChHiSy9YPkP72ZRD7Z0Bb+47tlb95yoIsONXNRWeQYLtqku5YWN2Fab+uSmi9jVGme1nUx481NU7S4IAZgL+9++/KlVwRQL3b4VnsOq7PGzMrMrU/5bCFhzv2n4+5UJWffTb1WLHr7rIoapQKKjilu6wMasqU/9bRv8Ysbb0iCrVmXiZwYDqqfLer1YlMGzMqsLUP7Wto/YINdXbz6icWDuPfsNalnvTIED1/LhAEFBtVjdszKjC1P+ta1V0Ku3nVF5Vtp1Ko6owE1BpV0DYmE2Fqf97ElUMAOph32/0W0p6DO946uyvRf9e9nMD6AvYRdS+OzIKG7PJPvLauubfMgCoh2CUab7o95RmRae3dNq8r3m3gfLazN4ueH7Wz9M9/uOv3979zu2lyimvYWMmFab+770ZPQioJvbT//O/95qRyv2i0xyWDp7E5XXHflYp3I9fBwHRdWbCNbbXnU3YmAXRYr8X7X3umfpfVK4gNbsRjhCWWrxvWeZad/LtvZ8FSdTRZ8iC7YtnBUhbhY1Z/Paz3AezPNL5wwCgNrb8PHoPSGdY1tvp6BmpVj3Z7lKeQBbZt3qHjRkwwsq8zrPHtRkA1MehO9nXIzU3glTyVujs91qHz4J+4tphaxlkPvI9bMwg+4lse1SmMgAYAw+4QYCyoCztr/74ZmRfrTDNPbLnibGskjXoChvPlv0H3aumugHAOPgto99YOhKBJ6P7V59+k3q9/mgEPNH3kwXL2e01ZxA2nil74t8Pd1zzNQAYS/acFY2BEf4ynd/eg7Oi38h8hDfLMBlrA4SNZ8r8Et17mtcAYDzbM5NdMtA2DIgY4bLUNNL6/d44vTPzUhz1EdprPlvYeJbsiX97n0hlADAmMn+j31vagtEi9xBr+BlHjZllX4ojabi95jOFjWfJnPh3RPnJrOtCegyjNKsF6hY/+e2bUX7V7XiZZO5HWKZor/dMYeMZMif+7ZX012Idr/0eNIbsuSw6H50BgwCmrtv7R/ej+E7mIl2ZZn7DxjNkflketc/U44DHxotoz6RR1cbyJlX26ACc2j8WMynRb5AB/UmWXI6wsTdKTkZfVAb/98D13OxVovS4//zyu91zR1QHnT5T0qznm8DXV+ZSwSz3tNd7hrCxJx6KrJWcmEbi5Knon+3BAGAOv/n0a4OAyVCilpF+9lrwI6NvyboUQGCYYeknbOwp87Y/8hKOLDDBS6L9PjSWf/3EHQGzYBmT95nT+3lkzi1jOai93t7Cxl4yj/6XPZtHHjZhADAuRn7Zy1nrcYwwSeY1kS8v3uXRb5fB2dsCw8Zeso7+eaiX9boj6xLw9/B3aCwkIGWdetTjGLTQqWTb061Y5qWAs2cBwsYeMhf9WUpsEtVH/3wvfP7l+9AYqMme9b7WY6jtQDJf+5srP6ooRr9pBiTBt9fbS9jYQ9bDG9bZmT12J5gkNAYCWov/jIfRPtnkM5yqN7qsFTrJHWmvtZew8WhZR/887OsOmdFc9O/tybXD+hhdZM1l6WO8z06RHkf7Y+HdnvU5PWsWIGw8WtbRf1uhqUcSlyd61ZZ5r3Ff9YMAavCztm9QPq6sSwFnzQKEjUcicSb6As4W1WjuUZ3QUUZNTAlnPn70HDWDAH5Hgv8l8VdjI/Euug/OdsYsQNh4pKxffpTR22OZwgOB6iFoY7QY/Z6q8b3wbLMm7Gh/PgTvGZegz5gFCBuPwtp/9MHPFpVl7HWt0d+tnBghZk0kyiVvEEDgxr59nu/299U8si7d9Z4FCBuPknHtv038W/Q6TILM8fbvVj7MEHFka/QbKj/2gX/052+c5tcT7oOMCYG9ZwHCxiNkzfy/dDQj07zRv783OpX271YuROVO+dfEC9U8G0V6veNv1XMWIGw8QsbRf5T4t+ixBXDR/t3Kg+ni6DdTbuQaucNGL+mR6H2rnrMAYePeso7+r5Xy7Fk/2iIj+bAsdE7CqjMNjzCxT7fIuiut1yxA2Li3nqPprV6qwdyzqht7U9u/X+ehAzl3vd8g4BYsz5DUZWKf7pExsffa7PSewsY9ZUy2YDbipZdFzz3eJCe1f7/O4Xp/HUtGv+W09YiKM9R7CRv3lPHEvy1b73qeHuVWwBxc76+BlzUjfjt+7SVjP/XSLPUewsa9VB39o+co8Ge/cyvgmbhPPbs/P55dgmWn+rW3rNsCj84PCxv3kjGq2lp5L/pvj0Kw0f796oNRpCV9c7PjVw9VZ6sfETbuJVvhFCI8Ir31NUboFKL//ki+3Poj2a/nUo9ux24cnw31UHnG+l5h4x4ynrq0dfTPtEv03x+pdwnI2XF/muyXF5nZbo9Vb7yHo/vxTOyia69zL2HjHrId+kNxhS2jf5yxN/TIH1nPsesi+g10vl/Y8etk2YoDbZ25vkfY+CimLKIPcqZbRthUEIv+jCP1yPhUzoqUejPV+fGFstxSTxlnAbbOXt8qbHxUtpOWbi2teEYA4JkAxyKCzjYrped++Jv4YC6pt2yzAEeVBw4bH5ExkeLW9fUzAgD48juGmf51UIHzqOlOaauMswBHnG0RNj4i2wlLBCPtNb7krADg1kBFL2M92WN8azEIUAbZZgGoVdJe46PCxkdk+9LuWTs5KwCwIuC+SObMNhulbSiO5YyYzpRtFoA8mb2fibDxXtlOVro3e/KsAOCodZ4Zuc2vPp4HgwCdaYQB7TVh472ynap075d1VgAAX3iP+/1fvn2KlqPvV7UYBOhM2WYB9h4kho33YOtfppfuI3snzwwAzAN4TMajp/UYgwCdKVu10M++enoYwmu9Vdh4D0bb0cWeha2I7TVudWYAwIl07fVom4znemsfBgE6S7a+jfdce433ChvvkWmt5NH6yWcGAJ4MeB87//EZBOgM2ba275kMGDbeKlvy36PZ9BwSE/25PfDjugVqO74rC/zMwyBAZ8hW3I5y5u013iNsvFW2L+fRWuJnHAa0Zh7ANnT+7BmPvkONyyBAvWXLceMZaK/xHmHjrTJNj+xRU//sAGDPNZ5R0QFY3W9eJGZ5aJB6ynaOCDPv7TXeKmy8RbZjf/cYPZ8dABBQtdekd+j8M+Wc6BwGAerpzKXhyC8/eTxhPGy8RabkK14I7fXdK/rze9pzq8dIeOFb2lcLgwD1lCnfaI+BYti4FWuwmdZF9qySdHYVObcDvo8XfbY9uTqfQYB6yTbjzY619hpvETZulengn0e3/rXOHmXuleQxCjv/I90T7OYJ/GEQoF4y5bw9ugwQNm6VKQN778Q59uNHf09PvtDesPPXFtwjeyRGSdcwOxvdf2cgGHlk23jYuAWj7eiCzrL3g8/Ri9Hf09Neez0rs/PXLVi6MwjQkbL1fSxLtNe4Vdi4RabyiEdMlzO1Ev1dPTHD0l7XTHiRZ5puG90HH34xRIKlQYCONsrsd9i4RaY92Jz+1l7fozJM8+yd11AJL3CP8+3nx//25fdf/de99r8SLH89invHnTQ6SqZTArnX710GCBtfkmkK5KjSuQQV0d/X24zLAHb+/fA9RwH0v35Sv7wy74ZHpkelS+hzMs1O3nufh40vydI5grX69vr2kGW7x2yHA9n598Ms3rVEU56BTNt872EQoKNkKoF/7zJA2PiSTOsfRz3cvBijv+8Ms+wGsPPvZ2udiRF+E4MAHSFTZUCe0XtmwsPGa/hLsowKHt0C8ZIsn/PVp+MvA/Aw2fkfj2fm1rXxUXZiHJErpLll2C6+uCfIDRuvyVT8Z49ayNdkyYhmqra9tpG41a8PlsvuPUVvlPMXDAK0p0zL4fcsA4SN12Sq/X90lm+mus+MkNvrG4Gd//GYWdmj42O2bYTjlw0CtBcC40wz4u31vSRsvCbLNC2j8/ba9pYpyWPEswHs/I/H7NHewWOmQcC9ZlhWUx+ZgmJydtrruyZsvISDB6K/9Aw9OkS24EV/9xl6BDw9eaTv8Qhgj8qRyVQO9V4jBtXqL9MywK33dNh4ya/+mOeh75EZnyngwaMnP2Vh538sZul63CuZXnz3MgjQozItA9y6bTxsvCTLdG2vpDh+2OjvPws5Ce01VmPnfyyejZ7VI0eoFcBMSfu5pFtkWgbgHbu+tmvCxkimPY891+8yrVHzoq1cGpjp6EzbZkbDDN2R22IvGaFWwCP11KVMs2Hs1Guv75KwMZLp8J8e0/+LDKcCrlWessy0q2IkdL63PPRHGCGhkyDgjABK9XHfZJkJuyWYDRsjWV7evZPhMgU+uGerRwYjZI5nxPOQZYvoCMs7TOUaBOgeWQaLt/QRYWMkyxRf7xFwtkRAcBJVe52Z8ZtFn0OP4YWTrbPieqrXCuD6b1lHlZCpSN7W7YBhY4s/LPpLztD7iE9eaNF1nIkXVHudWWXaSjkKphqZmWq/60yqz/gwk2EQoFtkWgbYOlAOG1tZpsFZY2yvrYeM05o98yDulSkiHsU9tfzPUn3mh+e+ctKt+suS5Lx1O2DY2Mqy/n907f9LMo5myPhurzOTEbaHZcNDXW1UWr1WAIOOCsG2csiUM7blXRE2trKs/59VCCfjNDYjwXvWf1nOoXNmdAY6FWzprPl3ln+foJD/ni2Z/C7rm22EbWHZbJ3Sy6h6MEgQMOpZHNoXwWJ0D51hS38ZNq5lWf+nQzkr4SnTj7r20jowLy1GYMwW0GlHf8aeCEooROPIfz/c9/cc85lN9aCQa+cztJ9LamXZDrtl0BA2rmWZ0rhlb+MRMu5xbmcB+N+su5Md7gi8PtagR5p+5rNkfI624pmqkn+h82Qpmc+gr722Vti4lmX9n5Fse209Zc1q/s2nX3/PEoVFdsYy6lY0PlPlWgHMbo0wI6PjcH9E905v3KvttbXCxrUsI8mzR0JmtKuX7Amej2KmqnKtAF6s1WpxqB/u7yzLoC8tW4WNiyzr/0wbttfWGyOX6NqkPTGb0957o6peK+DsWUnllWVG9qU8sbBx4fr/c5WnLpUbM21n7XI5E4lK0fdRxUwBm7bLsnOMQKS9trWwcZGltnGWSDtLcofGMvs2s+q1Aipv0dQxsuwce+lcgLBxwUEj0R/aW5ZM6IznAqg2MnVHTPa7VfVaAWcVKVNeWXa8XOs/w0ZkWfPuffrfNZmSO1QfS1vrbZyzI+eIEUv0XVXg76m1CjvowkZk2cqQLSM6y7KIanspOWdWjFYq59qwu8EgQKiQQxc2ghKv0R/WW7btNm4H1CPcQvYyZh8r17WgGqbLOsqyi46Aur22RdiILA9gtgdp/2UAlxTuU+97Y03QcrLbVU665aVrEKAMdXTory7NSr3XsMiwFpdp/X+t8uhE56BD8GjZ27F+WTXvhoAvSwKzztHjDJYtLg083msAL6roD+kty/7/VvVtS+qLvBHXhe/H7puqZ1s46zO3LHUuWLpurw3vNYA1yugP6S1rohRTe+4G0BZuD9sHI+ks25JvRfBiEDCnLFvHP7xQq+K9BvAvR39Ib5lP3qpcy1x9kEjb3je6H4F3linVWzFg8BCh+XDPRvdDb/RX7bXhvQZk6NyuJS5k4DJAVjlmZq7tvdVjmFWJvvPseKddmorVuDJsa71UEfC9BmRIALy2dSED8iRcBlDLkV4fWfZY38PgcC5ZAtZoV8qz/wNG3dF/3FuFI1EtCqQ113r7ItCqmhzo8tA8shwMFB029uz/gBdY9B/3ViFK9mwALWY/0OcsfOdZaq7fqsIgR48jly36/XuLkuqf/R9kqXRXZSRVNTNZ+3GP/7mY2qT6XvTbZOf5AePLkggY7Uh69n+QYQcA03rtdWUVr0WaGzALT/PLgU6UzjT6jbLz/IDxZRgoRnl1z/4PMqxrE82315WVyYDzoiKkL+5cqiYH8nI2kBxXhuqx9FPtdT37P8iwZaFa8RSTAedjgZ+8qiYHMkq0dPCYslQEbJcqn10kMoxms1YAvMRkwLnwMLf3gHIhObBifg5bsHvkPzFzxXsL7Ejgnl4jc3355ya3Pi5Ldd22uN6zi+SHjv6j3qrtoyZqd91/Du7hroMp9YoVO5m9oONtP8+9+LMYVDFT+UhQxH/Ln0HAwJ/p8td2b/qI+HvtqS1E9ewi6Xij/6i3ShEnD0GGZRMdywI/dVU8Vpj7jVFj+1m2oLOhw++xM4IAi7/LWYKXZViWamcvn11ghgSaKFEhs6plSbUdD27mcyn0MkY+GZY3b7V1xom1XV7uZy578HezdOCW2FiGrartCbvPLjBDZxZtVcgqS4EHHYfO3+p+Y+B3zFDm/FbtqG2NWamMSchc057LGCPIsE2Vbcvra3p2gRnWy7hx1teUlVP/47PzHw+j04pFg9qRG8sDFSog0uEYCLxBIBd9Rz21hwI9u8AMHdqlc4uzIREmun6Nwc5/XATvFYsGsZf8T198VzKAMRDIc4LsOnnz2QVmSFKocFwmCS8V1xO1jZ3/HDLkPM2GIGbWHAECoOg76W2dsPn24ogKon+5twovXqLZ6NpVn53/XHgpZxj4zITve8bttFm2Aq53M6W7uOzlMLMUdND+WFPlOWh/c42N37xi0aDqWMqYbTYgw8wxM1/L9by9sAzTExW2AJr4N6YfvB6V2PnPi4FHhnrtsyEpbaYtthkCzfUx1G8vLEOCAiOw5XoycvQ/rg8+NABQnprtM2HgR/2A9rcYUYaddusdJW8vLENWe7tHMRtH/2NjBNj+5poPgb55Af3NcMBWhlo763727YVlKJfZ7nXNxNH/+BiJWMVMIFPavID+MvcBe8gw0F4X23t7YRnWvzLXAHD0P4cqdSh0PPMCzjFyEJBtqf3thWUoLrHOTswky/5NHY+kpHWhDMm8gP5GDQKy9CXL9by9sAw1srMWAeJmjK5XY5pxj7KuMy+gv3W2+ihYWoo+a2/LIOfthUX/Um8Zt4PwRVn1by7rNTJpYV5Af1lnhe9FjlH0OXtbdjy9vbDoX+ot4zYstqdE16qxefyvIuYF9LeuXDeC6DP2trzfni6Ijjf6l3rjWrKpePCGHjfi9KP2Y15AP8zAruvXV5dhuX0Jqp4uKEMAwPoa15JJlvUa9Ze9KJXOZ15APwzE2u+/qgw7ypY8p6cLypCZmPGF62lhcxtp1KFjmBfQD7Mu7fdfUYbD5KhHwLU8XVCGACBj4pWn/s1tlBeOjmVeQB8sBYxwUmeGXWVLvZOnC8pQnCBbGWCz/zXStKOOZ17A8UbYoZOp6u7TBWUIALLVYbf0r2BpYN2C2VTzAo6VtV7MVhkCxWcBQKYLyiLDoQ06X/WXjfojqdrdQ8epXq0zw4A7XQCQrQY7SYnRdWoubgfUPeigHEQcp3KBoAwBAMcScy1PF5QhKSFTwhVJPdE1aj7Zj6hWbr+zkNghKs8CZMq5e7qgDAEAFfe4lgwokhBdo+ZDImh7f0hbuZX4OFVnATLklz0LADJsdyMq4loy8KHV2ghbj3QOjxE/TtUdARm23S87nJ4uKEMAkKne8y8+dk+v3skUnKoO6q1H95P2U/GcgEyF954uKEMAwJfCtWRg1K41EwF1D5MAj5dt+/gWBgCBLAEAiSXR9WleFV8yOpeFxPrgO66WDJjh7B0DgAs8AEgtKwLqVtSPiO4l7a9arY4MAcCS3Px0QQYA72SYnlEuGQ+qUm4ZdlbNIlsRuZdkOn7/6YIMAN4xclekvU+kazKc+T6LjEfJX2MAEMgSALgFUBEe2vZekSJsG43uIR2HHRft75CVAUAgSwDgiV6KVHrB6FyctR7dQzpOpaJABgCBLAGAa3eKZLk/lZ91RPrjO29/h6wMAAIGAMrMAEBbWUekv5/8tk6irgFAIMsUqwGAIgYA2sL9/+fhELf1b5GVAUDAGQBlZgCgLUwAPE+VMzsyBAAWArrAAEARAwBt4Umi5+GUvfb3yChDkGgAcIEBgCIGANoiw1nvs8p0pPw1vEui6+/pWQDwL78/PwDIEr0ZAChiAKAt3AJ4ng//VOPQrnQBQIZOL8uRqwYAilgHQFvQCUX3j47Hu7v9PTIyAAhkCQAsBKQIiTvtvSK1HECcxwBgOwOAC1zDU6TKFiOdywDgPFUCgAznzTwLADJMWzHy5lrOZhavIu19IkUMAM5TJQDIMMhcjjh/uqAM095ZAgD38aq1RMvSSwwAzlMlAMiQKMrOP67l6YIMAN5hqje6Ps2rUplRncsA4Dy//KTGLoAM/e1ydsLTBWWISH71xzw/nqU8tVbpoBGdK8PLfVZZBpEvoa+Lrr+nZbbk6YIyrElkmr7xMA+tESC394gUoRhNdA/peFUKAWWYJVpqJjxdUIYAYFmTyMBpPK2RGNreI1KEgmbRPaTjkV3f/h4Z/fwP5/cvy2zJ0wVlyHzPtM7628+M4vXO3761BoC2ybDHe1ZVqnVmKL1PH8e1PF0QVc6if6mnH7364umCMnAngBaZ7kvlR7AY3Uc6XpVaHWzBi66/p6XuztMFZTqfOAPP9NaCczLa+0O65r//xndHb5UCdbYVR5+hp+XsnacLyrL1LdNUq4mAQpXMYuWR4XC12VQK1DMEiMtyyduLiv6l3j7/Ok8AwJ7S6Bo1F5aD2ntDusYDgfqrchJglsH28l57e2EZpiUyJXFYEliu/+se7gToL8tx8i9hkBtdf2/L4WZvLyzDlPeSmJCBeQDKVJtCdZgI2Bfvad7X698gqyy7RJbreXthmbYmZEEFuOg6NYdMAalqyfA+nUWmGjIvyVBzZz2z+fbCMlUnyiLDj6XzeASw7mVFwH6yDRyvyVAqmtn+5XreXliG+sTZaq7TAbgMMKdKowrl4zJAP5mSx1+SIbmcSoTL9by9sGyRSRZO5c3J6X89ynfH8f7nf51rX0WGMsDrUxPfXliG6W72Ry7XkwX1paNr1bi4D6skFSkv3x3HY/dapaW6DMn269omby8sy7a3bD8mHQFJE9G1akxVzhVXbr47+iAIqFKvI8P9sJ7dfHthWfYnZvwhLewxF87GaO8B6R6+O/ogVyv7aYAEhNG197aut5Pu4jIWdCChx2TAOWTMQ1FdJgP2RTJ7+xtkkeWQuXXS5LMLzFANMOuWjgzJGzpepS1FqiHDDquZkHyZMS8gS07IOr/p2QVmyFrNGsFlqeCk47A+t344pD04g9hfxryADMtBbaL9swvMUAwo86lObusZm6N/HeXVpxYG6i1bXkCGyrI/+e3zJc5nF5ihFkB7gZlkWcPR/hz960jcW+4IOAezyhme7QxbANdFgPDsAjOsURC1ZX4RmwswJkf/Opp1Ac7z04+++p6lmPY36SnDMlBbbv/ZBbL9KfqPesu8p5NjFF3PG4ujf/WSYZl1VjznZ23xzbLNvl0SeXaRWbasZFq3iZjVO5YqZ4mrPrLTXQo4D4M3Dmpqf5ej8Y6Jrqe3dnD97CKRYXSbeS8nzOodR7YDqDQ+dxSdj2qfPWf9siSBtp/52UUiQ6JC5p0AC48Kru+D10Hc2euCmlOGhOs6jhls9cwLyLADgJmn9rqe/R9kSHLLeChQxITA+vgNXf/XGTJ0CrOjr1mXxj1K1oH1s/+DLFMVFUZmXKPrefXxcJLc2f6+0pEIPBmFRvek+jpyFxC/c/R39hYtrT/7P8iSrMDphO21ZZTl+9JjGAl4CJB6IykwQwl2vckHOmI2MMvuuij58dn/AaPa6D/ujZmI9tqycmvPGM7KENbcmH0yCMiB2cD1YTl7YHYh+rt6iwY4z/7PgtFQ9Af0VCk72yh+LNl3oWg8BAEZ1on1ZjZwz63BWQaI0QFJz/7PgmSB6A/oiYehva7MiBozBE7aR9YTxTQu7reZg4Afvvri+//zhzw5EXsNBDL8ptEOALzXgCyFbqq9gMlbsD7AODiXYu/pQOka3nkz7i6ik1wSvykEl2Uw9ehWwSwJgJe21r/XgCx73CtWaGMNOfosqokXUZWEVI1jpjoB0VZcOt0sp68+UkI4S9Gn9gyAxXsNyHLqXdW12CwzKNqPhwWpNwLPkZcVmS19Kdmbf55lVvWed0CWBMBLg+n3GkA0luFLJwJsr62KDHkU2hfJPEdsE5IuYSQ84ruEqfWty2v8eyzHRX9Ob8xW3LI0naXY06U6J+81LDIkLhCEVH3hfvX6Cz+qhKXOw3Nh0SD1xghulKJjl6ajr6Ef4L+L/rze2PG19cTaDLvDLiUAImxElq0LPco0HsGzAsa19zYhaQtGnhxiE92TFdCnPBo80x9kCIQYnL5UM4TPGv23vTFr0V7bImxElrWLqmuvLgGM756RjPQoOpZKxcfogLaOmLcgEMry+a9VD8wyCCShtL22RdiILImA16KXrLLkUOh45Kk8sk1Iulf2QIBr27Pjb9HBZkiSvLRdOMtvc222MmxcZPhyuYb2urLzvO+5PLJNSHoUI2KmozMkyvEsMOLsFRRn2S7IgI+AZH1tWarDXvstwsZFln2YR0aRR/Cs7zm5VVBnYyTK0lTPJG4CD7Y+n5mvlWW7IKN+ArIsM+jXEgARNi6ydGTVXqxZAif1d+s2Ieko3IdU1SNxcM93EsEFHR3v5UyVMrNsF+Qa/l+SWjAvLaGHjYssU9mXyhhm5Pq/eAFUm7XSHOgkWRNmcAdG7gQHERLcln+P/4b+IPu27EzbBTPgt2u/o7WwccGXGf2hvdGhZr/xFq7/C9yzHi0snYOcnAyzAWd7aVkmbFzLUBAIVeqxE3FF1685MXvlkoDUH89d5l0SR9sycA4b17LUta9yLgBTZ9H1a14k4nigkHQOnr0MxYN6oy9qv4tW2LjG2k/0h/fGlor22rIh2nL9X5ewNlllKUsaCbMBJMRFz+WoXlr/R9i4xh7C6A8/Q6aM04jr/3oJS2rZ72NpVFmKB/WwJRE5bGxlKWiQfTug6/97GfsBNUFQOg+D2tFLtW8toBc2trIkUmxZ0ziT6/+Pmmv5xARB6TwjzwZsLaEfNrYoJhH9Jb1l3g7Iizy6Zl33j//25ZPon83ABEHpPCzH/fSj8QZuW2fLw8ZWps6NYKS9vgyyJEtWweh3+S0J6ig6Ev17s2CWzQRB6RxZSgnvZWshsrAxkmV6m46ivbYMsmyXzIqHi9+OabdL096zV/CicImHCknnGGU24JYD9MLGSJYEt6zLAFkKJmVCh0Yd8mvHUbYIEKI/ayZuF5TOU3024JYj9MPGCCOT6C87Q7ZlAF7W0XXOhLVspvUJFB+tGc6a+CxbdS5xNkA6D7MBVUsJ37LDKGy8JMtLOdsyQKbg6F4//V18IEiLtWo6eaJkOnockcnOGlaW7adnYjag/W4kHY9BzO3Lkuf3kV9+8zT6Cj9TK2y8JMt2QKZnMm2fIuMyus5K2Bvbfq6zcU0urbwOzj76yuJB0kkqHSzEu6K9/mvCxksyrc9yLe31naV6BjtT9+1nyoIofPYdAiDoZdal/X4kHe++2YD+tpT/XQsbL8lUFjhTp1V1rWiRdWvlmlUW3yDC37rFR9K+ss8G3DpTGDZek2VKNssyQKYaCfcgr+ORhL2e2E1QOTt3T+4UkM6RdTbgngPzwsZrMo3EMiwDVD8AiLyO9jNlZnLgO3wPVhGUzsG7P9NupXsShsPGazJlvGdYBqieAFixA2HWZcTynfciiMuUFCvN4mev+6DomTwDAUl7fS8JG1+SaQR2y5aHI1Q+Y7rS9H+L66bIUPS5ZsRvmSkxVhpdppw4nv/2+rYIG1+Saf3j1qzHvVWejq42/R8ZYQvmnpgVOzsolmaQ6d1z77s8bHxJpmUAKtC119dL9QTAUdaPs63FnW3ZMmiSoHScTDVKbim3vhY2bpFpK8S9H/5RdKDR9VRQefo/Url051H4PkwSlPZHMnL0zJ2BgP/ed3nYuEWm3QC3HH6wJ0ZZ0fVUMML0f4sZGYsGvY/nw2UBaT+ZTn99pDR+2LgFI67oYs5ABHRGKdvKCYAjjwxZm7NewHN8HwTtvWd9CDxYoqHYFH8/ojMmln/Gb8e/b8CirHiGMr1fHpkBDxu3yjTlekaZVPIPomvJ7pEpoyrIU6n6+xyJ7+TIJTMCy6WTfzQvg/uUP4fRFtfsVkdlkCn579Gl3LBxq0xT4PdUQXpEpi0gtzpryaQ3fiM6kOg7mB27BfY4YIiXD6N7piF7jIqo/8B7xxkCnSVT8h9bodvru0XYuBUPYXRRZ7mnEMK9KicAzrZfvMIhHmfhu7lnZE3wQB7JmVOhBDEVzrHQOOhjonvxLI/2eWHjLTJVZHskGeJWH/25bgLgGfkSZ2MK2a2CMb4XpjW3TCXyPWarwsiyxtbrlx6RKe9rj1nvsPEWmZYBGI306twyZYHegpd3+1lmwYyVJYQv44VyaUTNSCPT1GfEQEBHom85c8arRa5Ne423Chtvke1LoWNur/EITD9Gf392e9w0ldE5uCRwHUHSMrXIVH+13S4EAtY/0N54d0b321n2yOEJG2+V6QVBMNJjBFC1BDDZ8e1nmREdhLsErmOXzwcf1v2OWBKccblL+6NPyfS+2GsmN2y8VbaEOKYB22vcEzdD9Pdmxw3cfpaZ0TlUncnRNuQ3mCioR5H7Et1fZyEHrb3Ge4SN98gUHXEtR84CZCoDeYsRq//tgTyWTMtY2l+vpUGNKVP+y565bmHjPbKtjxxZ7CRbNLjVkd9JdSyNeJbA2KgJYTEh3Srb+37POi5h4z2ISKKLPQsRW3uNe8m08+EWvvyu4/thliT67jQGcncsIqRbZFsm3HMgFzbeK1u28FGZwBUPnDkyIBrNfAmCcy1/GARoq2zLvXvs/V8LG+818lTJWsW95K6B3mae2YA5cx8MArRFtkHt3gnuYeMjso2ciODaa3xUxYpyrv/fZ+zZgDk7/wVBgMtiuiTb6H/P5L9F2PiIbEVW9p4FyJbrsJUvuvuZGzAuZvN61A1RPdlG/0fs4gobH5HtgCDsOQuQ7TCILVz/34fFg8bU8wwR1cBAL9vW4CNms8PGR2XLmtxzFqDiIUCu/+/H2YAxzV4iW89lO+vlqEFc2PiobMmA2Ct6ylbvYAvX//fnbMB4Hj1aVWPIOPo/6gj3sHEPmSongVmJ9hrvUXH0Z7bzMZwNGItJgUK20T8DjaPyVMLGPRCxRB/mTHuMhKkmFv3ZWbFjof0M2pezAeM4ItFKdWTL/MeRS7hh4x6ynZ6EPdZRqpWL3WvmQ9c5GzAOArr299UcsmX+48gZ3LBxLxQtiD7QmR6dBahWA4Btme1n0HGcDajPXTNzyjj633sbeyts3AujomzJFI883Hye6M/MzATA/pj9IvDKdu9ru72OW1UdGSu8HrH1by1s3FO2hArc2yl+/nW9IkBcc/s51AdTd9m2xGqbIxOvlA99QnQfnImApL3OvYWNe8q4peLeh5vp3ejPy8oEwBy4b8gwj34j5bV33XXllW3XGnrM3oaNe8uYWHFP4Y+MOxuuYcdC+xl0DgJO7jmXBerY++Q15ZTxvd4rDyVs3FvG5ApexLcerFCtCJAVAPPhnssYECtmDs3YMu5WQ6/7Lmw8Qsa10FszLH/5Sa0A4OO/+vLKimWBaltKZ3R0FrbOlXFQR0DSXudRwsYjZEyywC3lP6sldJkAmBujj1effuOyQHK3zhSqBpJ0Mz57PXNPwsajZEy0uGWtJeP1X2ICYB10MJxIF/2OOp9bAseUcSmu9+6TsPEoWY/S3RpxZVwrusQEwHp4PlwWyMdnaTxZZ6R77zwJG4+UNeraMs0X/bdZmQBYF8sC1SpOjoxpYg8JGgcj7IzbcrnPeo7+ETYeKeOOALzUYRIgRP9dViYA1kaH47bBPHyexpF1N9cZg7aw8WhZt0FdK7tIwkj032RlAuAYCDx5MRgInMsZtTFkTfxjFvqMWaaw8WhZZwFI8rs0BZM1fyHCDd5ev2ojEKi2DXUsXzxtCSQh0OC6rqyDz7OqToaNPWT9IZgeaq8VlcoAk0jWXr/GwAjGY4fPxxoyARnJZL3XbXWfrIl/vTP/18LGHrLOAjB6jiL8SmWAqVfQXr/GwvOTNYieEc8cozhnB3LKmviHM7eZho29ZH2BRacw8SNF/25GjEza69eYCAQ8cTAXBhFsHWQ2kZlDdxCcL+vyWa+a/5eEjb1knQVAuyaTNXM0ctZ6ks5DjkrG88z1BqNPij3xbH721eVkY+0vc/5Wr5r/l4SNPWWtgEYUz3rrcp1kAUf/XkZn31Q6R6VEVb2ZaeS9whbD9btG+8k89X/26B9hY09kN2fcloF1BbBKiVfMrCzXrXlkTXIax7HvKYo/sZzDbCNBAQFd+xvrNpl3zmR4T4eNvTEtFn1BGSwJGpUSrlxznFOlRFVtxwh2ySngfURg4M6D63gH/iHx80B/0l7zGcLG3riZs9ZAJypnloIHMPrn2XgI0LwMAObCs857iWUEBlEEBjMuJZBTwYwJARLfx3JmS+azW7LM0oaNZ8g8fclNVeWQlgzrSjqHAYDWeG+BaXA6xyVIQKVZwuWauX4+B3ljfK5ra/uZT27NtEsrbDxL5mn2Koez8HC036vmYACgWzFKXgKFdbCwtuQj7GkZsa+RZ7VcxyOJe5kHa3zfzCi3z+5ZwsazUEQja0Lg0QlAe/nw9YPUfq+agwGAZvfB6/4j89T/mUV/ImHjmSptt8so2w2mfhhVRfeENIv/kXjqP+PybNh4JhICM0dw2VF5rP1ONQemVqN7QppB5s4fGbdnh41ncyrzftYinxcZ4NE9IY2OHK0PEi/TZj1OOmzMIHMWZ2buD55bdE9Io8s8a8y1Zd11ETZmkPmcgKzInG2/R83F5TPN5p+Sb9FmRrt9TrMIG7PIXMYxIwMAeUSwZvKjV7k7/+hk2UzCxiwyH+SQEftn2+9Qc3n1aZ1jq6VHsObPtr/on2XAlvbs57KEjZmQ1R59uXofB4m035/m4vOiWfwweXG2rIl/a2FjNpVO4jsT31P73WkuJBtF94Y0kuy5LsxcV0jIDhuz4aVmctPLKkScOh5LQdH9IY3gBwXKslOTo30uMwobM7LK2cuop91+b5qPeQAa1QdBWzaZDvt5SdiYFQfdRF+43uC0rPY703woBhXdH1J12QOAKlP/i7AxK05RqnIq3xky7zdVX+6e0WgyV/pbVJn6X4SNmVkm+DLPAdCC2aDoHtGtHHBkUKHzrzT1vwgbs2O7W/QDzK5a9KnjkDib92htaSzVpv4XYWN2HHriy+19fC/td6V5WUlT6qPq4CtsrMClgPcZAGjN8zSk41Wc+l+EjVXkLxDUd5ai/X4kzwaQjlN16n8RNlbBF/+T5CdB9cKSSPv9SOyccblM9dS4Z6vnXYWNlXz21Xe+4F4jEm2/GwlUiIzuGUn3G6HwWthYjVueDAB0GbMAltKW9jPKyathY0Wzbw00ANA1ltLehvPbEf0zCQTTBNXtM1ZR2FjR7KMcAwC9xFM1ryOfaJ3QxfLiR3/+5inL26BAi08+H6fgWthYFQkZ0Q82A15Q7fchrXmq5mXkEbFtsv3OWgYFcxvtxNWwsTISM6IfbnSjrEnpWATJJs2+jyWS9rvaah0U8Bx6XsmYCPgqb/mLhI2V8QPNGJkbAGgrzowwCHjniFEdsy0EWwQGH74elPB8skwX/f3Kj6BuxEJrYWN1/FCzReEGALqFSYFvkBfRfjdHIzDg+2e2kkJNLiXkN9K6/1rYOILZpjoNAHSr2ctpn9H5v4T3Fl59+s3bAMFlhXONtu6/FjaOYqb6AAYAusesNTSYlm+/iwo+//rvTwECwRsBAn7x8ZsgASZ57mvEdf+1sHEks5yIZgCge82WOMvnbb+DEbGroZ1RWCwBw8IZhveRszHKfv9LwsaRzJIUaACgR8wSBJCU1352vY88qiV4uITZo3VQcQmzLT8ulgC5dVtodWHjaIjiRs/ANQDQo5hWHjlvhs/XfmYdiwFYxSqtoyb9tcLGEY1+aJABgPbAqGe0YJl1cbY+tp9Vx6ra+VfND7lH2DiqeluftgcsBgDaC3vYSSyL7rNq6ID4POvPp+Pxnf/zv9cLJNl10X6WkYWNIxv1aFTqmLefVXoE67zcV9H9lh1JbU75n4P8gYqzSAQsI2f8R8LG0TFajm6Aynjg2s8pPYoXIhnkVbLEWeYjyHfUfw6WkCruKGCZaMRKfy8JG0fHy2G0dU4DAB2JZ4aM7swvd5YtZnyJZ1G1xDTXTI5Y+3lmEDbOgIIaIyUFGgCohyUQyFJwhoCEWh88z+21qp/KVSUfOQiqurBxFiMdisLnaD+fdCRenGdlebNey55+p/rPR0AY/UYVcO3t55lJ2DiTypFrq/1sUg9Mu/McMQV/5BIBuTsUn3GaPw/OU4h+qwoyngXRW9g4m1HqoTsaUgbL+fgk49Fp3zPLxn/HC5pnk90Is2VnZ8e7puIe/8Vs2/0uCRtnVHkaa+HISJmta9NHZk3EqoZ8i6rbQ0HgYkD5Rtg4q8rTWZilfKWkc/COqbjNb0HuiDOl74SNM2NqKLpxKvjB6wfTkqeSjlB9lpSdUqOf7nersHFmVetXr82e2SppP7wTq5eGnrXQz0vCxtkxRVSxjvUaSVROdUl6BJ1m9XchSxYzHO17j7BRY1QLJOo1sUrSPUjMrLzeD3ag8Dnaz6Y3wka9QfQ7Qslgarm3n02SLuGdEb1LKqHzNyfqurBR71Q93KLlsaiSXsKg56cf1T8szc5/m7BRzzGNPkIQ4JKApEuo5jjCe87Of7uwUe8bZSaAh4Pqau3nkzQnZgYrb39es/O/Tdio2ChBAHjgXRKQ5kZnmeVkx0fZ+d8ubNRlBAGjPDB8Dh8YaT7s7eeshui9UJGd/33CRl03yu6ABSWQnQ2Q5kAeUOVa/i07//uFjXrZaEGAswHS+NjeR4cZvQMqsvN/TNiobUYLAvDLT772pCxpMKNs71uz839c2KjtOFyieqnMFtODbheUxjDK9r41O/99hI26DevnowUB+PBPzgZIVY20vW+NYMYByj7CRt1u1CDA2QCpno/+/M0wu5XWWHL9/GtP9dtL2Kj7EASMts62IDfAs7Sl3AjWR30HMcDyHbSvsFH3G+Hs7EuYerOKoJQPHSPbeaPndgSeZXKMsFGPY/08upFHQCTuEZtSDmztGy3Jb43AxlykY4SN2gfrcNENPQpmOpySk85BFvxIBX0iDKTaz639hI3aDw/pyNE5n40RiBG61Ad7+kfM7m8xgGo/u/YVNmpfnB8wWsGgFiMR9+VKxyHI/vXrEfFIlfwifL5PPvdd0kPYqP2NWDAowsiEgKf9/JLuR4c44ra+lnv8+wobdQwi+Bmm7mAgID2OPe8/+92Y2/paDJBY3mi/Ax0nbNSxRjqG8yVk8PpQS7dhxnCm9wQJxeYR9Rc26nij7xBoGQhIL+MZGXk/f8TaIucJG9XH6DsEWiT3MKpx66D0HMtlsywPLnj3mTh8rrBR/RDxz5AcuGYgIL1BQS2q3EXPycjYNWRN//OFjeqLtS9q7UcPysgIBPjcLg1oNmT1j1qz/yXMdFjWN4ewUef4+K/fDr/H9xJeCm7/0eg4m3+2Gb816hi034nOEzbqPEyLjV7e8xpGRQRC7fciVcUMH0m/oxcDu4b1fov75BM26ly8MGbLBG7xsuSl6dYgVcU0NxnuMxTwuYag3vX+nMJG5UAHOOuSwIKRAweCmDCoKujsyG2ZaYfPJST7GsTnFTYqD7YHzbwksCAQoliI24aUEaN9AvaZ1/fX3OJXQ9ioXHi5zLZH+BqmVJkVcPeAzkYnR2A6+0zdGlP+ztjVEDYqJ9YTfdE8x8uGzGqnGdULgScB6MxJfZeY5V9L2Ki8WF+cdf/wNQRGJE5SWKX9zqRHEWASaM5yMM+tmJVzG289YaPye/WpswGXMDJjJGLmsR5Fp2ZC33UE3hb2qSlsVA3OBryMBEqmaz2aWFsxxc9ym8m31zHqN9GvtrBRtTDajR5QPcfMANuSXCZQi46Me8NOfxtH/WMIG1UPU5W+vLZj9MLUrtXJ5kSWOmv6ZvDfhqUQvrf2+1RNYaNqIlGJ6e7owdVlvNQY0fBic2vhuAiSeT7cq38fTi10e99YwkbV5mzAY1gqICDgTAJfeHUxRc1vyG9pEt/9HPWPK2xUfc4G7IdgalkucN0zN/I72CFjcuw+CJ4MgscVNmocZL/7MtwXU8gkjDG6dKvheZjpovwuwZnT+vsi6DVZdnxho8ZDZzX7qWRHIYmMAjHMuBgUHINAlmloOnsD2uNwLzOD0n7/GlPYqDExfe2yQB8GBffju6KzZ5bFynv9cN6I0/1zCRs1Nl6wvljPwVQ13z21Gyg2wzTrjMEBn5nPzhQ+3wVrzXwvbsnrj6RXC/rMKWzUHEhqc1kgD9Zdl1kDpmHpIKsGCKzPc+18Djp4Rpd8NrPx8yDY4rfxIK15hY2ax7JbwJFXDXSgdKRgXzYv8MUSMETa3/2apfNuMS2//vsW3D/LNUXXrHwogOR0v8JGzYdRJh1K9LKQNAaCNAK89vnXnMJGzYtlAbdUSWNhnd+y12qFjZKBgFQfS0Ykm7rOr0jYKC3YwsboIXq5SMqLbZRWrtQ1YaPUIgHMQEDKjy2VHmqlLcJG6RL2bbt1UMrHjl+3Chula1hPZF3RQEA6nx2/7hU2SlsYCEjnsePXo8JG6RYEAuQIUMkuelFJ2gcFu+z4tZewUboXNcWtCCfti1k2qi5avU97ChulR3F8KyOV6GUmaRtm1Zhdcx+/jhA2SnthxEKteA+BkbajLLcn9OloYaO0N0YwbCG0loAUW9b3ZzweWucIG6UjUV3wpx+ZJyCBoJjdNFbtU29ho9QDmcwsD7iNUDPiSF6n+XWmsFHqjRchL8ToRSmNgmD31affmM2vFMJG6SxMg5IrYE0BjYSkPpa+2vtdOlPYKGVAMtQvP3EHgWriOG2CWUf7yipslLJh9PTzP7hEoNyYuWKK30p9qiBslLJiiYDCKAQDbJuKXsJST2Txc/a+2/dUTdgoVUBtAWYG2DvtMoF6YqRPp0/Fy/a+lKoIG6WKPvn826ecAbcV6gis6TO970hfowgbpeo+++q7pxGalQf1CLL3TeTTqMJGaSRM01JpzbwBvYSAkVkklpaszKfRhY3SyJgdYCqX0Z0BwdxYLqIAFYmlZu5rNmGjNJNPv/zu6az1n/3O8wlGR8BH4MeMkAl8ml3YKM2MssScUWBAUB/Z+uwSYR3fDl96LmyU9A4dB2vCS1DgskFe/D78TuwIMXFPui5slHQdW8EICpalA+sQ9MX3vXT2rN+T19H+RpKuCxsl3Y4kMkaeBAUkljlbsI+ffvTV0zQ+iZvkaziyl/YRNkraDxUL6biWGQM6M2cN3iFI4vtgmybfD+v1dvTS8cJGSf3Q2S0zByBLnQ4RUYdZzfJZCHyWz8hnBsHR+ruQ1E/YKCkXitIsneYyk4BlNqFF2dqoM34ERXLWf8e6Qwdr8cs1uqdeyi9slCRJI/v+H/4/9LltVUPYeKIAAAAASUVORK5CYII= Azure App Service Web App GE.P Ellipse false Any Any false false Select True False Azure API App Processes XML Virtual Dynamic 0eb10857-97b7-4c8c-8fdd-c289b7921a7e List false Select True False Azure API App Processes JSON Virtual Dynamic 0945adcf-1cfd-432f-8032-05391ab62336 List false Select Allow access from all networks Allow access from selected networks Azure API App Firewall Settings Virtual Dynamic cb0fca77-c600-4622-b9a5-118107fcd9dd List false Select True False Azure API App CORS Used Virtual Dynamic 3f4a2250-9087-44c1-9fb7-61e9eb1e4df7 List Web API built and hosted on Azure App Service false SE.P.TMCore.AzureAppServiceApiApp Centered on stencil iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAABcRQAAXEUBuS1iLAAAJUJJREFUeF7t3SuAHMfZLuDAwMDAwMAfGgYGhhoaBgYaGAQIBBgECAQYBIgYGAoYCAoYGBgICAgICAgICAiY7NG7OhvL7a9We5mq6ep6wEO+OPZ0z2zX23X93cXFBQCwmLK4Vy/e/Hzx9dM3F199//ri80evLv7yn5cXnz18efG7L58BwDD/9+8Xl23QF9++umyT0jaljdq2W3tWFvfkx1fvLr58f3P//PWL8ksAgL1IMJglDJTFPUjDn3RV3WAA2Lv0VL96u98gUBbPKanpb/99Vd5MAJjJ7796fjlE8O4yB9Tt3rmUxXP57tnbiz/883l5EwFgVn/614uLZ6/31RtQFs/hwZM35U0DgCPIC+7Tl+/eN3l1OzhaWRwtsyirmwUAR5IhgUc/vX3f9NXt4UhlcaTM8K9uEgAcVYa8t+3haGVxlKSg6sYAwJFlOODccwLK4ggZB0lXSHVjAODoMjHwzeWUgLqd7K0sjpDNEqobAgCryF4B2/ZxlLLYW8Y+qhsBAKvJxnfbdnKEstibt38A+CBn2mzbyRHKYk8m/gHAr51jVUBZ7Omv39jfHwA+lrNvtu1lb2Wxl8x2NPMfAH5r9MFBZbGXb37U/Q8AlYc/vHnfVNbtZw9lsZcsd6guGgBWN3oYoCz2YvY/ANQyRL5tN3sqi7388YHxfwBoGTkPoCz2Ul0sAPDByE2BymIPL978XF4sAPDB4+fj9gMoiz3k8J/qYgGAD7Jabtt+9lIWe3jyQgAAgOsIAACwIAEAABYkAADAggQAAFiQAAAACxIAAGBBAgAALEgAAIAFCQAAsCABAAAWJAAAwIIEAABYkAAAAAsSAABgQQIAACxIAACABQkAALAgAQAAFiQAAMCCBAAAWJAAAAALEgAAYEECAAAsSAAAgAUJAACwIAEAABYkAADAggQAAFiQAAAACxIAAGBBAgAALEgAAIAFCQAAsCABAAAWJAAAwIIEAABYkAAAAAsSAABgQQIAACxIAACABQkAALAgAQAAFiQAAMCCBAAAWJAAAAALEgAAYEECAAAsSAAAgAUJAACwIAEAABYkAADAggQAAFiQAAAACxIAAGBBAgAALEgAAIAFCQAAsCABAAAWJAAAwIIEAABYkAAAAAsSAABgQQIAACxIAACABQkAALAgAQAAFiQAAMCCBAAAWJAAAAALEgAAYEECAAAsSADYib/85yUAE/v9V8/L5/teCQA7sb0GAObyp3+9KJ/veyUA7MT2GgCYiwDQVhZ7EAAAGE0AaCuLPQgAAIwmALSVxR4EAABGEwDaymIPAgAAowkAbWWxBwEAgNEEgLay2IMAAMBoAkBbWexBAABgNAGgrSz2IAAAMJoA0FYWexAAABhNAGgriz0IAACMJgC0lcUeBAAARhMA2spiDwIAAKMJAG1lsQcBAIDRBIC2stiDAADAaAJAW1nsQQAAYDQBoK0s9iAAADCaANBWFnsQAAAYTQBoK4s9CAAAjCYAtJXFHgQAAEYTANrKYg8CAACjCQBtZbEHAQCA0QSAtrLYgwAAwGgCQFtZ7EEAAGA0AaCtLPYgAAAwmgDQVhZ7EAAAGE0AaCuLPQgAAIwmALSVxR4EAABGEwDaymIPAgAAowkAbWWxBwEAgNEEgLay2IMAAMBoAkBbWexBAABgNAGgrSz2IAAAMJoA0FYWexAAABhNAGgriz0IAACMJgC0lcUeBAAARhMA2spiDwIAAKMJAG1lsQcBAIDRBIC2stiDAADAaAJAW1nsQQAAYDQBoK0s9iAAADCaANBWFnsQAAAYTQBoK4s9CAAAjCYAtJXFHgQAAEYTANrKYg8CAACjCQBtZbEHAQCA0QSAtrLYgwAAwGgCQFtZ7EEAAGA0AaCtLPYgAAAwmgDQVhZ7EAAAGE0AaCuLPQgAAIwmALSVxR4EAABGEwDaymIPAgAAowkAbWWxBwEAgNEEgLay2IMAAMBoAkBbWexBAABgNAGgrSz2IAAAMJoA0FYWexAAABhNAGgriz0IAACMJgC0lcUeBAAARhMA2spiDwIAAKMJAG1lsQcBAIDRBIC2stiDAADAaAJAW1nsQQAAYDQBoK0s9iAAADCaANBWFnsQAAAYTQBoK4s9CAAAjCYAtJXFHgQAAEYTANrKYg8CAACjCQBtZbEHAQCA0QSAtrLYgwAAwGgCQFtZ7EEAAGA0AaCtLPYgAAAwmgDQVhZ7EAAAGE0AaCuLPQgAAIwmALSVxR4EAABGEwDaymIPAgAAowkAbWWxBwEAgNEEgLay2IMAAMBoAkBbWexBAABgNAGgrSz2IAAAMJoA0FYWexAAABhNAGgriz0IAACMJgC0lcUeBAAARhMA2spiDwIAAKMJAG1lsQcBAIDRBIC2stiDAADAaAJAW1nsQQAAYDQBoK0s9iAAADCaANBWFnsQAAAYTQBoK4s9CAAAjCYAtJXFHgQAAEYTANrKYg8CAACjCQBtZbEHAQCA0QSAtrLYgwAAwGgCQFtZ7EEAAGA0AaCtLPYgAAAwmgDQVhZ7EAAAGE0AaCuLPQgAAIwmALSVxR4EAABGEwDaymIPAgAAowkAbWWxBwEAgNEEgLay2IMAAMBoAkBbWexBAABgNAGgrSz2IAAAMJoA0FYWexAAABhNAGgriz0IAKzkzbuLi/zmP+XV25/f/+P1vwO4PwGgrSz2kIdddbF7tr0G1vXizc+XDfbj528vvvr+9aXPH726+Mt/Xl78379P+4DJAyv/3o/lv5X/Zh4O+RwJGB9/PqAmALSVxR4EAGaQ32n+ANPYpuHd+8Mjn/Fv//11ONCrAL8QANrKYg8CAHuSN/qZGvq7+Ozhh3Dw9dM3Fz++uuwyKO8FHJkA0FYWexAAOKenL99dNoRpEP/44Hn5fR/d7796fvHXb15ehp78PW7vERyRANBWFnsQABjl3c8X/xurz9t9Gr7q++VDL8GX7+9T7pd5BRyRANBWFnsQAOjp2eufL9/w84ZbfZfcTCY0/v271xffPRv3EIKeBIC2stiDAMAp5S0/jVQaqyOO3+/BH/75/OKLb18JA0xNAGgriz0IANxXuqjzx+EtfzxhgFkJAG1lsQcBgLvIm/6jn95eTt6rviPGEwaYiQDQVhZ7EAC4jTQu2fzGBL59EwbYOwGgrSz2IADwKVmql8YkjUr1fbBvedBmIqbVBOyJANBWFnsQAKikiz8/+FNvp8v5JMD94/Hri2y2tP2+YTQBoK0s9iAA8LE0DpnB723/2DKMk56d7fcPowgAbWWxBwGAyIQ+s/jXkw2H8t1vfw/QmwDQVhZ7EADWlW7+jA2vugUvv8hv4MET8wQYRwBoK4s9CADryal02Y5XNz9bWd2ReQKCAL0JAG1lsQcBYB0Z38/D3RI+PiXhML1D6SX6+DcEpyIAtJXFHgSA48uRs1nGV91LuE4e0uYI0IMA0FYWexAAjs9SPu4rv6E8K7a/LbgrAaCtLPYgABxfegCq+wi3la2fc8Lj9jcGtyUAtJXFHgSANdizn1PKXhGZTLr9ncFNCQBtZbEHAWANegE4tUwmzWoSEwW5CwGgrSz2IACsQy8APfz56xd2FeTWBIC2stiDALCOLAO0BJBevtQbwC0IAG1lsQcBYC3ZB6C6p3AKegO4KQGgrSz2IACsJRO39ALQm94APkUAaCuLPQgA69ELwAh6A7iOANBWFnsQANaTfd4dAMQoegOoCABtZbEHAWBN2ee9urfQg94AtgSAtrLYgwCwpryR6QVgtPQGbH+LrEkAaCuLPQgA69ILwDn85T8vHTeMAHCNstiDALCu9AKka7a6x9BTHv7ZnXL7m2QdAkBbWexBAFjbd8/elvcYestyVEcNr0sAaCuLPQgAOC6Yc8qy1O1vkuMTANrKYg8CAHoBODfzAtYjALSVxR4EACIP4OpewyiZj/Ls9eWGAeVvlGMRANrKYg8CAOG4YPbgD/98fpEeqe3vk+MRANrKYg8CAFccF8xefGW/gMMTANrKYg8CAFf0ArAnX3z76v3Psv6tMj8BoK0s9iAA8LHPH+kFYD+EgOMSANrKYg8CAB9zXDB789dvXjpM6IAEgLay2IMAwJbjgtkbIeB4BIC2stiDAMCWXgD26LOH9go4EgGgrSz2IABQWaEXIKchZv+DmO1htKrsWikEHIMA0FYWexAAqMx4XHAa8ixlzBKyyD7z+X3HXbqPsynN1f//Sk5QzJG2+W85Tvk8EgLSS7X9vpiLANBWFnvIQ6262D3bXgN97PW44HQFZ3Z4Gvn8fl+8OW9jkM+Qh0M+T8aqna3QXxqPc3/v3I8A0FYWexAAaNlDL0D++3mrf/DkzWVjv/2Me/b05bvLz22b5T6EgLkJAG1lsQcBgOuM7gXIVrDZiyDd90d7uOdvLcMH6cGorp3bEwLmJQC0lcUeBAA+pXeXdg6BScOYN+btf/uo0ruSPe8z2TLXX90XbsbEwDkJAG1lsQcBgE/pcVxwGr30Lnh7+yDh5+/fvb7sAanuF9ezT8B8BIC2stiDAMBNnKIXIOP5eeN15Ov1MvzhYKbbs23wXASAtrLYgwDATdynFyAP5sfPx/3xHEWWuj384Y0hgltwiuA8BIC2stiDAMBNpZu1+j4q6crOuL712qeRXpMMEdih8dNGPqi5OwGgrSz2IABwUzc5Ljhvq/lDMR7bRwJVhlEEgbbcGz1O+ycAtJXFHgQAbqM1Np05Ahkm2P7z9JFZ7+nuNmmwlvuSwLq9b+yHANBWFnsQALiNbS9A/ogzaW37zzFGgkA2G7It8W/lt2mVyX4JAG1lsQcBgNvKWHQanCzj2/5vnEeGXPJ9CAK/Zo+A/RIA2spiDwIAt5UHqjH+fcr3kqEBcwR+kWGr7X3i/ASAtrLYgwAAx5NVA7dZtXF0eqv2RwBoK4s9CABwXJmYaVjgw8qAlbaanoEA0FYWexAA4NgyZJM9Gaq/pZVkiaqhq/0QANrKYg8CAKwhKzhWP4nQdsH7IQC0lcUeBABYSx5kK+8fMPJBTpsA0FYWexAAYD2ZJNj7mOe9ynwAB1KdnwDQVhZ7EABgTRkPz54O1d/Y0ZkPcH4CQFtZ7EEAgLVlpcCKQwLmA5yXANBWFnsQAIBsmbviBEHbWJ+PANBWFnsQAIBIl/hqywXT8+G8gPMQANrKYg8CAPCxHKW70pBAdkzc3gP6EwDaymIPAgCwlVnysz2g78NQwHgCQFtZ7EEAACrpGl9lqWC2S7YqYCwBoK0s9iAAAC3ZRniVyYH/ePz6/SXX94HTEwDaymIPAgBwnbwZ50jd6m/xSLJBULZL3l4/fQgAbWWxBwEAuImsm6/+Ho8kvR3b66YPAaCtLPYgAAA39dUCywRHPuhXJgC0lcUeBADgNh7+8Kb8uzyKTAh89dbeAL0JAG1lsQcBALitr58eOwTkjITtNXNaAkBbWexBAADu4ujDASYE9iUAtJXFHgQA4K6OfJpg9kDYXi+nIwC0lcUeBADgPj5/dNzVARnq2F4vpyEAtJXFHgQA4D6yT0D206/+Vmdnh8B+BIC2stiDAADcVxrJo24brBegDwGgrSz2IAAAp5Btg//89fFCQK5pe63cnwDQVhZ7EACAU8kBQuk2r/5uZ/bds3EP/1UIAG1lsQcBADilGZ8pn2JFwOkJAG1lsQcBgFVkXXd+75E3uqxj33rw5M3//pkrdoW7vdzL6m93ZnoBTksAaCuLPeQBV13snm2vAa48e/3z/xr3v/zn5aXqN3QX+XdlyVv+3Y9+ensZDrb/fX5xtJUBegFOSwBoK4s9CADM7OnLdxdf/v/GPse5Vr+X3tLQpecgn2X7+VaWSYGzPeQ/RS/A6QgAbWWxBwGAmWSSWQ6jyfn052rwr/OHfz6//Gz5jGkAP/7sK0oo2uP3dFd6AU5HAGgriz0IAMwgXe4zdilnyGD1t8ajHRykF+A0BIC2stiDAMBe5W0/3ftHWFaWa/jH49cXmaOwvc4VpFekui8z0gtwGgJAW1nsQQBgb2Z927+pNIarnTR3tPkAj5/rBbgvAaCtLPYgALAHR3rbv6mEnPz9be/FUc34rGnJ0M72+rgdAaCtLPYgAHBO2UM+y+qONFHstrKCYZUg8MW3xxgKyO/V/hD3IwC0lcUeBADOJZOpVnrj/5Q0jkdvVHJ9WSlRXf9sHBJ0PwJAW1nsQQBgtEyEO+UGPUeSxjFLCLf37EhyfdW1z8ZkwPsRANrKYg8CAKNkIlhmwlffKb/22cOXh54omOurrns2q03mPCUBoK0s9iAAMEL+eHT3317mR2zv5RGk4TzCvI+/f3fM72cEAaCtLPYgANBT3vqPvKRvhAyXHHFuwBF6gzJkk4msH18XNyMAtJXFHgQAeslY/5+/nuuPfK/Se5K/1e09nlkaziP0Co1sGI5EAGgriz0IAPSQ39VRZnvvydGGBLISpLrOmaSHZntdfJoA0FYWexAAOLWjzPLeqwypHKnbObPpq+ucSTay2l4X1xMA2spiDwIAp5JGKZOiqu+M08os+qOcNniEXoDsYrm9Lq4nALSVxR4EAE4hjZG1/WPlzfkob56z9wJkLsP2mrieANBWFnsQALivTPab7Y/5KHLfj3DC4BF6AfIs3V4XbQJAW1nsQQDgPrI8TeN/XplseYQNaWbvBTjqng29CABtZbEHAYC7ypj/ESZwHUEeprMPB8zeC5C/he010SYAtJXFHgQA7soGP/uSPRdmnxg4e6B0QuDNCQBtZbEHAYC7MNt/n7I6YOYlgrP3AoxsJGYnALSVxR4EAG7rwRPr/PcsPTPb72wmM/cC5Ejn7fVQEwDaymIPAgC38ein+WdrryD77G+/u1nM3AuQCZnb66EmALSVxR4EAG4qv5UjnOC2ijSk2+9wBrOfEeCI4JsRANrKYg8CADeRyU329p9Lvq9ZVwbMfFKg5YA3IwC0lcUeBABu4m//fVV+F+zbrJMC8xZdXc8MHA50MwJAW1nsQQDgU46wS9vKZp2YNvNkwKOc09CTANBWFnsQALjO7OOxfJDJm9vvdu++fjrvapNZ51+MJAC0lcUeBACuM/NYLL9IiJttKCDzTmaddGo54KcJAG1lsQcBgJaZx2H5rRmXBs6622R2ZdxeC78mALSVxR4EAFrs8388sy1Rm3nfCfMAricAtJXFHgQAKjOPv9KWVQHb73rPMmwx6/LTpy/tB3AdAaCtLPYgALA189grnzbyQXYKs5478fCHN+8/fn1NCADXKYs9CABsOejn2GabEDjrMtT8HW2vhV8IAG1lsQcBgI95+19Dhni23/1eZSy9uoa9m224ZTQBoK0s9iAA8DHL/tYwWy/AjBNSE6S318EvBIC2stiDAMCVmSdccXsz9QJkf/3qGvbu2evLlFVe0+oEgLay2IMAwBUz/9cyUy/AjM+psCNgmwDQVhZ7EAC4ks1LqvvNcc0yUz1BZca5KV86GbBJAGgriz0IAETWLFf3mmObaaJaTtmrrmHPcorm9jr4QABoK4s9CACEpX/rmmWcesZ5ABlm2V4HHwgAbWWxBwEAk//WNks39axnU9gSuCYAtJXFHmYMAPnMnI7Jf2ub6S11xqCaeRbV393q8rur7tdeCQDAIT1+Pu7hdh+zng7I/AQA4JA+fzTHZDUbVXEuAgBwSFliN8OeAIarOBcBADisPAu2z4e9yVBF9dmhNwEAOKwss9s+H/Ymh1VVnx16EwCAw8pGO9vnwx5Zsso5CADAoc2wZn3GkwGZnwAAHNoMh9dkxUL12aEnAQA4tCyz2z4j9ubBEysBGE8AAA4tG+1snxF7k16K6rNDTwIAcGg5Enr7jNibWc8EYG4CAHB4e98Q6MUbSwEZTwAADm+G44Grzw09CQDA4c2wEqD63NCTAAAcXmbZb58Te2MzIEYTAIDD+/t3+18K+Kd/2QyIsQQA4PC++Hb/RwMLAIwmAACH97f/7j8A5NyC6rNDLwIAcHgzHAokADCaAAAc3mcP9x8A0ktRfXboRQAADi/j69vnxN5knkL12aEXAQA4PAEAfuuQAcC2msDHBAD4rZEbZJXFHrLvd3WxwJoEAPitpy/fvf/p1b/HUyuLvdhVC7hiEiD8VnrLt7/DXspiLzkCtLpgYD2WAcJvbX+DPZXFXqRp4IqNgODXRg+LlcVeMruxumhgPbYChl8bfT5GWezl1VsrAYAPHAYEv5bl8tvfYE9lsSddakB8/XT/xwH//isTlxkjk+SzWu7j319vZbGn/NFXFw+sZeR657uqPjf0cI4hsbLYUxLOHx9I1bC6Z6/HLXe6C3uXMEp6ms7x91AWe9MLAGyfC3tj91JG+cfj88yHKYu9JVnbEwDWlb//7XNhb3585fwS+svbfybIb39/I5TFERwOBOuaYQ+ARz9Ztkx/D56cbzJsWRzFUACs6avv978E8Mv3n7H67HAqnz86bxAuiyPlBlQ3Bjiu0eud78KziZ5yFsboZX9bZXGk3IC/fmNvAFhFxjzP/eC7if/7t3lK9JE5MOca9/9YWRwtD4PsClbdKOBYZjgEKGwCRA/5/b+57ACrf3cjlcVzefiDOQFwdDOM/2dNdvXZ4T72tv11WTynpy/fXY6NVDcPmF/+xrd/93vz+LkVAJxOzpTIqpLt7+zcyuIeZJtQewXAsWS/8+3f+h5ZocQpZNfb9Gxvf197URb3JKkpeyTnwVHdYGAeMxwBHOYkcVeZO5J9LnL8/d4nu5bFvUq3XMYPs2ogEyn0EMBcZlj+F4YhuYl07actiuwbkRfWGVa4XCmL0IPdH9eWh+X2N7FHeYDPuAJghrkV7EtZhF7SCFQPL45vhtn/MWtQnenNk30oi9CL7VXXldP1tr+HPUpQqT7/ns1wuBL7UxahF+ur1zTL5j+Rz1pdw57NcLgS+1MWoScTrNaTZb3b38EezTr+f84T5ZhXWYSeHLO6luypv/0N7NWs4/+zBCz2pSxCT3nLygYZ1YOM45mpcZpx/D9mmV/BvpRF6M1Oa2uY6e0/Zhz/n2V3RfanLEJvegHWMNPbf05om3H8f6YJluxLWYQR/vHYksAjm+3tP2Gluo69y9/R9lrgJsoijKAX4Nhmm5g26/7/ez5shn0rizDKrG9dXG+2dekzh9EfX9kCmLspizBSGovqwcacMo7+6u1cs9JnDqIJLx9fC9xUWYSR0ljMOPmK2oyb0swaQmebZ8G+lEUYzbLAY0iDNNsb6ayz/8MEQO6jLMI5pPGoHnLMIY3ojEfSZhJddT0zePzcDoDcXVmEc8hkpuohxxzSi7P9Tmcw69kUCVzG/7mPsgjnMutSrNXNehrdzKdT2gCI+yqLcC4Zj/3TvwwFzCTfV763j7/HWXw56d7/MWuPC/tRFuGccrBJ9jevHnrsy6zj/ldmDpvpvdheD9xGWYRzS6NiaeD+zfwWOvPa/wSX7fXAbZVF2AO7BO5b5mtsv7OZzDr5L774ds45F+xLWYS9sD/APs066e/K7CtOZjtngX0qi7AnTg3cl8w+n3352czbT2dobNZJl+xLWYS9+fyR8wL24M9fzzvj/8rsb/+W/3EqZRH2Jm+cefBVD0TGyMSzrNDYfjezmf3wqa++t/0vp1EWYY/y5ikEnEe2aT5Ct/MRdpt0/C+nUhZhz+wWONZfv5l/zP/K7L+dDMFsrwnuqizC3uUAF/sE9JflZkdp/I9w7LTd/zilsggzePLinR0DO8o2udt7PrPZV5MkvCTEbK8L7qoswiwyKS3dotUDk7tJqDraOvNsmzv72//sey+wP2URZpLJabPP7N6L7I53hJn+W0eYPGrzH06tLMKMZj7ZbQ/SRX7E8+W/+XH+LaX/+OD5+0uprw/uqizCrHKI0Mx7vJ/DEbv8r6R3KI1ndd0zOdp8DPahLMLs8tZ3hAd/b5nlf4T1/S1HWTLq6F96KItwBGnYDAvUsrHPzOf430Sur7r22dj6l17KIhxJ3p6ymU31cF1NuvsfPFljLXlCTnUPZpPerO21wSmURTiijHOvOiyQJXCZ5LfKOvKjHCOd7+2IEzPZh7IIR5WHad6oVpkomDf+DIOstIHMEXb8u5I5DNvrg1Mpi7CCDA3krfiIvQJp+HNq3JEn+LUc6cAoB//QU1mE1Tz66e0h5gnkGtLDsWq3cUJPdV9mZOc/eiuLsKrsgpcu85l6BXJOfyb2HXEHv9vI2RDV/ZmVt396K4vAh2VkeaPc43yBdHPns2kkPsi4/5GGcrz9M0JZBH4tY+kZJkjvQBrf0ZPMsqQt8xUeP1+3e/86Rxr3j/RmbK8RTq0sAp+WSYQJBXkT//zRq8tgcJ+TCTNxL/+O7M6Xf2cae2/4n3akcf9I2NteI/RQFoH7yVt63uI+Zfv/43ZyD6tGdGZO/WOUsgiwd0cb9w9v/4xUFgH2LD0sRxv3D2//jFQWAfbsiGc7ePtntLIIsFeZJFk1oLPz9s9oZRFgj4424/+Kt3/OoSwC7M1RTvirePvnHMoiwJ7kfIOq4TwCu/5xLmURYC+yIdJRjvfdynWtfoYD51MWAfYgOyEetfGPHOK0vWYYpSwCnFsOY8r2yFXDeQTZNtq5DpxTWQQ4pyN3+1/JNW6vG0YqiwDncuQJf1dyeNT2umG0sghwDhkTrxrMI0nPRs4x2F47jFYWAUb7x+NjbvKzlf0MttcO51AWAUbJRLijbu+7Zcc/9qQsAoyQxv+IB/u0ZGXD9h7AuZRFgN6evf758o24aiiPKL0c23sA51QWAXp69NPbQ6/x3/rTv15cvLl8+a/vB5xDWQToIV3+f/9ujcl+VzLrX9c/e1QWAU4tXf7Z/a5qJI/MrH/2qiwCnFI29zn6zn6Vv/zn5fvLr+8JnFtZBDiFlZb4bf3xgQ1/2LeyCHBfGfdescv/ypMXxv3Zt7IIcFeZ7b7qW/+Vr75//f5W1PcH9qIsAtzFwx/eLLW8r2Lcn1mURYDb+PHVu4vPHq6zo1+LcX9mUhYBbiLd/V9+v9a6/us445+ZlEXYg6wbf/HG29ReZTe/vPFWDeGKcprh9h7BnpVF2IO//ffDRLJMKEsX8/Z/5zyypn+lPfxvIgcabe8T7F1ZhHNLg189ZC2tOo+s50/Dnz3tt9/L6hKGcn8+vl8wg7II55aZ1NXDNjLZ7LtnxlpHSMOWrWx19dcSiEz6Y1ZlEc4pjXv1sN3Kwzdvpdv/P/eXyX1Zy776kr7r5N5knsr23sEsyiKc023Hl/N2mrdUx63eXxq0nNan4b9ezjUwHMXsyiKcy03f/itptNJ4mTB4O+nCToBaedve28oKiO19hNmURTiHjDefqhHKvyeNmvHZWu51GrGrlRbc3IMnjvflGMoinEMa7OqBe19ZPZC5AoYIPhzQk2WVuvjvJj1M23sKsyqLMFreSEfMNM/qggSNVSZvZSOlhJ80+pbw3Y+1/hxNWYTRer39XyfDBNm9Ldu3HqV3IEMe6drPm6oG/3Ss9eeIyiKMlEZrD+vMEwjScOaNeZYegrzhZ+JkgoxJfH2k8Td8xBGVRRgpjVf14D23LPXKkEFCQXoosuzrXA1B/tt5s8/a/Ezcc/LeGOn29+bPUZVFGCVv/2loq4fvXmUCXYJBZGw9jXJkKCEN9ZVMuNtebyREfPzPRd7ir/49kRP28u/XjX8+Gn+OrizCKHt9+2dtCXYaf46uLMIIGb+e7e2f40vjv/2twhGVRRjBJjTsjXX+rKQsQm/Vcb9wTpl7sf2dwpGVRejN2z97ovFnRWUResrs+OohDOfgSGlWVRahp9se9ws9ZAKqU/1YWVmEXu5z3C+cSvZXcGw0qyuL0Iu3f84tGyzZ2hcEAAZKd2v1QIZRsvHU9ncJqyqLcGqjjvuFivF++K2yCKd2juN+IYz3Q60swil5++dcjPdDW1mEU3rwxNs/4xnvh+uVRTiVGY/7ZW45rtl4P3xaWYRTcdwvI+UM/4TO7e8Q+K2yCKfg7Z9R8tZvS1+4nbIIp5CjVauHNZySt364m7II9+W4X3pL71KWl25/e8DNlEW4L8f90tNnD19ePHvtrR/uoyzCfXj7p5e89WdZ6fY3B9xeWYT7yJhs9fCG+/DWD6dVFuGuHPfLqWUXSTP84fTKItyV4345lSztS3d/tpL++DcGnEZZhLvw9s8pZJw/G0jZwx/6KotwFzl4pXqgw019/ujVxYs3xvlhhLIId5E3tq++f33ZdVs93KEl4dGRvTBWWYT7SBBIF65tgPmUzBl5/NwEPziHsginkO1ZBQEqf/76hZn9cGZlEU5JEOBK9ojwxg/7UBahhwSBL79/fbmuu2ocOKYEvy++fWUTH9iZsgg9ZV13un/tGXBsCXpZx++kPtinsgijPH357nLpV9WAMKcEO+P7sH9lEUYzPDC/nAD55IWlfDCLsgjnlEliGTO2n8D+Zf3+wx9088OMyiLsxaOf3l4OEVhBsB8afTiGsgh7k4mDCQPpZq4aJfrS6MPxlEXYs4SBHDz09+9eX/zpX1YS9KLRh2MrizCTrC//+umby01mqoaMm0mYytwLjT6soSzCrD7uHfjsoUBwnSzXy33K0IoT+GA9ZRGOJEvT0kOQyYTZg75qDFeQQJSlllll4ax9oCzCkaXxSyOYo4szqfBoPQVZPpnx+3Tn5xqtzQcqZRFWlG7wNJbZvjZvymlE9zrJMBsmfdzIZ9hDQw/cRlkEfi29BmlgI41tGt3IKYdpiK/cpTfh6o39Y5nQePXfuJJei2ydvP1sAHdRFgGAI7v43f8Df0ALmCKDJIYAAAAASUVORK5CYII= Azure App Service API App GE.P Ellipse false Any Any false false Select True False Azure Mobile App Processes XML Virtual Dynamic 6c7ab607-e310-4d74-aa5b-397d87f02ee9 List false Select True False Azure Mobile App Processes JSON Virtual Dynamic 015d94e3-d54e-4c09-9ce2-2731a0dc86f0 List false Select Allow access from all networks Allow access from selected networks Azure Mobile App Firewall Settings Virtual Dynamic 9b54ed83-3970-475b-97a0-be7641051497 List false Select True False Azure Mobile App CORS Used Virtual Dynamic 6ddbac5e-2e11-4b88-b917-587749ea4721 List Mobile app backend service built and hosted on Azure App Service false SE.P.TMCore.AzureAppServiceMobileApp Centered on stencil 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 Azure App Service Mobile App GE.P Ellipse false Any Any false false Select Generic Web Forms MVC5 MVC6 Web Application Technologies Virtual Dynamic f9960f99-8659-4776-90d7-e454ef832db7 List false Select OnPrem Azure EnvironmentType Virtual Dynamic 80fe9520-5f00-4480-ad47-f2fd75dede82 List false Select Yes No Processes XML Virtual Dynamic df53c172-b70c-412c-9e99-a6fbc10748ee List Web Application false SE.P.TMCore.WebApp Centered on stencil iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAABcRgAAXEYBFJRDQQAANcZJREFUeF7t3a+77UTW7fH+x1u0QCAQCAQCgcAgXoFAtGiBaNGiBaIF4ggEAoFAIDDn7kE/uexTPXbmqpmq1I/1FZ/n3nc2O2etrCQ1UlWp/OX9+/cAAODJ2CIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLQIAgL3ZIgAA2JstAgCAvdkiAADYmy0CAIC92SIAANibLUZ++eWX9+/evQMA4JKffvrppVnxbQ36ssXIP/7xj/d//etfAQC45IsvvnhpVnxbg75sMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjBAAAQAsEgHFsMUIAAAC0QAAYxxYjmQCgvwEA7O2zzz6zbcBbCADj2GJEP7L7Ic+U2wAA7Of//u//bBvwFgLAOLYYIQAAABwCwDpsMUIAAAA4BIB12GKEAAAAcAgA67DFCAEAAOAQANZhixECAADAIQCswxYjBAAAgEMAWIctRggAAACHALAOW4wQAAAADgFgHbYYIQAAABwCwDpsMUIAAAA4BIB12GKEAAAAcAgA67DFCAEAAOAQANZhixECAADAIQCswxYjBAAAgEMAWIctRggAAACHALAOW4wQAAAADgFgHbYYIQAAABwCwDpsMUIAAAA4BIB12GKEAAAAcAgA67DFCAEAAOAQANZhixECAADAIQCswxYjBAAAgEMAWIctRggAAACHALAOW4wQAHAnHW+Yw7t3715+Ev87AUIAWIctRnQhcD/kmXIbwKPc8YQxdO6Xvw/wGgFgHbYYIQDgTu54whgEAEQIAOuwxQgBAHdyxxPGIAAgQgBYhy1GCAC4kzueMAYBABECwDpsMUIAwJ3c8YQxCACIEADWYYsRAgDu5I4njEEAQIQAsA5bjBAAcCd3PGEMAgAiBIB12GKEAIA7ueMJYxAAECEArMMWIwQA3MkdTxiDAIAIAWAdthghAOBO7njCGAQARAgA67DFCAEAd3LHE8YgACBCAFiHLUYIALiTO54wBgEAEQLAOmwxQgDAndzxhDEIAIgQANZhixECAO7kjieMQQBAhACwDluMEABwJ3c8YQwCACIEgHXYYoQAgDu54wljEAAQIQCswxYjBADcyR1PGIMAgAgBYB22GCEA4E7ueMIYBABECADrsMUIAQB3cscTxiAAIEIAWIctRggAuJM7njAGAQARAsA6bDFCAMCd3PGEMQgAiBAA1mGLEQIA7uSOJ4xBAECEALAOW4wQAHAndzxhDAIAIgSAddhihACAO7njCWMQABAhAKzDFiMEANzJHU8YgwCACAFgHbYYIQDgTu54whgEAEQIAOuwxQgBAHdyxxPGIAAgQgBYhy1GCAC4kzueMAYBABECwDpsMUIAwJ3c8YQxCACIEADWYYsRAgDu5I4njEEAQIQAsA5bjBAAcCd3PGEMAgAiBIB12GKEAIA7ueMJYxAAECEArMMWIwQA3MkdTxiDAIAIAWAdthghAOBO7njCGAQARAgA67DFCAEAd3LHE8YgACBCAFiHLUYIALiTO54wBgEAEQLAOmwxQgDAndzxhDEIAIgQANZhixECAO7kjieMQQBAhACwDluMEABwJ3c8YQwCACIEgHXYYoQAgDu54wljEAAQIQCswxYjBADcyR1PGIMAgAgBYB22GCEA4E7ueMIYBABECADrsMUIAQB3cscTxiAAIEIAWIctRggAuJM7njAGAQARAsA6bDFCAMCd3PGEMQgAiBAA1mGLEQIA7uSOJ4xBAECEALAOW4wQAHAndzxhDAIAIgSAddhihACAO7njCWMQABAhAKzDFiMEANzJHU8YgwCACAFgHbYYIQDgTu54whgEAEQIAOuwxQgBAHdyxxPGIAAgQgBYhy1GCAC4kzueMAYBABECwDpsMUIAwJ3c8YQxCACIEADWYYsRAgDu5I4njEEAQOTf//73+08++cQePw4BYBxbjBAAcCd3PGEMAgAe9csvv7z/17/+9f7rr79+//HHH9vjSQgA49hihACAO7njCWMQAJD1008/vf/nP//5/vPPP//gmCIAjGOLEQIA7uSOJ4xBAEAL6h3QsaShAgLAOLYYIQDgTu54whgEALT2888/v/w//n9DX7YYIQDgTu54whgEAGAfthghAOBO7njCGAQAYB+2GCEA4E7ueMIYBABgH7YYIQDgTu54whgEAGAfthghAOBO7njCGASAMX788cf37969+/9++OGHP36LyH/+858P/k7K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 Web Application GE.P Ellipse false Any Any false A representation of Azure IaaS VM Trust Boundary false SE.TB.TMCore.AzureIaaSVMTrustBoundary Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Azure IaaS VM Trust Boundary GE.TB.B BorderBoundary false Any Any false A border representation of Azure Trust Boundary, also referred to as Azure Services Zone false SE.TB.TMCore.AzureTrustBoundary Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Azure Trust Boundary GE.TB.B BorderBoundary false Any Any false A border representation of a Cloud Gateway Zone, also referred to as Cloud Gateway Trust Boundary false SE.TB.TMCore.IoTCloudGatewayZone Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC IoT Cloud Gateway Zone GE.TB.B BorderBoundary false Any Any false A border representation of a Device Zone, also referred to as Device Trust Boundary false SE.TB.TMCore.IoTDeviceZone Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC IoT Device Zone GE.TB.B BorderBoundary false Any Any false A border representation of a Field Gateway Zone, also referred to as Field Gateway Trust Boundary false SE.TB.TMCore.IoTFieldGatewayZone Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC IoT Field Gateway Zone GE.TB.B BorderBoundary false Any Any false A border representation of a Local User Zone, also referred to as Local User Trust Boundary false SE.TB.TMCore.LocalUserTrustBoundary Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Local User Zone GE.TB.B BorderBoundary false Any Any false A representation of an end-users machine trust boundary false SE.TB.TMCore.MachineTrustBoundary Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Machine Trust Boundary GE.TB.B BorderBoundary false Any Any false A border representation of a Remote User Zone, also referred to as Remote User Trust Boundary false SE.TB.TMCore.RemoteUserTrustBoundary Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Remote User Zone GE.TB.B BorderBoundary false Any Any false false Select Azure Stand alone Other clouds Environment Virtual Dynamic 1e5ffbf5-f5bc-4fe5-a73b-dc516d274c82 List A representation of Service Fabric Cluster for stand-alone or cloud environments false SE.TB.TMCore.ServiceFabric Before label iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABGSURBVDhPY/hPIWBQ9Ev6z2jqDccPnr0ESxArzoDMAeEDZy+DFRIrDjeAVDCcDIDyyQajgTioAhGEQekdHx+bGIUGeP8HAJ4fIfJijo6MAAAAAElFTkSuQmCC Service Fabric Trust Boundary GE.TB.B BorderBoundary false Any Any false D Denial of Service Denial of Service happens when the process or a datastore is not able to service incoming requests or perform up to spec false E Elevation of Privileges A user subject gains increased capability or privilege by taking advantage of an implementation bug false I Information Disclosure Information disclosure happens when the information can be read by an unauthorized party false R Repudiation Repudiation threats involve an adversary denying that something happened false S Spoofing Spoofing is when a process or entity is something other than its claimed identity. Examples include substituting a process, a file, website or a network address false T Tampering Tampering is the act of altering the bits. Tampering with a process involves changing bits in the running process. Similarly, Tampering with a data flow involves changing bits on the wire or between two running processes true true Title Title false 22222222-2222-2222-2222-222222222222 0 UserThreatCategory STRIDE Category false 22222222-2222-2222-2222-222222222222 0 UserThreatShortDescription Short Description true 22222222-2222-2222-2222-222222222222 0 UserThreatDescription Description false 22222222-2222-2222-2222-222222222222 0 StateInformation Justification false 22222222-2222-2222-2222-222222222222 0 InteractionString Interaction false 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false 22222222-2222-2222-2222-222222222222 2 Priority Severity false High Medium Low 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design Implementation 22222222-2222-2222-2222-222222222222 1 false D The default cache that Identity Server uses is an in-memory cache that relies on a static store, available process-wide. While this works for native applications, it does not scale for mid tier and backend applications. This can cause availability issues and result in denial of service either by the influence of an adversary or by the large scale of application's users. target is 'SE.P.TMCore.IdSrv' TH112 UserThreatDescription Description false The default cache that Identity Server uses is an in-memory cache that relies on a static store, available process-wide. While this works for native applications, it does not scale for mid tier and backend applications. This can cause availability issues and result in denial of service either by the influence of an adversary or by the large scale of application's users. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Override the default Identity Server token cache with a scalable alternative. Refer: <a href="https://aka.ms/tmtauthn#override-token">https://aka.ms/tmtauthn#override-token</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can leverage the weak scalability of Identity Server's token cache and cause DoS false D An Adversary can launch DoS attack on WCF if Throttling in not enabled target is 'SE.P.TMCore.WCF' TH130 UserThreatDescription Description false An Adversary can launch DoS attack on WCF if Throttling in not enabled 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable WCF's service throttling feature. Refer: <a href="https://aka.ms/tmtconfigmgmt#throttling">https://aka.ms/tmtconfigmgmt#throttling</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Low 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An Adversary can launch DoS attack on WCF if Throttling in not enabled false D Failure to restrict requests originating from third party domains may result in unauthorized actions or access of data source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH26 UserThreatDescription Description false Failure to restrict requests originating from third party domains may result in unauthorized actions or access of data 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that authenticated ASP.NET pages incorporate UI Redressing or clickjacking defences. Refer: <a href="https://aka.ms/tmtconfigmgmt#ui-defenses">https://aka.ms/tmtconfigmgmt#ui-defenses</a> Ensure that only trusted origins are allowed if CORS is enabled on ASP.NET Web Applications. Refer: <a href="https://aka.ms/tmtconfigmgmt#cors-aspnet">https://aka.ms/tmtconfigmgmt#cors-aspnet</a> Mitigate against Cross-Site Request Forgery (CSRF) attacks on ASP.NET web pages. Refer: <a href="https://aka.ms/tmtsmgmt#csrf-asp">https://aka.ms/tmtsmgmt#csrf-asp</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can perform action on behalf of other user due to lack of controls against cross domain requests false D The default cache that ADAL (Active Directory Authentication Library) uses is an in-memory cache that relies on a static store, available process-wide. While this works for native applications, it does not scale for mid tier and backend applications. This can cause availability issues and result in denial of service either by the influence of an adversary or by the large scale of application's users. target is 'SE.P.TMCore.AzureAD' TH91 UserThreatDescription Description false The default cache that ADAL (Active Directory Authentication Library) uses is an in-memory cache that relies on a static store, available process-wide. While this works for native applications, it does not scale for mid tier and backend applications. This can cause availability issues and result in denial of service either by the influence of an adversary or by the large scale of application's users. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Override the default ADAL token cache with a scalable alternative. Refer: <a href="https://aka.ms/tmtauthn#adal-scalable">https://aka.ms/tmtauthn#adal-scalable</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can leverage the weak scalability of token cache and cause DoS false E If there is no restriction at network or host firewall level, to access the database then anyone can attempt to connect to the database from an unauthorized location target is 'SE.DS.TMCore.SQL' TH1 UserThreatDescription Description false If there is no restriction at network or host firewall level, to access the database then anyone can attempt to connect to the database from an unauthorized location 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Configure a Windows Firewall for Database Engine Access. Refer: <a href="https://aka.ms/tmtconfigmgmt#firewall-db">https://aka.ms/tmtconfigmgmt#firewall-db</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to database due to lack of network access protection false E Due to poorly configured account policies, adversary can launch brute force attacks on {target.Name} target is 'SE.DS.TMCore.AzureSQLDB' TH10 UserThreatDescription Description false Due to poorly configured account policies, adversary can launch brute force attacks on {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false When possible use Azure Active Directory Authentication for connecting to SQL Database. Refer: <a href="https://aka.ms/tmt-th10a">https://aka.ms/tmt-th10a</a> Ensure that least-privileged accounts are used to connect to Database server. Refer: <a href="https://aka.ms/tmt-th10b">https://aka.ms/tmt-th10b</a> and <a href="https://aka.ms/tmt-th10c">https://aka.ms/tmt-th10c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure SQL database due to weak account policy false E An adversary may jail break into a mobile device and gain elevated privileges source is 'SE.EI.TMCore.Mobile' TH104 UserThreatDescription Description false An adversary may jail break into a mobile device and gain elevated privileges 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement implicit jailbreak or rooting detection. Refer: <a href="https://aka.ms/tmtauthz#rooting-detection">https://aka.ms/tmtauthz#rooting-detection</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may jail break into a mobile device and gain elevated privileges false E An adversary may gain unauthorized access to Web API due to poor access control checks target is 'SE.P.TMCore.WebAPI' TH110 UserThreatDescription Description false An adversary may gain unauthorized access to Web API due to poor access control checks 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper authorization mechanism in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtauthz#authz-aspnet">https://aka.ms/tmtauthz#authz-aspnet</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to Web API due to poor access control checks false E An adversary can gain unauthorized access to resources in Azure subscription. The adversary can be either a disgruntled internal user, or someone who has stolen the credentials of an Azure subscription. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.AzureTrustBoundary' TH116 UserThreatDescription Description false An adversary can gain unauthorized access to resources in Azure subscription. The adversary can be either a disgruntled internal user, or someone who has stolen the credentials of an Azure subscription. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to resources in an Azure subscription false E An adversary can bypass built in security through Custom Services or ASP.NET Pages which authenticate as a service account target is 'SE.P.TMCore.DynamicsCRM' TH120 UserThreatDescription Description false An adversary can bypass built in security through Custom Services or ASP.NET Pages which authenticate as a service account 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Check service account privileges and check that the custom Services or ASP.NET Pages respect CRM's security. Refer: <a href="https://aka.ms/tmtcommsec#priv-aspnet">https://aka.ms/tmtcommsec#priv-aspnet</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can bypass built in security through Custom Services or ASP.NET Pages which authenticate as a service account false E Misconfiguration of Security Roles, Business Unit or Teams target is 'SE.P.TMCore.DynamicsCRM' TH124 UserThreatDescription Description false Misconfiguration of Security Roles, Business Unit or Teams 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform security modelling and use Field Level Security where required. Refer: <a href="https://aka.ms/tmtauthz#modeling-field">https://aka.ms/tmtauthz#modeling-field</a> Perform security modelling and use Business Units/Teams where required. Refer: <a href="https://aka.ms/tmtdata#modeling-teams">https://aka.ms/tmtdata#modeling-teams</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 Misconfiguration of Security Roles, Business Unit or Teams false E Misuse of the Share feature target is 'SE.P.TMCore.DynamicsCRM' TH125 UserThreatDescription Description false Misuse of the Share feature 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Minimize access to share feature on critical entities. Refer: <a href="https://aka.ms/tmtdata#entities">https://aka.ms/tmtdata#entities</a> Train users on the risks associated with the Dynamics CRM Share feature and good security practices. Refer: <a href="https://aka.ms/tmtdata#good-practices">https://aka.ms/tmtdata#good-practices</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Misuse of the Share feature false E Users with CRM Portal access are inadvertently given access to sensitive records and data target is 'SE.P.TMCore.DynamicsCRMPortal' TH128 UserThreatDescription Description false Users with CRM Portal access are inadvertently given access to sensitive records and data 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform security modelling of portal accounts keeping in mind that the security model for the portal differs from the rest of CRM. Refer: <a href="https://aka.ms/tmtauthz#portal-security">https://aka.ms/tmtauthz#portal-security</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 Users with CRM Portal access are inadvertently given access to sensitive records and data false E An adversary may gain unauthorized access to data on host machines flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH135 UserThreatDescription Description false An adversary may gain unauthorized access to data on host machines 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that proper ACLs are configured to restrict unauthorized access to data on the device. Refer: <a href="https://aka.ms/tmtauthz#acl-restricted-access">https://aka.ms/tmtauthz#acl-restricted-access</a> Ensure that sensitive user-specific application content is stored in user-profile directory. Refer: <a href="https://aka.ms/tmtauthz#sensitive-directory">https://aka.ms/tmtauthz#sensitive-directory</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to data on host machines false E If an application runs under a high-privileged account, it may provide an opportunity for an adversary to gain elevated privileges and execute malicious code on host machines. E.g., If the developed executable runs under the logged-in user's identity and the user has admin rights on the machine, the executable will be running with administrator privileges. Any unnoticed vulnerability in the application could be used by adversaries to execute malicious code on the host machines that run the application. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH136 UserThreatDescription Description false If an application runs under a high-privileged account, it may provide an opportunity for an adversary to gain elevated privileges and execute malicious code on host machines. E.g., If the developed executable runs under the logged-in user's identity and the user has admin rights on the machine, the executable will be running with administrator privileges. Any unnoticed vulnerability in the application could be used by adversaries to execute malicious code on the host machines that run the application. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that the deployed applications are run with least privileges. . Refer: <a href="https://aka.ms/tmtauthz#deployed-privileges">https://aka.ms/tmtauthz#deployed-privileges</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain elevated privileges and execute malicious code on host machines false E An adversary can gain unauthorized access to {target.Name} due to weak access control restrictions target is 'SE.DS.TMCore.AzureStorage' TH17 UserThreatDescription Description false An adversary can gain unauthorized access to {target.Name} due to weak access control restrictions 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Grant limited access to objects in Azure Storage using SAS or SAP. It is recommended to scope SAS and SAP to permit only the necessary permissions over a short period of time. Refer: <a href="https://aka.ms/tmt-th17a">https://aka.ms/tmt-th17a</a> and <a href="https://aka.ms/tmt-th17b">https://aka.ms/tmt-th17b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to {target.Name} due to weak access control restrictions false E Due to poorly configured account policies, adversary can launch brute force attacks on {target.Name} target is 'SE.DS.TMCore.SQL' and target.6047e74b-a4e1-4e5b-873e-3f7d8658d6b3 is 'OnPrem' TH2 UserThreatDescription Description false Due to poorly configured account policies, adversary can launch brute force attacks on {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false When possible, use Windows Authentication for connecting to SQL Server. Refer: <a href="https://aka.ms/tmtauthn#win-authn-sql">https://aka.ms/tmtauthn#win-authn-sql</a> When SQL authentication mode is used, ensure that account and password policy are enforced on SQL server. Refer: <a href="https://aka.ms/tmtauthn#authn-account-pword">https://aka.ms/tmtauthn#authn-account-pword</a> Do not use SQL Authentication in contained databases. Refer: <a href="https://aka.ms/tmtauthn#autn-contained-db">https://aka.ms/tmtauthn#autn-contained-db</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to SQL database due to weak account policy false E Failure to restrict the privileges and access rights to the application to individuals who require the privileges or access rights may result into unauthorized use of data due to inappropriate rights settings and validation. source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH27 UserThreatDescription Description false Failure to restrict the privileges and access rights to the application to individuals who require the privileges or access rights may result into unauthorized use of data due to inappropriate rights settings and validation. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that administrative interfaces are appropriately locked down. Refer: <a href="https://aka.ms/tmtauthn#admin-interface-lockdown">https://aka.ms/tmtauthn#admin-interface-lockdown</a> Enforce sequential step order when processing business logic flows. Refer: <a href="https://aka.ms/tmtauthz#sequential-logic">https://aka.ms/tmtauthz#sequential-logic</a> Ensure that proper authorization is in place and principle of least privileges is followed. Refer: <a href="https://aka.ms/tmtauthz#principle-least-privilege">https://aka.ms/tmtauthz#principle-least-privilege</a> Business logic and resource access authorization decisions should not be based on incoming request parameters. Refer: <a href="https://aka.ms/tmtauthz#logic-request-parameters">https://aka.ms/tmtauthz#logic-request-parameters</a> Ensure that content and resources are not enumerable or accessible via forceful browsing. Refer: <a href="https://aka.ms/tmtauthz#enumerable-browsing">https://aka.ms/tmtauthz#enumerable-browsing</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may bypass critical steps or perform actions on behalf of other users (victims) due to improper validation logic false E An adversary may gain elevated privileges on the functionality of cloud gateway if SAS tokens with over-privileged permissions are used to connect (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and target is 'SE.GP.TMCore.IoTCloudGateway' TH37 UserThreatDescription Description false An adversary may gain elevated privileges on the functionality of cloud gateway if SAS tokens with over-privileged permissions are used to connect 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Connect to Cloud Gateway using least-privileged tokens. Refer: <a href="https://aka.ms/tmtauthz#cloud-least-privileged">https://aka.ms/tmtauthz#cloud-least-privileged</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain elevated privileges on Cloud Gateway false E Database access should be configured with roles and privilege based on least privilege and need to know principle. target is 'SE.DS.TMCore.SQL' TH4 UserThreatDescription Description false Database access should be configured with roles and privilege based on least privilege and need to know principle. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that least-privileged accounts are used to connect to Database server. Refer: <a href="https://aka.ms/tmtauthz#privileged-server">https://aka.ms/tmtauthz#privileged-server</a> Implement Row Level Security RLS to prevent tenants from accessing each others data. Refer: <a href="https://aka.ms/tmtauthz#rls-tenants">https://aka.ms/tmtauthz#rls-tenants</a> Sysadmin role should only have valid necessary users . Refer: <a href="https://aka.ms/tmtauthz#sysadmin-users">https://aka.ms/tmtauthz#sysadmin-users</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to database due to loose authorization rules false E An adversary may get access to admin interface or privileged services like WiFi, SSH, File shares, FTP etc., on a device source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway' TH41 UserThreatDescription Description false An adversary may get access to admin interface or privileged services like WiFi, SSH, File shares, FTP etc., on a device 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that all admin interfaces are secured with strong credentials. Refer: <a href="https://aka.ms/tmtconfigmgmt#admin-strong">https://aka.ms/tmtconfigmgmt#admin-strong</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to privileged features on {source.Name} false E An adversary may leverage insufficient authorization checks on the device and execute unauthorized and sensitive commands remotely. (source is 'SE.GP.TMCore.IoTFieldGateway' or source is 'SE.GP.TMCore.IoTCloudGateway') and target is 'SE.EI.TMCore.IoTdevice' TH42 UserThreatDescription Description false An adversary may leverage insufficient authorization checks on the device and execute unauthorized and sensitive commands remotely. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform authorization checks in the device if it supports various actions that require different permission levels. Refer: <a href="https://aka.ms/tmtauthz#device-permission">https://aka.ms/tmtauthz#device-permission</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may trigger unauthorized commands on the device false E An adversary may use unused features or services on {target.Name} such as UI, USB port etc. Unused features increase the attack surface and serve as additional entry points for the adversary source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway' TH48 UserThreatDescription Description false An adversary may use unused features or services on {target.Name} such as UI, USB port etc. Unused features increase the attack surface and serve as additional entry points for the adversary 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that only the minimum services/features are enabled on devices. Refer: <a href="https://aka.ms/tmtconfigmgmt#min-enable">https://aka.ms/tmtconfigmgmt#min-enable</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may exploit unused services or features in {target.Name} false E An adversary may leverage insufficient authorization checks on the field gateway and execute unauthorized and sensitive commands remotely (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTCloudGateway') and target is 'SE.GP.TMCore.IoTFieldGateway' TH51 UserThreatDescription Description false An adversary may leverage insufficient authorization checks on the field gateway and execute unauthorized and sensitive commands remotely 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform authorization checks in the Field Gateway if it supports various actions that require different permission levels. Refer: <a href="https://aka.ms/tmtauthz#field-permission">https://aka.ms/tmtauthz#field-permission</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may trigger unauthorized commands on the field gateway false E A compromised access key may permit an adversary to have over-privileged access to an {target.Name} instance target is 'SE.P.TMCore.AzureDocumentDB' TH54 UserThreatDescription Description false A compromised access key may permit an adversary to have over-privileged access to an {target.Name} instance 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use resource (SAS like) tokens (derived using master keys) to connect to Cosmos DB instances whenever possible. Scope the resource tokens to permit only the privileges necessary (e.g. read-only). Store secrets in a secret storage solution (e.g. Azure Key Vault). Refer: <a href="https://aka.ms/tmt-th54">https://aka.ms/tmt-th54</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 A compromised access key may permit an adversary to have more access than intended to an {target.Name} instance false I An adversary may read content stored in {target.Name} instances through SQL injection based attacks target is 'SE.P.TMCore.AzureDocumentDB' and target.d456e645-5642-41ad-857f-951af1a3d968 is 'SQL' TH56 UserThreatDescription Description false An adversary may read content stored in {target.Name} instances through SQL injection based attacks 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use parametrized SQL queries to query Cosmos DB instances. Refer: <a href="https://aka.ms/tmt-th56">https://aka.ms/tmt-th56</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may read content stored in {target.Name} instances through SQL injection based attacks false E An adversary can gain unauthorized access to Azure Cosmos DB instances due to weak network security configuration target is 'SE.P.TMCore.AzureDocumentDB' and not target.b646c6da-6894-432a-8925-646ae6d1d0ea is 'Allow access from selected networks (excluding Azure)' TH57 UserThreatDescription Description false An adversary can gain unauthorized access to Azure Cosmos DB instances due to weak network security configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure Cosmos DB instances by configuring account-level firewall rules to only permit connections from selected IP addresses where possible. Refer: <a href="https://aka.ms/tmt-th57">https://aka.ms/tmt-th57</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure Cosmos DB instances due to weak network security configuration false E An adversary may leverage insufficient authorization checks on the Event Hub (SAS token) and be able to listen (Read) to the Events and manage (change) configurations of the Event Hub target is 'SE.P.TMCore.AzureEventHub' TH59 UserThreatDescription Description false An adversary may leverage insufficient authorization checks on the Event Hub (SAS token) and be able to listen (Read) to the Events and manage (change) configurations of the Event Hub 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use a send-only permissions SAS Key for generating device tokens. Refer: <a href="https://aka.ms/tmtauthz#sendonly-sas">https://aka.ms/tmtauthz#sendonly-sas</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may exploit the permissions provisioned to the device token to gain elevated privileges false E If a token that grants direct access to the event hub is given to the device, it would be able to send messages directly to the eventhub without being subjected to throttling. It further exempts such a device from being able to be blacklisted. target is 'SE.P.TMCore.AzureEventHub' TH60 UserThreatDescription Description false If a token that grants direct access to the event hub is given to the device, it would be able to send messages directly to the eventhub without being subjected to throttling. It further exempts such a device from being able to be blacklisted. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Do not use access tokens that provide direct access to the Event Hub. Refer: <a href="https://aka.ms/tmtauthz#access-tokens-hub">https://aka.ms/tmtauthz#access-tokens-hub</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary bypass the secure functionalities of the Event Hub if devices authenticate with tokens that give direct access to Event Hub false E An adversary may gain elevated privileges on the functionality of Event Hub if SAS keys with over-privileged permissions are used to connect target is 'SE.P.TMCore.AzureEventHub' TH62 UserThreatDescription Description false An adversary may gain elevated privileges on the functionality of Event Hub if SAS keys with over-privileged permissions are used to connect 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Connect to Event Hub using SAS keys that have the minimum permissions required. Refer: <a href="https://aka.ms/tmtauthz#sas-minimum-permissions">https://aka.ms/tmtauthz#sas-minimum-permissions</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain elevated privileges on Event Hub false E An adversary can gain unauthorized access to all entities in {target.Name} tables target is 'SE.DS.TMCore.AzureStorage' and target.b3ece90f-c578-4a48-b4d4-89d97614e0d2 is 'Table' TH64 UserThreatDescription Description false An adversary can gain unauthorized access to all entities in {target.Name} tables 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Grant fine-grained permission on a range of entities in Azure Table Storage. Refer: <a href="https://aka.ms/tmt-th64">https://aka.ms/tmt-th64</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to all entities in {target.Name}'s tables false E An adversary can gain unauthorized access to {target.Name} instances due to weak network configuration target is 'SE.DS.TMCore.AzureStorage' and target.eb012c7c-9201-40d2-989f-2aad423895a5 is 'Allow access from selective networks' target is 'SE.DS.TMCore.AzureStorage' TH140 UserThreatDescription Description false An adversary can gain unauthorized access to {target.Name} instances due to weak network configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to restrict access to Azure Storage instances to selected networks where possible. <a href="https://aka.ms/tmt-th140">https://aka.ms/tmt-th140</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to {target.Name} instances due to weak network configuration false E An adversary may gain unauthorized access to {target.Name} account in a subscription target is 'SE.DS.TMCore.AzureStorage' TH67 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} account in a subscription 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Assign the appropriate Role-Based Access Control (RBAC) role to users, groups and applications at the right scope for the Azure Storage instance. Refer: <a href="https://aka.ms/tmt-th67">https://aka.ms/tmt-th67</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} account in a subscription false E If RBAC is not implemented on Service Fabric, clients may have over-privileged access on the fabric's cluster operations flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH71 UserThreatDescription Description false If RBAC is not implemented on Service Fabric, clients may have over-privileged access on the fabric's cluster operations 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict client's access to cluster operations using RBAC. Refer: <a href="https://aka.ms/tmtauthz#cluster-rbac">https://aka.ms/tmtauthz#cluster-rbac</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to Service Fabric cluster operations false E An adversary may gain unauthorized access to {target.Name} if connection is insecure (source is 'SE.P.TMCore.AzureDataFactory') and source.afe0080c-37dc-4d53-9edd-d0a163856bdc is 'Only Azure' (source is 'SE.P.TMCore.AzureDataFactory') TH90 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} if connection is insecure 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use Data management gateway while connecting On Prem SQL Server to Azure Data Factory. Refer: <a href="https://aka.ms/tmtcommsec#sqlserver-factory">https://aka.ms/tmtcommsec#sqlserver-factory</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} if connection is insecure false I An adversary can reverse weakly encrypted or hashed content target is 'SE.P.TMCore.WebApp' TH101 UserThreatDescription Description false An adversary can reverse weakly encrypted or hashed content 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Do not expose security details in error messages. Refer: <a href="https://aka.ms/tmtxmgmt#messages">https://aka.ms/tmtxmgmt#messages</a> Implement Default error handling page. Refer: <a href="https://aka.ms/tmtxmgmt#default">https://aka.ms/tmtxmgmt#default</a> Set Deployment Method to Retail in IIS. Refer: <a href="https://aka.ms/tmtxmgmt#deployment">https://aka.ms/tmtxmgmt#deployment</a> Use only approved symmetric block ciphers and key lengths. Refer: <a href="https://aka.ms/tmtcrypto#cipher-length">https://aka.ms/tmtcrypto#cipher-length</a> Use approved block cipher modes and initialization vectors for symmetric ciphers. Refer: <a href="https://aka.ms/tmtcrypto#vector-ciphers">https://aka.ms/tmtcrypto#vector-ciphers</a> Use approved asymmetric algorithms, key lengths, and padding. Refer: <a href="https://aka.ms/tmtcrypto#padding">https://aka.ms/tmtcrypto#padding</a> Use approved random number generators. Refer: <a href="https://aka.ms/tmtcrypto#numgen">https://aka.ms/tmtcrypto#numgen</a> Do not use symmetric stream ciphers. Refer: <a href="https://aka.ms/tmtcrypto#stream-ciphers">https://aka.ms/tmtcrypto#stream-ciphers</a> Use approved MAC/HMAC/keyed hash algorithms. Refer: <a href="https://aka.ms/tmtcrypto#mac-hash">https://aka.ms/tmtcrypto#mac-hash</a> Use only approved cryptographic hash functions. Refer: <a href="https://aka.ms/tmtcrypto#hash-functions">https://aka.ms/tmtcrypto#hash-functions</a> Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections. Refer: <a href="https://aka.ms/tmtcommsec#x509-ssltls">https://aka.ms/tmtcommsec#x509-ssltls</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can reverse weakly encrypted or hashed content false I An adversary may gain access to sensitive data from log files target is 'SE.P.TMCore.WebApp' TH102 UserThreatDescription Description false An adversary may gain access to sensitive data from log files 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that the application does not log sensitive user data. Refer: <a href="https://aka.ms/tmtauditlog#log-sensitive-data">https://aka.ms/tmtauditlog#log-sensitive-data</a> Ensure that Audit and Log Files have Restricted Access. Refer: <a href="https://aka.ms/tmtauditlog#log-restricted-access">https://aka.ms/tmtauditlog#log-restricted-access</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to sensitive data from log files false I An adversary may gain access to unmasked sensitive data such as credit card numbers source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH103 UserThreatDescription Description false An adversary may gain access to unmasked sensitive data such as credit card numbers 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that sensitive data displayed on the user screen is masked. Refer: <a href="https://aka.ms/tmtdata#data-mask">https://aka.ms/tmtdata#data-mask</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to unmasked sensitive data such as credit card numbers false I An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details target is 'SE.P.TMCore.WebAPI' TH106 UserThreatDescription Description false An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that proper exception handling is done in ASP.NET Web API. Refer: <a href="https://aka.ms/tmtxmgmt#exception">https://aka.ms/tmtxmgmt#exception</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive information from an API through error messages false I An adversary may retrieve sensitive data (e.g, auth tokens) persisted in browser storage source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebAPI' TH107 UserThreatDescription Description false An adversary may retrieve sensitive data (e.g, auth tokens) persisted in browser storage 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that sensitive data relevant to Web API is not stored in browser's storage. Refer: <a href="https://aka.ms/tmtdata#api-browser">https://aka.ms/tmtdata#api-browser</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may retrieve sensitive data (e.g, auth tokens) persisted in browser storage false I An adversary may sniff the data sent from Identity Server. This can lead to a compromise of the tokens issued by the Identity Server target is 'SE.P.TMCore.IdSrv' TH115 UserThreatDescription Description false An adversary may sniff the data sent from Identity Server. This can lead to a compromise of the tokens issued by the Identity Server 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that all traffic to Identity Server is over HTTPS connection. Refer: <a href="https://aka.ms/tmtcommsec#identity-https">https://aka.ms/tmtcommsec#identity-https</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may sniff the data sent from Identity Server false I Sensitive attributes or fields on an Entity can be inadvertently disclosed target is 'SE.P.TMCore.DynamicsCRM' TH119 UserThreatDescription Description false Sensitive attributes or fields on an Entity can be inadvertently disclosed 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform security modelling and use Field Level Security where required. Refer: <a href="https://aka.ms/tmtauthz#modeling-field">https://aka.ms/tmtauthz#modeling-field</a> Perform security modelling and use Business Units/Teams where required. Refer: <a href="https://aka.ms/tmtdata#modeling-teams">https://aka.ms/tmtdata#modeling-teams</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 Sensitive attributes or fields on an Entity can be inadvertently disclosed false I Sensitive Entity records (containing PII, HBI information) can be inadvertently disclosed to users who should not have access target is 'SE.P.TMCore.DynamicsCRM' TH121 UserThreatDescription Description false Sensitive Entity records (containing PII, HBI information) can be inadvertently disclosed to users who should not have access 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Perform security modelling and use Field Level Security where required. Refer: <a href="https://aka.ms/tmtauthz#modeling-field">https://aka.ms/tmtauthz#modeling-field</a> Perform security modelling and use Business Units/Teams where required. Refer: <a href="https://aka.ms/tmtdata#modeling-teams">https://aka.ms/tmtdata#modeling-teams</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 Sensitive Entity records (containing PII, HBI information) can be inadvertently disclosed to users who should not have access false I If a mobile device containing cached customer data in the CRM Mobile Client is lost the data could be disclosed if the device is not secured target is 'SE.EI.TMCore.DynamicsCRMMobileClient' TH122 UserThreatDescription Description false If a mobile device containing cached customer data in the CRM Mobile Client is lost the data could be disclosed if the device is not secured 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure a device management policy is in place that requires a use PIN and allows remote wiping. Refer: <a href="https://aka.ms/tmtcrypto#pin-remote">https://aka.ms/tmtcrypto#pin-remote</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 If a mobile device containing cached customer data in the CRM Mobile Client is lost the data could be disclosed if the device is not secured false I If a laptop with the Dynamics CRM Outlook Client and offline data is lost the data could be disclosed if the device is not secured target is 'SE.EI.TMCore.DynamicsCRMOutlookClient' TH123 UserThreatDescription Description false If a laptop with the Dynamics CRM Outlook Client and offline data is lost the data could be disclosed if the device is not secured 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure a device management policy is in place that requires a PIN/password/auto lock and encrypts all data (e.g. Bitlocker). Refer: <a href="https://aka.ms/tmtcrypto#bitlocker">https://aka.ms/tmtcrypto#bitlocker</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 If a laptop with the Dynamics CRM Outlook Client and offline data is lost the data could be disclosed if the device is not secured false I Secure system configuration information exposed via JScript target is 'SE.P.TMCore.DynamicsCRM' TH126 UserThreatDescription Description false Secure system configuration information exposed via JScript 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Include a development standards rule proscribing showing config details in exception management outside development. Refer: <a href="https://aka.ms/tmtdata#exception-mgmt">https://aka.ms/tmtdata#exception-mgmt</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Secure system configuration information exposed via JScript false I Secure system configuration information exposed when exception is thrown. target is 'SE.P.TMCore.DynamicsCRM' TH127 UserThreatDescription Description false Secure system configuration information exposed when exception is thrown. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Include a development standards rule proscribing showing config details in exception management outside development. Refer: <a href="https://aka.ms/tmtdata#exception-mgmt">https://aka.ms/tmtdata#exception-mgmt</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Secure system configuration information exposed when a DotNET exception is thrown false I An Adversary can sniff communication channel and steal the secrets. target is 'SE.P.TMCore.WCF' TH131 UserThreatDescription Description false An Adversary can sniff communication channel and steal the secrets. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable HTTPS - Secure Transport channel. Refer: <a href="https://aka.ms/tmtcommsec#https-transport">https://aka.ms/tmtcommsec#https-transport</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An Adversary can sniff communication channel and steal the secrets false I An adversary may gain access to sensitive data stored on host machines flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH139 UserThreatDescription Description false An adversary may gain access to sensitive data stored on host machines 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Consider using Encrypted File System (EFS) is used to protect confidential user-specific data. Refer: <a href="https://aka.ms/tmtdata#efs-user">https://aka.ms/tmtdata#efs-user</a> Ensure that sensitive data stored by the application on the file system is encrypted. Refer: <a href="https://aka.ms/tmtdata#filesystem">https://aka.ms/tmtdata#filesystem</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to sensitive data stored on host machines false I An adversary can read sensitive data by sniffing traffic to {target.Name} target is 'SE.P.TMCore.AzureRedis' and not target.866e2e37-a089-45bc-9576-20fc95304b82 is 'True' TH14 UserThreatDescription Description false An adversary can read sensitive data by sniffing traffic to {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that communication to {target.Name} is over SSL/TLS. Configure {target.Name} such that only connections over SSL/TLS are permitted. Also ensure that connection string(s) used by clients have the ssl flag set to true (I.e. ssl=true). Refer: <a href="https://aka.ms/tmt-th14">https://aka.ms/tmt-th14</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can read sensitive data by sniffing traffic to {target.Name} false I An adversary can gain access to sensitive data by sniffing traffic from Mobile client source is 'SE.EI.TMCore.Mobile' TH15 UserThreatDescription Description false An adversary can gain access to sensitive data by sniffing traffic from Mobile client 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement Certificate Pinning. Refer: <a href="https://aka.ms/tmtcommsec#cert-pinning">https://aka.ms/tmtcommsec#cert-pinning</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by sniffing traffic from Mobile client false I An adversary can gain access to sensitive data by sniffing traffic to Web API target is 'SE.P.TMCore.WebAPI' TH16 UserThreatDescription Description false An adversary can gain access to sensitive data by sniffing traffic to Web API 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Force all traffic to Web APIs over HTTPS connection. Refer: <a href="https://aka.ms/tmtcommsec#webapi-https">https://aka.ms/tmtcommsec#webapi-https</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by sniffing traffic to Web API false I An adversary can read sensitive data by sniffing unencrypted SMB traffic to {target.Name} target is 'SE.DS.TMCore.AzureStorage' and target.b3ece90f-c578-4a48-b4d4-89d97614e0d2 is 'File' TH19 UserThreatDescription Description false An adversary can read sensitive data by sniffing unencrypted SMB traffic to {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use SMB 3.0 compatible client to ensure in-transit data encryption to Azure File Shares. Refer: <a href="https://aka.ms/tmt-th19a">https://aka.ms/tmt-th19a</a> and <a href="https://aka.ms/tmt-th19b">https://aka.ms/tmt-th19b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can read sensitive data by sniffing unencrypted SMB traffic to {target.Name} false I If application saves sensitive PII or HBI data on phone SD card or local storage, then it ay get stolen. source is 'SE.EI.TMCore.Mobile' TH31 UserThreatDescription Description false If application saves sensitive PII or HBI data on phone SD card or local storage, then it ay get stolen. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt sensitive or PII data written to phones local storage. Refer: <a href="https://aka.ms/tmtdata#pii-phones">https://aka.ms/tmtdata#pii-phones</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain sensitive data from mobile device false I An adversary may eavesdrop and interfere with the communication between {source.Name} and {target.Name} and possibly tamper the data that is transmitted. (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and target is 'SE.GP.TMCore.IoTCloudGateway' TH38 UserThreatDescription Description false An adversary may eavesdrop and interfere with the communication between {source.Name} and {target.Name} and possibly tamper the data that is transmitted. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Secure Device to Cloud Gateway communication using SSL/TLS. Refer: <a href="https://aka.ms/tmtcommsec#device-cloud">https://aka.ms/tmtcommsec#device-cloud</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may eavesdrop the traffic to cloud gateway false I An adversary can eaves drop on communication between application server and {target.Name} server, due to clear text communication protocol usage. (target is 'SE.DS.TMCore.SQL' and source is 'SE.P.TMCore.WebApp') TH5 UserThreatDescription Description false An adversary can eaves drop on communication between application server and {target.Name} server, due to clear text communication protocol usage. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure SQL server connection encryption and certificate validation. Refer: <a href="https://aka.ms/tmtcommsec#sqlserver-validation">https://aka.ms/tmtcommsec#sqlserver-validation</a> Force Encrypted communication to SQL server. Refer: <a href="https://aka.ms/tmtcommsec#encrypted-sqlserver">https://aka.ms/tmtcommsec#encrypted-sqlserver</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by sniffing traffic to database false I An adversary may eavesdrop and interfere with the communication between the device and the field gateway and possibly tamper the data that is transmitted source is 'SE.EI.TMCore.IoTdevice' and target is 'SE.GP.TMCore.IoTFieldGateway' TH52 UserThreatDescription Description false An adversary may eavesdrop and interfere with the communication between the device and the field gateway and possibly tamper the data that is transmitted 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Secure Device to Field Gateway communication. Refer: <a href="https://aka.ms/tmtcommsec#device-field">https://aka.ms/tmtcommsec#device-field</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may eavesdrop the communication between the device and the field gateway false I An adversary having access to {target.Name} may read sensitive clear-text data target is 'SE.P.TMCore.AzureDocumentDB' TH53 UserThreatDescription Description false An adversary having access to {target.Name} may read sensitive clear-text data 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt sensitive data before storing it in Azure Document DB. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary having access to {target.Name} may read sensitive clear-text data false I Additional controls like Transparent Data Encryption, Column Level Encryption, EKM etc. provide additional protection mechanism to high value PII or HBI data. target is 'SE.DS.TMCore.SQL' TH6 UserThreatDescription Description false Additional controls like Transparent Data Encryption, Column Level Encryption, EKM etc. provide additional protection mechanism to high value PII or HBI data. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use strong encryption algorithms to encrypt data in the database. Refer: <a href="https://aka.ms/tmtcrypto#strong-db">https://aka.ms/tmtcrypto#strong-db</a> Ensure that sensitive data in database columns is encrypted. Refer: <a href="https://aka.ms/tmtdata#db-encrypted">https://aka.ms/tmtdata#db-encrypted</a> Ensure that database-level encryption (TDE) is enabled. Refer: <a href="https://aka.ms/tmtdata#tde-enabled">https://aka.ms/tmtdata#tde-enabled</a> Ensure that database backups are encrypted. Refer: <a href="https://aka.ms/tmtdata#backup">https://aka.ms/tmtdata#backup</a> Use SQL server EKM to protect encryption keys. Refer: <a href="https://aka.ms/tmtcrypto#ekm-keys">https://aka.ms/tmtcrypto#ekm-keys</a> Use AlwaysEncrypted feature if encryption keys should not be revealed to Database engine. Refer: <a href="https://aka.ms/tmtcrypto#keys-engine">https://aka.ms/tmtcrypto#keys-engine</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive PII or HBI data in database false E An adversary can abuse poorly managed {target.Name} account access keys and gain unauthorized access to storage. target is 'SE.DS.TMCore.AzureStorage' TH63 UserThreatDescription Description false An adversary can abuse poorly managed {target.Name} account access keys and gain unauthorized access to storage. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure secure management and storage of Azure storage access keys. It is recommended to rotate storage access keys regularly, in accordance with organizational policies. Refer: <a href="https://aka.ms/tmt-th63">https://aka.ms/tmt-th63</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse poorly managed {target.Name} account access keys false I An adversary can abuse an insecure communication channel between a client and {target.Name} target is 'SE.DS.TMCore.AzureStorage' and target.229f2e53-bc3f-476c-8ac9-57da37efd00f is 'True' target is 'SE.DS.TMCore.AzureStorage' TH65 UserThreatDescription Description false An adversary can abuse an insecure communication channel between a client and {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that communication to Azure Storage is over HTTPS. It is recommended to enable the secure transfer required option to force communication with Azure Storage to be over HTTPS. Use Client-Side Encryption to store sensitive data in Azure Storage. Refer: <a href="https://aka.ms/tmt-th65">https://aka.ms/tmt-th65</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse an insecure communication channel between a client and {target.Name} false I Secrets can be any sensitive information, such as storage connection strings, passwords, or other values that should not be handled in plain text. If secrets are not encrypted, an adversary who can gain access to them can abuse them. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH73 UserThreatDescription Description false Secrets can be any sensitive information, such as storage connection strings, passwords, or other values that should not be handled in plain text. If secrets are not encrypted, an adversary who can gain access to them can abuse them. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt secrets in Service Fabric applications. Refer: <a href="https://aka.ms/tmtdata#fabric-apps">https://aka.ms/tmtdata#fabric-apps</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to unencrypted secrets in Service Fabric applications false I An adversary may conduct man in the middle attack and downgrade TLS connection to clear text protocol, or forcing browser communication to pass through a proxy server that he controls. This may happen because the application may use mixed content or HTTP Strict Transport Security policy is not ensured. source is 'GE.EI' and target is 'SE.P.TMCore.WebApp' and target.80fe9520-5f00-4480-ad47-f2fd75dede82 is 'Azure' TH78 UserThreatDescription Description false An adversary may conduct man in the middle attack and downgrade TLS connection to clear text protocol, or forcing browser communication to pass through a proxy server that he controls. This may happen because the application may use mixed content or HTTP Strict Transport Security policy is not ensured. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Configure SSL certificate for custom domain in Azure App Service. Refer: <a href="https://aka.ms/tmtcommsec#ssl-appservice">https://aka.ms/tmtcommsec#ssl-appservice</a> Force all traffic to Azure App Service over HTTPS connection . Refer: <a href="https://aka.ms/tmtcommsec#appservice-https">https://aka.ms/tmtcommsec#appservice-https</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by sniffing traffic to Azure Web App false I An adversary can fingerprint web application by leveraging server header information source is 'GE.EI' and target is 'SE.P.TMCore.WebApp' and target.80fe9520-5f00-4480-ad47-f2fd75dede82 is 'Azure' TH79 UserThreatDescription Description false An adversary can fingerprint web application by leveraging server header information 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Remove standard server headers on Windows Azure Web Sites to avoid fingerprinting. Refer: <a href="https://aka.ms/tmtconfigmgmt#standard-finger">https://aka.ms/tmtconfigmgmt#standard-finger</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Low 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can fingerprint an Azure web application by leveraging server header information false I Robots.txt is often found in your site's root directory and exists to regulate the bots that crawl your site. This is where you can grant or deny permission to all or some specific search engine robots to access certain pages or your site as a whole. The standard for this file was developed in 1994 and is known as the Robots Exclusion Standard or Robots Exclusion Protocol. Detailed info about the robots.txt protocol can be found at robotstxt.org. (source is 'SE.EI.TMCore.Browser') and (target is 'SE.P.TMCore.WebApp') TH80 UserThreatDescription Description false Robots.txt is often found in your site's root directory and exists to regulate the bots that crawl your site. This is where you can grant or deny permission to all or some specific search engine robots to access certain pages or your site as a whole. The standard for this file was developed in 1994 and is known as the Robots Exclusion Standard or Robots Exclusion Protocol. Detailed info about the robots.txt protocol can be found at robotstxt.org. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that administrative interfaces are appropriately locked down. Refer: <a href="https://aka.ms/tmtauthn#admin-interface-lockdown">https://aka.ms/tmtauthn#admin-interface-lockdown</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to certain pages or the site as a whole. false I SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. target is 'SE.DS.TMCore.SQL' TH82 UserThreatDescription Description false SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that login auditing is enabled on SQL Server. Refer: <a href="https://aka.ms/tmtauditlog#identify-sensitive-entities">https://aka.ms/tmtauditlog#identify-sensitive-entities</a> Ensure that least-privileged accounts are used to connect to Database server. Refer: <a href="https://aka.ms/tmtauthz#privileged-server">https://aka.ms/tmtauthz#privileged-server</a> Enable Threat detection on Azure SQL database. Refer: <a href="https://aka.ms/tmtauditlog#threat-detection">https://aka.ms/tmtauditlog#threat-detection</a> Do not use dynamic queries in stored procedures. Refer: <a href="https://aka.ms/tmtinputval#stored-proc">https://aka.ms/tmtinputval#stored-proc</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by performing SQL injection false I An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. target is 'SE.P.TMCore.WebAPI' TH83 UserThreatDescription Description false An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt sections of Web API's configuration files that contain sensitive data. Refer: <a href="https://aka.ms/tmtconfigmgmt#config-sensitive">https://aka.ms/tmtconfigmgmt#config-sensitive</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data stored in Web API's config files false I An adversary may conduct man in the middle attack and downgrade TLS connection to clear text protocol, or forcing browser communication to pass through a proxy server that he controls. This may happen because the application may use mixed content or HTTP Strict Transport Security policy is not ensured. (source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp') TH9 UserThreatDescription Description false An adversary may conduct man in the middle attack and downgrade TLS connection to clear text protocol, or forcing browser communication to pass through a proxy server that he controls. This may happen because the application may use mixed content or HTTP Strict Transport Security policy is not ensured. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Applications available over HTTPS must use secure cookies. Refer: <a href="https://aka.ms/tmtsmgmt#https-secure-cookies">https://aka.ms/tmtsmgmt#https-secure-cookies</a> Enable HTTP Strict Transport Security (HSTS). Refer: <a href="https://aka.ms/tmtcommsec#http-hsts">https://aka.ms/tmtcommsec#http-hsts</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by sniffing traffic to Web Application false I If an adversary can gain access to Azure VMs, sensitive data in the VM can be disclosed if the OS in the VM is not encrypted flow crosses 'SE.TB.TMCore.AzureIaaSVMTrustBoundary' TH93 UserThreatDescription Description false If an adversary can gain access to Azure VMs, sensitive data in the VM can be disclosed if the OS in the VM is not encrypted 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use Azure Disk Encryption to encrypt disks used by Virtual Machines. Refer: <a href="https://aka.ms/tmtdata#disk-vm">https://aka.ms/tmtdata#disk-vm</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to sensitive data stored in Azure Virtual Machines false I An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details target is 'SE.P.TMCore.WebApp' TH94 UserThreatDescription Description false An adversary can gain access to sensitive data such as the following, through verbose error messages - Server names - Connection strings - Usernames - Passwords - SQL procedures - Details of dynamic SQL failures - Stack trace and lines of code - Variables stored in memory - Drive and folder locations - Application install points - Host configuration settings - Other internal application details 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Do not expose security details in error messages. Refer: <a href="https://aka.ms/tmtxmgmt#messages">https://aka.ms/tmtxmgmt#messages</a> Implement Default error handling page. Refer: <a href="https://aka.ms/tmtxmgmt#default">https://aka.ms/tmtxmgmt#default</a> Set Deployment Method to Retail in IIS. Refer: <a href="https://aka.ms/tmtxmgmt#deployment">https://aka.ms/tmtxmgmt#deployment</a> Exceptions should fail safely. Refer: <a href="https://aka.ms/tmtxmgmt#fail">https://aka.ms/tmtxmgmt#fail</a> ASP.NET applications must disable tracing and debugging prior to deployment. Refer: <a href="https://aka.ms/tmtconfigmgmt#trace-deploy">https://aka.ms/tmtconfigmgmt#trace-deploy</a> Implement controls to prevent username enumeration. Refer: <a href="https://aka.ms/tmtauthn#controls-username-enum">https://aka.ms/tmtauthn#controls-username-enum</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive information through error messages false I An adversary may gain access to sensitive data from uncleared browser cache source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH99 UserThreatDescription Description false An adversary may gain access to sensitive data from uncleared browser cache 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that sensitive content is not cached on the browser. Refer: <a href="https://aka.ms/tmtdata#cache-browser">https://aka.ms/tmtdata#cache-browser</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to sensitive data from uncleared browser cache false R Attacker can deny a malicious act on an API leading to repudiation issues target is 'SE.P.TMCore.WebAPI' TH109 UserThreatDescription Description false Attacker can deny a malicious act on an API leading to repudiation issues 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that auditing and logging is enforced on Web API. Refer: <a href="https://aka.ms/tmtauditlog#logging-web-api">https://aka.ms/tmtauditlog#logging-web-api</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 Attacker can deny a malicious act on an API leading to repudiation issues false R This is due to the Last Modified By field being overwritten on each save (target is 'SE.P.TMCore.DynamicsCRM') TH118 UserThreatDescription Description false This is due to the Last Modified By field being overwritten on each save 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Identify sensitive entities in your solution and implement change auditing. Refer: <a href="https://aka.ms/tmtauditlog#sensitive-entities">https://aka.ms/tmtauditlog#sensitive-entities</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 A malicious user can deny they made a change to {target.Name} false R Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. target is 'SE.DS.TMCore.AzureStorage' TH20 UserThreatDescription Description false Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use Azure Storage Analytics to audit access of Azure Storage. If possible, audit the calls to the Azure Storage instance at the source of the call. Refer: <a href="https://aka.ms/tmt-th20">https://aka.ms/tmt-th20</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions on {target.Name} due to lack of auditing false R Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. target is 'SE.DS.TMCore.SQL' TH3 UserThreatDescription Description false Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that login auditing is enabled on SQL Server. Refer: <a href="https://aka.ms/tmtauditlog#identify-sensitive-entities">https://aka.ms/tmtauditlog#identify-sensitive-entities</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions on database due to lack of auditing false R Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system target is 'SE.P.TMCore.WebApp' TH30 UserThreatDescription Description false Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that auditing and logging is enforced on the application. Refer: <a href="https://aka.ms/tmtauditlog#auditing">https://aka.ms/tmtauditlog#auditing</a> Ensure that log rotation and separation are in place. Refer: <a href="https://aka.ms/tmtauditlog#log-rotation">https://aka.ms/tmtauditlog#log-rotation</a> Ensure that Audit and Log Files have Restricted Access. Refer: <a href="https://aka.ms/tmtauditlog#log-restricted-access">https://aka.ms/tmtauditlog#log-restricted-access</a> Ensure that User Management Events are Logged. Refer: <a href="https://aka.ms/tmtauditlog#user-management">https://aka.ms/tmtauditlog#user-management</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Attacker can deny the malicious act and remove the attack foot prints leading to repudiation issues false R An adversary may perform actions such as spoofing attempts, unauthorized access etc. on Cloud gateway. It is important to monitor these attempts so that adversary cannot deny these actions target is 'SE.GP.TMCore.IoTCloudGateway' TH34 UserThreatDescription Description false An adversary may perform actions such as spoofing attempts, unauthorized access etc. on Cloud gateway. It is important to monitor these attempts so that adversary cannot deny these actions 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that appropriate auditing and logging is enforced on Cloud Gateway. Refer: <a href="https://aka.ms/tmtauditlog#logging-cloud-gateway">https://aka.ms/tmtauditlog#logging-cloud-gateway</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions on Cloud Gateway due to lack of auditing false R An adversary may perform actions such as spoofing attempts, unauthorized access etc. on Field gateway. It is important to monitor these attempts so that adversary cannot deny these actions target is 'SE.GP.TMCore.IoTFieldGateway' TH49 UserThreatDescription Description false An adversary may perform actions such as spoofing attempts, unauthorized access etc. on Field gateway. It is important to monitor these attempts so that adversary cannot deny these actions 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that appropriate auditing and logging is enforced on Field Gateway. Refer: <a href="https://aka.ms/tmtauditlog#logging-field-gateway">https://aka.ms/tmtauditlog#logging-field-gateway</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions on Field Gateway due to lack of auditing false R Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. source is 'GE.EI' and target is 'SE.P.TMCore.WebApp' and target.80fe9520-5f00-4480-ad47-f2fd75dede82 is 'Azure' TH77 UserThreatDescription Description false Proper logging of all security events and user actions builds traceability in a system and denies any possible repudiation issues. In the absence of proper auditing and logging controls, it would become impossible to implement any accountability in a system. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable diagnostics logging for web apps in Azure App Service. Refer: <a href="https://aka.ms/tmtauditlog#diagnostics-logging">https://aka.ms/tmtauditlog#diagnostics-logging</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions on Azure App Service due to lack of auditing false S An adversary can bypass authentication due to non-standard Azure AD authentication schemes target is 'SE.P.TMCore.AzureAD' TH11 UserThreatDescription Description false An adversary can bypass authentication due to non-standard Azure AD authentication schemes 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use standard authentication scenarios supported by Azure Active Directory. Refer: <a href="https://aka.ms/tmtauthn#authn-aad">https://aka.ms/tmtauthn#authn-aad</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can bypass authentication due to non-standard Azure AD authentication schemes false S An adversary can bypass authentication due to non-standard Identity Server authentication schemes target is 'SE.P.TMCore.IdSrv' TH111 UserThreatDescription Description false An adversary can bypass authentication due to non-standard Identity Server authentication schemes 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use standard authentication scenarios supported by Identity Server. Refer: <a href="https://aka.ms/tmtauthn#standard-authn-id">https://aka.ms/tmtauthn#standard-authn-id</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can bypass authentication due to non-standard Identity Server authentication schemes false S An adversary can get access to a user's session due to improper logout from Identity Server target is 'SE.P.TMCore.IdSrv' TH113 UserThreatDescription Description false An adversary can get access to a user's session due to improper logout from Identity Server 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper logout when using Identity Server. Refer: <a href="https://aka.ms/tmtsmgmt#proper-logout">https://aka.ms/tmtsmgmt#proper-logout</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session due to improper logout from Identity Server false S An adversary can abuse poorly managed signing keys of Identity Server. In case of key compromise, an adversary will be able to create valid auth tokens using the stolen keys and gain access to the resources protected by Identity server. target is 'SE.P.TMCore.IdSrv' TH114 UserThreatDescription Description false An adversary can abuse poorly managed signing keys of Identity Server. In case of key compromise, an adversary will be able to create valid auth tokens using the stolen keys and gain access to the resources protected by Identity server. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that signing keys are rolled over when using Identity Server. Refer: <a href="https://aka.ms/tmtcrypto#rolled-server">https://aka.ms/tmtcrypto#rolled-server</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may issue valid tokens if Identity server's signing keys are compromised false S An adversary may spoof an Azure administrator and gain access to Azure subscription portal if the administrator's credentials are compromised. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.AzureTrustBoundary' TH117 UserThreatDescription Description false An adversary may spoof an Azure administrator and gain access to Azure subscription portal if the administrator's credentials are compromised. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable fine-grained access management to Azure Subscription using RBAC. Refer: <a href="https://aka.ms/tmtauthz#grained-rbac">https://aka.ms/tmtauthz#grained-rbac</a> Enable Azure Multi-Factor Authentication for Azure Administrators. Refer: <a href="https://aka.ms/tmtauthn#multi-factor-azure-admin">https://aka.ms/tmtauthn#multi-factor-azure-admin</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spoof an Azure administrator and gain access to Azure subscription portal false S An adversary can get access to a user's session by replaying authentication tokens (source is 'GE.P' or source is 'GE.EI') and target is 'SE.P.TMCore.AzureAD' TH12 UserThreatDescription Description false An adversary can get access to a user's session by replaying authentication tokens 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that TokenReplayCache is used to prevent the replay of ADAL authentication tokens. Refer: <a href="https://aka.ms/tmtauthn#tokenreplaycache-adal">https://aka.ms/tmtauthn#tokenreplaycache-adal</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session by replaying authentication tokens false S An adversary may gain access to the field gateway by leveraging default login credentials. target is 'SE.GP.TMCore.IoTFieldGateway' TH129 UserThreatDescription Description false An adversary may gain access to the field gateway by leveraging default login credentials. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that the default login credentials of the field gateway are changed during installation. Refer: <a href="https://aka.ms/tmtconfigmgmt#default-change">https://aka.ms/tmtconfigmgmt#default-change</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain access to the field gateway by leveraging default login credentials. false S An adversary can gain unauthorized access to API end points due to weak CORS configuration source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebAPI' TH13 UserThreatDescription Description false An adversary can gain unauthorized access to API end points due to weak CORS configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that only trusted origins are allowed if CORS is enabled on ASP.NET Web API. Refer: <a href="https://aka.ms/tmtconfigmgmt#cors-api">https://aka.ms/tmtconfigmgmt#cors-api</a> Mitigate against Cross-Site Request Forgery (CSRF) attacks on ASP.NET Web APIs. Refer: <a href="https://aka.ms/tmtsmgmt#csrf-api">https://aka.ms/tmtsmgmt#csrf-api</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to API end points due to unrestricted cross domain requests false S An adversary may guess the client id and secrets of registered applications and impersonate them target is 'SE.P.TMCore.IdSrv' TH133 UserThreatDescription Description false An adversary may guess the client id and secrets of registered applications and impersonate them 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that cryptographically strong client id, client secret are used in Identity Server. Refer: <a href="https://aka.ms/tmtcrypto#client-server">https://aka.ms/tmtcrypto#client-server</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may guess the client id and secrets of registered applications and impersonate them false E An adversary can gain unauthorized access to {target.Name} due to weak CORS configuration target is 'SE.DS.TMCore.AzureStorage' and target.c63455d0-ad77-4b08-aa02-9f8026bb056f is 'False' target is 'SE.DS.TMCore.AzureStorage' TH21 UserThreatDescription Description false An adversary can gain unauthorized access to {target.Name} due to weak CORS configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that only specific, trusted origins are allowed. Refer: <a href="https://aka.ms/tmt-th21">https://aka.ms/tmt-th21</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to {target.Name} due to weak CORS configuration false S The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH22 UserThreatDescription Description false The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Set up session for inactivity lifetime. Refer: <a href="https://aka.ms/tmtsmgmt#inactivity-lifetime">https://aka.ms/tmtsmgmt#inactivity-lifetime</a> Implement proper logout from the application. Refer: <a href="https://aka.ms/tmtsmgmt#proper-app-logout">https://aka.ms/tmtsmgmt#proper-app-logout</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session due to improper logout and timeout false S The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH23 UserThreatDescription Description false The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable ValidateRequest attribute on ASP.NET Pages. Refer: <a href="https://aka.ms/tmtconfigmgmt#validate-aspnet">https://aka.ms/tmtconfigmgmt#validate-aspnet</a> Encode untrusted web output prior to rendering. Refer: <a href="https://aka.ms/tmtinputval#rendering">https://aka.ms/tmtinputval#rendering</a> Avoid using Html.Raw in Razor views. Refer: <a href="https://aka.ms/tmtinputval#html-razor">https://aka.ms/tmtinputval#html-razor</a> Sanitization should be applied on form fields that accept all characters e.g, rich text editor . Refer: <a href="https://aka.ms/tmtinputval#richtext">https://aka.ms/tmtinputval#richtext</a> Do not assign DOM elements to sinks that do not have inbuilt encoding . Refer: <a href="https://aka.ms/tmtinputval#inbuilt-encode">https://aka.ms/tmtinputval#inbuilt-encode</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session due to insecure coding practices false S Ensure that TLS certificate parameters are configured with correct values target is 'SE.P.TMCore.WebApp' TH32 UserThreatDescription Description false Ensure that TLS certificate parameters are configured with correct values 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections. Refer: <a href="https://aka.ms/tmtcommsec#x509-ssltls">https://aka.ms/tmtcommsec#x509-ssltls</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can spoof the target web application due to insecure TLS certificate configuration false S An adversary may replacing the {source.Name} or part of the {source.Name} with some other {source.Name}. (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and (target is 'SE.GP.TMCore.IoTFieldGateway' or target is 'SE.GP.TMCore.IoTCloudGateway') TH35 UserThreatDescription Description false An adversary may replacing the {source.Name} or part of the {source.Name} with some other {source.Name}. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that devices connecting to Field or Cloud gateway are authenticated. Refer: <a href="https://aka.ms/tmtauthn#authn-devices-cloud">https://aka.ms/tmtauthn#authn-devices-cloud</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spoof {source.Name} with a fake one false S An attacker may extract cryptographic key material from {source.Name}, either at the software or hardware level, and subsequently access the system with a different physical or virtual {source.Name} under the identity of the {source.Name} the key material has been taken from. A good illustration is remote controls that can turn any TV and that are popular prankster tools. (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and (target is 'SE.GP.TMCore.IoTFieldGateway' or target is 'SE.GP.TMCore.IoTCloudGateway') TH36 UserThreatDescription Description false An attacker may extract cryptographic key material from {source.Name}, either at the software or hardware level, and subsequently access the system with a different physical or virtual {source.Name} under the identity of the {source.Name} the key material has been taken from. A good illustration is remote controls that can turn any TV and that are popular prankster tools. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use per-device authentication credentials. Refer: <a href="https://aka.ms/tmtauthn#authn-cred">https://aka.ms/tmtauthn#authn-cred</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may reuse the authentication tokens of {source.Name} in another false S An adversary may predict and generate valid security tokens to authenticate to IoT Hub, by leveraging weak encryption keys (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and target is 'SE.GP.TMCore.IoTCloudGateway' TH40 UserThreatDescription Description false An adversary may predict and generate valid security tokens to authenticate to IoT Hub, by leveraging weak encryption keys 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Generate a random symmetric key of sufficient length for authentication to IoT Hub. Refer: <a href="https://aka.ms/tmtcrypto#random-hub">https://aka.ms/tmtcrypto#random-hub</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may auto-generate valid authentication tokens for IoT Hub false S An adversary may get access to SaS tokens used to authenticate to IoT Hub. If the lifetime of these tokens is not finite, the adversary may replay the stolen tokens indefinitely (source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway') and target is 'SE.GP.TMCore.IoTCloudGateway' TH44 UserThreatDescription Description false An adversary may get access to SaS tokens used to authenticate to IoT Hub. If the lifetime of these tokens is not finite, the adversary may replay the stolen tokens indefinitely 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use finite lifetimes for generated SaS tokens. Refer: <a href="https://aka.ms/tmtsmgmt#finite-tokens">https://aka.ms/tmtsmgmt#finite-tokens</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may replay stolen long-lived SaS tokens of IoT Hub false S An adversary may spoof a device and connect to field gateway. This may be achieved even when the device is registered in Cloud gateway since the field gateway may not be in sync with the device identities in cloud gateway source is 'SE.EI.TMCore.IoTdevice' and target is 'SE.GP.TMCore.IoTFieldGateway' TH50 UserThreatDescription Description false An adversary may spoof a device and connect to field gateway. This may be achieved even when the device is registered in Cloud gateway since the field gateway may not be in sync with the device identities in cloud gateway 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Authenticate devices connecting to the Field Gateway. Refer: <a href="https://aka.ms/tmtauthn#authn-devices-field">https://aka.ms/tmtauthn#authn-devices-field</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spoof a device and connect to field gateway false E An adversary may reuse a stolen long-lived resource token, access key or connection string to access an {target.Name} instance target is 'SE.P.TMCore.AzureDocumentDB' TH55 UserThreatDescription Description false An adversary may reuse a stolen long-lived resource token, access key or connection string to access an {target.Name} instance 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use minimum token lifetimes for generated resource tokens. Rotate secrets (e.g. resource tokens, access keys and passwords in connection strings) frequently, in accordance with your organization's policies. Refer: <a href="https://aka.ms/tmt-th55">https://aka.ms/tmt-th55</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may reuse a stolen long-lived resource token, access key or connection string to access an {target.Name} instance false S If multiple devices use the same SaS token, then an adversary can spoof any device using a token that he or she has access to target is 'SE.P.TMCore.AzureEventHub' TH58 UserThreatDescription Description false If multiple devices use the same SaS token, then an adversary can spoof any device using a token that he or she has access to 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use per device authentication credentials using SaS tokens. Refer: <a href="https://aka.ms/tmtauthn#authn-sas-tokens">https://aka.ms/tmtauthn#authn-sas-tokens</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may spoof a device by reusing the authentication tokens of one device in another false S If a service fabric cluster is not secured, it allow any anonymous user to connect to it if it exposes management endpoints to the public Internet. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH68 UserThreatDescription Description false If a service fabric cluster is not secured, it allow any anonymous user to connect to it if it exposes management endpoints to the public Internet. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict anonymous access to Service Fabric Cluster. Refer: <a href="https://aka.ms/tmtauthn#anon-access-cluster">https://aka.ms/tmtauthn#anon-access-cluster</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to resources in Service Fabric false S If the same certificate that is used for node-to-node security is used for client-to-node security, it will be easy for an adversary to spoof and join a new node, in case the client-to-node certificate (which is often stored locally) is compromised flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH69 UserThreatDescription Description false If the same certificate that is used for node-to-node security is used for client-to-node security, it will be easy for an adversary to spoof and join a new node, in case the client-to-node certificate (which is often stored locally) is compromised 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that Service Fabric client-to-node certificate is different from node-to-node certificate. Refer: <a href="https://aka.ms/tmtauthn#fabric-cn-nn">https://aka.ms/tmtauthn#fabric-cn-nn</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can spoof a node and access Service Fabric cluster false S Attackers can exploit weaknesses in system to steal user credentials. Downstream and upstream components are often accessed by using credentials stored in configuration stores. Attackers may steal the upstream or downstream component credentials. Attackers may steal credentials if, Credentials are stored and sent in clear text, Weak input validation coupled with dynamic sql queries, Password retrieval mechanism are poor, (target is 'SE.P.TMCore.WebApp') TH7 UserThreatDescription Description false Attackers can exploit weaknesses in system to steal user credentials. Downstream and upstream components are often accessed by using credentials stored in configuration stores. Attackers may steal the upstream or downstream component credentials. Attackers may steal credentials if, Credentials are stored and sent in clear text, Weak input validation coupled with dynamic sql queries, Password retrieval mechanism are poor, 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Explicitly disable the autocomplete HTML attribute in sensitive forms and inputs. Refer: <a href="https://aka.ms/tmtdata#autocomplete-input">https://aka.ms/tmtdata#autocomplete-input</a> Perform input validation and filtering on all string type Model properties. Refer: <a href="https://aka.ms/tmtinputval#typemodel">https://aka.ms/tmtinputval#typemodel</a> Validate all redirects within the application are closed or done safely. Refer: <a href="https://aka.ms/tmtinputval#redirect-safe">https://aka.ms/tmtinputval#redirect-safe</a> Enable step up or adaptive authentication. Refer: <a href="https://aka.ms/tmtauthn#step-up-adaptive-authn">https://aka.ms/tmtauthn#step-up-adaptive-authn</a> Implement forgot password functionalities securely. Refer: <a href="https://aka.ms/tmtauthn#forgot-pword-fxn">https://aka.ms/tmtauthn#forgot-pword-fxn</a> Ensure that password and account policy are implemented. Refer: <a href="https://aka.ms/tmtauthn#pword-account-policy">https://aka.ms/tmtauthn#pword-account-policy</a> Implement input validation on all string type parameters accepted by Controller methods. Refer: <a href="https://aka.ms/tmtinputval#string-method">https://aka.ms/tmtinputval#string-method</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can steal sensitive data like user credentials false S Azure AD authentication provides better control on identity management and hence it is a better alternative to authenticate clients to Service Fabric flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH70 UserThreatDescription Description false Azure AD authentication provides better control on identity management and hence it is a better alternative to authenticate clients to Service Fabric 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use AAD to authenticate clients to service fabric clusters. Refer: <a href="https://aka.ms/tmtauthn#aad-client-fabric">https://aka.ms/tmtauthn#aad-client-fabric</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can potentially spoof a client if weaker client authentication channels are used false S If self-signed or test certificates are stolen, it would be difficult to revoke them. An adversary can use stolen certificates and continue to get access to Service Fabric cluster. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.ServiceFabric' TH72 UserThreatDescription Description false If self-signed or test certificates are stolen, it would be difficult to revoke them. An adversary can use stolen certificates and continue to get access to Service Fabric cluster. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that service fabric certificates are obtained from an approved Certificate Authority (CA). Refer: <a href="https://aka.ms/tmtauthn#fabric-cert-ca">https://aka.ms/tmtauthn#fabric-cert-ca</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can spoof a node in Service Fabric cluster by using stolen certificates false S On a public client (e.g. a mobile device), refresh tokens may be stolen and used by an attacker to obtain access to the API. Depending on the client type, there are different ways that tokens may be revealed to an attacker and therefore different ways to protect them, some involving how the software using the tokens requests, stores and refreshes them. source is 'SE.EI.TMCore.Mobile' and target is 'SE.P.TMCore.WebAPI' TH74 UserThreatDescription Description false On a public client (e.g. a mobile device), refresh tokens may be stolen and used by an attacker to obtain access to the API. Depending on the client type, there are different ways that tokens may be revealed to an attacker and therefore different ways to protect them, some involving how the software using the tokens requests, stores and refreshes them. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use ADAL libraries to manage token requests from OAuth2 clients to AAD (or on-premises AD). Refer: <a href="https://aka.ms/tmtauthn#adal-oauth2">https://aka.ms/tmtauthn#adal-oauth2</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary obtains refresh or access tokens from {source.Name} and uses them to obtain access to the {target.Name} API false S The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. source is 'SE.P.TMCore.WebApp' and target is 'SE.P.TMCore.AzureAD' TH75 UserThreatDescription Description false The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper logout using ADAL methods when using Azure AD. Refer: <a href="https://aka.ms/tmtsmgmt#logout-adal">https://aka.ms/tmtsmgmt#logout-adal</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session due to improper logout from Azure AD false S The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. source is 'SE.P.TMCore.WebApp' and target is 'SE.P.TMCore.ADFS' TH76 UserThreatDescription Description false The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper logout using WsFederation methods when using ADFS. Refer: <a href="https://aka.ms/tmtsmgmt#wsfederation-logout">https://aka.ms/tmtsmgmt#wsfederation-logout</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can get access to a user's session due to improper logout from ADFS false S The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. (source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp') TH8 UserThreatDescription Description false The session cookies is the identifier by which the server knows the identity of current user for each incoming request. If the attacker is able to steal the user token he would be able to access all user data and perform all actions on behalf of user. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Applications available over HTTPS must use secure cookies. Refer: <a href="https://aka.ms/tmtsmgmt#https-secure-cookies">https://aka.ms/tmtsmgmt#https-secure-cookies</a> All http based application should specify http only for cookie definition. Refer: <a href="https://aka.ms/tmtsmgmt#cookie-definition">https://aka.ms/tmtsmgmt#cookie-definition</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Attackers can steal user session cookies due to insecure cookie attributes false S Phishing is attempted to obtain sensitive information such as usernames, passwords, and credit card details (and sometimes, indirectly, money), often for malicious reasons, by masquerading as a Web Server which is a trustworthy entity in electronic communication target is 'SE.P.TMCore.WebApp' TH81 UserThreatDescription Description false Phishing is attempted to obtain sensitive information such as usernames, passwords, and credit card details (and sometimes, indirectly, money), often for malicious reasons, by masquerading as a Web Server which is a trustworthy entity in electronic communication 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections. Refer: <a href="https://aka.ms/tmtcommsec#x509-ssltls">https://aka.ms/tmtcommsec#x509-ssltls</a> Ensure that authenticated ASP.NET pages incorporate UI Redressing or clickjacking defences. Refer: <a href="https://aka.ms/tmtconfigmgmt#ui-defenses">https://aka.ms/tmtconfigmgmt#ui-defenses</a> Validate all redirects within the application are closed or done safely. Refer: <a href="https://aka.ms/tmtinputval#redirect-safe">https://aka.ms/tmtinputval#redirect-safe</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can create a fake website and launch phishing attacks false S An adversary can gain access to Azure storage containers and blobs if anonymous access is provided to potentially sensitive data accidentally. target is 'SE.DS.TMCore.AzureStorage' and target.b3ece90f-c578-4a48-b4d4-89d97614e0d2 is 'Blob' TH85 UserThreatDescription Description false An adversary can gain access to Azure storage containers and blobs if anonymous access is provided to potentially sensitive data accidentally. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that only the required containers and blobs are given anonymous read access. Refer: <a href="https://aka.ms/tmt-th85">https://aka.ms/tmt-th85</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can access Azure storage blobs and containers anonymously false S If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application target is 'SE.P.TMCore.WebApp' TH86 UserThreatDescription Description false If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Consider using a standard authentication mechanism to authenticate to Web Application. Refer: <a href="https://aka.ms/tmtauthn#standard-authn-web-app">https://aka.ms/tmtauthn#standard-authn-web-app</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spoof {source.Name} and gain access to Web Application false S If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application target is 'SE.P.TMCore.WebAPI' TH87 UserThreatDescription Description false If proper authentication is not in place, an adversary can spoof a source process or external entity and gain unauthorized access to the Web Application 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that standard authentication techniques are used to secure Web APIs. Refer: <a href="https://aka.ms/tmtauthn#authn-secure-api">https://aka.ms/tmtauthn#authn-secure-api</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spoof {source.Name} and gain access to Web API false T An adversary can execute remote code on the server through XSLT scripting target is 'SE.P.TMCore.WebApp' and target.df53c172-b70c-412c-9e99-a6fbc10748ee is 'Yes' TH100 UserThreatDescription Description false An adversary can execute remote code on the server through XSLT scripting 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Disable XSLT scripting for all transforms using untrusted style sheets. Refer: <a href="https://aka.ms/tmtinputval#disable-xslt">https://aka.ms/tmtinputval#disable-xslt</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can execute remote code on the server through XSLT scripting false T An adversary can tamper critical database securables and deny the action target is 'SE.DS.TMCore.SQL' TH105 UserThreatDescription Description false An adversary can tamper critical database securables and deny the action 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Add digital signature to critical database securables. Refer: <a href="https://aka.ms/tmtcrypto#securables-db">https://aka.ms/tmtcrypto#securables-db</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can tamper critical database securables and deny the action false T An adversary may inject malicious inputs into an API and affect downstream processes target is 'SE.P.TMCore.WebAPI' TH108 UserThreatDescription Description false An adversary may inject malicious inputs into an API and affect downstream processes 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that model validation is done on Web API methods. Refer: <a href="https://aka.ms/tmtinputval#validation-api">https://aka.ms/tmtinputval#validation-api</a> Implement input validation on all string type parameters accepted by Web API methods. Refer: <a href="https://aka.ms/tmtinputval#string-api">https://aka.ms/tmtinputval#string-api</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may inject malicious inputs into an API and affect downstream processes false T An Adversary can view the message and may tamper the message target is 'SE.P.TMCore.WCF' TH132 UserThreatDescription Description false An Adversary can view the message and may tamper the message 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false WCF: Set Message security Protection level to EncryptAndSign. Refer: <a href="https://aka.ms/tmtcommsec#message-protection">https://aka.ms/tmtcommsec#message-protection</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An Adversary can view the message and may tamper the message false T An adversary may spread malware, steal or tamper data due to lack of endpoint protection on devices. Scenarios such as stealing a user's laptop and extracting data from hard disk, luring users to install malware, exploit unpatched OS etc. flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH134 UserThreatDescription Description false An adversary may spread malware, steal or tamper data due to lack of endpoint protection on devices. Scenarios such as stealing a user's laptop and extracting data from hard disk, luring users to install malware, exploit unpatched OS etc. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that devices have end point security controls configured as per organizational policies. Refer: <a href="https://aka.ms/tmtconfigmgmt#controls-policies">https://aka.ms/tmtconfigmgmt#controls-policies</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may spread malware, steal or tamper data due to lack of endpoint protection on devices false T An adversary may reverse engineer deployed binaries flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH137 UserThreatDescription Description false An adversary may reverse engineer deployed binaries 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that binaries are obfuscated if they contain sensitive information. Refer: <a href="https://aka.ms/tmtdata#binaries-info">https://aka.ms/tmtdata#binaries-info</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may reverse engineer deployed binaries false T An adversary may tamper deployed binaries flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No' flow crosses 'SE.TB.TMCore.MachineTrustBoundary' TH138 UserThreatDescription Description false An adversary may tamper deployed binaries 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that deployed application's binaries are digitally signed. Refer: <a href="https://aka.ms/tmtauthn#binaries-signed">https://aka.ms/tmtauthn#binaries-signed</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may tamper deployed binaries false T Website defacement is an attack on a website where the attacker changes the visual appearance of the site or a webpage. source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp' TH24 UserThreatDescription Description false Website defacement is an attack on a website where the attacker changes the visual appearance of the site or a webpage. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement Content Security Policy (CSP), and disable inline javascript. Refer: <a href="https://aka.ms/tmtconfigmgmt#csp-js">https://aka.ms/tmtconfigmgmt#csp-js</a> Enable browser's XSS filter. Refer: <a href="https://aka.ms/tmtconfigmgmt#xss-filter">https://aka.ms/tmtconfigmgmt#xss-filter</a> Access third party javascripts from trusted sources only. Refer: <a href="https://aka.ms/tmtconfigmgmt#js-trusted">https://aka.ms/tmtconfigmgmt#js-trusted</a> Enable ValidateRequest attribute on ASP.NET Pages. Refer: <a href="https://aka.ms/tmtconfigmgmt#validate-aspnet">https://aka.ms/tmtconfigmgmt#validate-aspnet</a> Ensure that each page that could contain user controllable content opts out of automatic MIME sniffing . Refer: <a href="https://aka.ms/tmtinputval#out-sniffing">https://aka.ms/tmtinputval#out-sniffing</a> Use locally-hosted latest versions of JavaScript libraries . Refer: <a href="https://aka.ms/tmtconfigmgmt#local-js">https://aka.ms/tmtconfigmgmt#local-js</a> Ensure appropriate controls are in place when accepting files from users. Refer: <a href="https://aka.ms/tmtinputval#controls-users">https://aka.ms/tmtinputval#controls-users</a> Disable automatic MIME sniffing. Refer: <a href="https://aka.ms/tmtconfigmgmt#mime-sniff">https://aka.ms/tmtconfigmgmt#mime-sniff</a> Encode untrusted web output prior to rendering. Refer: <a href="https://aka.ms/tmtinputval#rendering">https://aka.ms/tmtinputval#rendering</a> Perform input validation and filtering on all string type Model properties. Refer: <a href="https://aka.ms/tmtinputval#typemodel">https://aka.ms/tmtinputval#typemodel</a> Ensure that the system has inbuilt defences against misuse. Refer: <a href="https://aka.ms/tmtauditlog#inbuilt-defenses">https://aka.ms/tmtauditlog#inbuilt-defenses</a> Enable HTTP Strict Transport Security (HSTS). Refer: <a href="https://aka.ms/tmtcommsec#http-hsts">https://aka.ms/tmtcommsec#http-hsts</a> Implement input validation on all string type parameters accepted by Controller methods. Refer: <a href="https://aka.ms/tmtinputval#string-method">https://aka.ms/tmtinputval#string-method</a> Avoid using Html.Raw in Razor views. Refer: <a href="https://aka.ms/tmtinputval#html-razor">https://aka.ms/tmtinputval#html-razor</a> Sanitization should be applied on form fields that accept all characters e.g, rich text editor . Refer: <a href="https://aka.ms/tmtinputval#richtext">https://aka.ms/tmtinputval#richtext</a> Do not assign DOM elements to sinks that do not have inbuilt encoding . Refer: <a href="https://aka.ms/tmtinputval#inbuilt-encode">https://aka.ms/tmtinputval#inbuilt-encode</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deface the target web application by injecting malicious code or uploading dangerous files false T An attacker steals messages off the network and replays them in order to steal a user's session (source is 'SE.EI.TMCore.Browser' and target is 'SE.P.TMCore.WebApp') TH33 UserThreatDescription Description false An attacker steals messages off the network and replays them in order to steal a user's session 22222222-2222-2222-2222-222222222222 0 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An attacker steals messages off the network and replays them in order to steal a user's session false T An adversary may leverage known vulnerabilities and exploit a device if the firmware of the device is not updated source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway' TH39 UserThreatDescription Description false An adversary may leverage known vulnerabilities and exploit a device if the firmware of the device is not updated 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that the Cloud Gateway implements a process to keep the connected devices firmware up to date. Refer: <a href="https://aka.ms/tmtconfigmgmt#cloud-firmware">https://aka.ms/tmtconfigmgmt#cloud-firmware</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may exploit known vulnerabilities in unpatched devices false T An adversary may partially or wholly replace the software running on {target.Name}, potentially allowing the replaced software to leverage the genuine identity of the device if the key material or the cryptographic facilities holding key materials were available to the illicit program. For example an attacker may leverage extracted key material to intercept and suppress data from the device on the communication path and replace it with false data that is authenticated with the stolen key material. source is 'SE.EI.TMCore.IoTdevice' or source is 'SE.GP.TMCore.IoTFieldGateway' TH43 UserThreatDescription Description false An adversary may partially or wholly replace the software running on {target.Name}, potentially allowing the replaced software to leverage the genuine identity of the device if the key material or the cryptographic facilities holding key materials were available to the illicit program. For example an attacker may leverage extracted key material to intercept and suppress data from the device on the communication path and replace it with false data that is authenticated with the stolen key material. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Store Cryptographic Keys securely on IoT Device. Refer: <a href="https://aka.ms/tmtcrypto#keys-iot">https://aka.ms/tmtcrypto#keys-iot</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may tamper {source.Name} and extract cryptographic key material from it false T An adversary may perform a Man-In-The-Middle attack on the encrypted traffic sent to {target.Name} (source is 'SE.GP.TMCore.IoTFieldGateway' or source is 'SE.GP.TMCore.IoTCloudGateway') and (target is 'SE.EI.TMCore.IoTdevice' or target is 'SE.GP.TMCore.IoTFieldGateway') TH45 UserThreatDescription Description false An adversary may perform a Man-In-The-Middle attack on the encrypted traffic sent to {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections. Refer: <a href="https://aka.ms/tmtcommsec#x509-ssltls">https://aka.ms/tmtcommsec#x509-ssltls</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may attempt to intercept encrypted traffic sent to {target.Name} false T An adversary may launch malicious code into {target.Name} and execute it target is 'SE.EI.TMCore.IoTdevice' or target is 'SE.GP.TMCore.IoTFieldGateway' TH46 UserThreatDescription Description false An adversary may launch malicious code into {target.Name} and execute it 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that unknown code cannot execute on devices. Refer: <a href="https://aka.ms/tmtconfigmgmt#unknown-exe">https://aka.ms/tmtconfigmgmt#unknown-exe</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may execute unknown code on {target.Name} false T An adversary may launch offline attacks made by disabling or circumventing the installed operating system, or made by physically separating the storage media from the device in order to attack the data separately. source is 'SE.EI.TMCore.IoTdevice' TH47 UserThreatDescription Description false An adversary may launch offline attacks made by disabling or circumventing the installed operating system, or made by physically separating the storage media from the device in order to attack the data separately. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt OS and additional partitions of IoT Device with Bitlocker. Refer: <a href="https://aka.ms/tmtconfigmgmt#partition-iot">https://aka.ms/tmtconfigmgmt#partition-iot</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may tamper the OS of a device and launch offline attacks false T An adversary may eavesdrop and interfere with the communication between a client and Event Hub and possibly tamper the data that is transmitted target is 'SE.P.TMCore.AzureEventHub' TH61 UserThreatDescription Description false An adversary may eavesdrop and interfere with the communication between a client and Event Hub and possibly tamper the data that is transmitted 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Secure communication to Event Hub using SSL/TLS. Refer: <a href="https://aka.ms/tmtcommsec#comm-ssltls">https://aka.ms/tmtcommsec#comm-ssltls</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may eavesdrop the communication between the a client and Event Hub false T An adversary can tamper the data uploaded to {target.Name} storage when HTTPS cannot be enabled. target is 'SE.DS.TMCore.AzureStorage' and target.b3ece90f-c578-4a48-b4d4-89d97614e0d2 is 'Blob' and target.229f2e53-bc3f-476c-8ac9-57da37efd00f is 'True' target is 'SE.DS.TMCore.AzureStorage' and target.b3ece90f-c578-4a48-b4d4-89d97614e0d2 is 'Blob' TH66 UserThreatDescription Description false An adversary can tamper the data uploaded to {target.Name} storage when HTTPS cannot be enabled. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Validate the hash (which should be generated using a cryptographically strong hashing algorithm) after downloading the blob if HTTPS cannot be enabled. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can tamper the data uploaded to {target.Name} when HTTPS cannot be enabled false T The source of a package is the individual or organization that created the package. Running a package from an unknown or untrusted source might be risky. target is 'SE.DS.TMCore.SQL' and target.649208cc-3b55-40ff-94b9-015c0fb0c9e8 is 'Yes' TH88 UserThreatDescription Description false The source of a package is the individual or organization that created the package. Running a package from an unknown or untrusted source might be risky. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false SSIS packages should be encrypted and digitally signed . Refer: <a href="https://aka.ms/tmtcrypto#ssis-signed">https://aka.ms/tmtcrypto#ssis-signed</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can tamper SSIS packages and cause undesirable consequences false T An adversary may leverage the lack of intrusion detection and prevention of anomalous database activities and trigger anomalous traffic to database target is 'SE.DS.TMCore.SQL' TH89 UserThreatDescription Description false An adversary may leverage the lack of intrusion detection and prevention of anomalous database activities and trigger anomalous traffic to database 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable Threat detection on Azure SQL database. Refer: <a href="https://aka.ms/tmtauditlog#threat-detection">https://aka.ms/tmtauditlog#threat-detection</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may leverage the lack of monitoring systems and trigger anomalous traffic to database false T An adversary may gain unauthorized access to {source.Name}, tamper its OS and get access to confidential information in the field gateway source is 'SE.GP.TMCore.IoTFieldGateway' TH92 UserThreatDescription Description false An adversary may gain unauthorized access to {source.Name}, tamper its OS and get access to confidential information in the field gateway 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt OS and additional partitions of IoT Field Gateway with Bitlocker. Refer: <a href="https://aka.ms/tmtconfigmgmt#field-bitlocker">https://aka.ms/tmtconfigmgmt#field-bitlocker</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to IoT Field Gateway and tamper its OS false T An adversary can use various tools, reverse engineer binaries and abuse them by tampering source is 'SE.EI.TMCore.Mobile' TH95 UserThreatDescription Description false An adversary can use various tools, reverse engineer binaries and abuse them by tampering 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Obfuscate generated binaries before distributing to end users. Refer: <a href="https://aka.ms/tmtdata#binaries-end">https://aka.ms/tmtdata#binaries-end</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can reverse engineer and tamper binaries false T SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. target is 'SE.P.TMCore.WebApp' TH96 UserThreatDescription Description false SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that type-safe parameters are used in Web Application for data access. Refer: <a href="https://aka.ms/tmtinputval#typesafe">https://aka.ms/tmtinputval#typesafe</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by performing SQL injection through Web App false T SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. target is 'SE.P.TMCore.WebAPI' TH97 UserThreatDescription Description false SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of SQL Server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed. A less direct attack injects malicious code into strings that are destined for storage in a table or as metadata. When the stored strings are subsequently concatenated into a dynamic SQL command, the malicious code is executed. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that type-safe parameters are used in Web API for data access. Refer: <a href="https://aka.ms/tmtinputval#typesafe-api">https://aka.ms/tmtinputval#typesafe-api</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data by performing SQL injection through Web API false T An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. target is 'SE.P.TMCore.WebApp' TH98 UserThreatDescription Description false An adversary can gain access to the config files. and if sensitive data is stored in it, it would be compromised. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Encrypt sections of Web App's configuration files that contain sensitive data. Refer: <a href="https://aka.ms/tmtdata#encrypt-data">https://aka.ms/tmtdata#encrypt-data</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to sensitive data stored in Web App's config files false E An adversary can gain unauthorized access to Azure SQL DB instances due to weak network security configuration. target is 'SE.DS.TMCore.AzureSQLDB' and not target.e68e212d-896e-403e-8a2d-8c6d2b2505df is 'Allow access from selected networks' TH143 UserThreatDescription Description false An adversary can gain unauthorized access to Azure SQL DB instances due to weak network security configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure SQL Database instances by configuring server-level and database-level firewall rules to permit connections from selected networks (e.g. a virtual network or a custom set of IP addresses) where possible. Refer:<a href="https://aka.ms/tmt-th143">https://aka.ms/tmt-th143</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure SQL DB instances due to weak network security configuration. false I An adversary can read confidential data due to weak connection string configuration. target is 'SE.DS.TMCore.AzureSQLDB' TH144 UserThreatDescription Description false An adversary can read confidential data due to weak connection string configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Clients connecting to an Azure SQL Database instance using a connection string should ensure encrypt=true and trustservercertificate=false are set. This configuration ensures that connections are encrypted only if there is a verifiable server certificate (otherwise the connection attempt fails). This helps protect against Man-In-The-Middle attacks. Refer: <a href="https://aka.ms/tmt-th144">https://aka.ms/tmt-th144</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can read confidential data due to weak connection string configuration false I An adversary having access to the storage container (e.g. physical access to the storage media) may be able to read sensitive data. target is 'SE.DS.TMCore.AzureSQLDB' and not target.3a2a095f-94bc-467f-987c-8dac8307cdc6 is 'True' TH145 UserThreatDescription Description false An adversary having access to the storage container (e.g. physical access to the storage media) may be able to read sensitive data. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable Transparent Data Encryption (TDE) on Azure SQL Database instances to have data encrypted at rest. Refer:<a href="https://aka.ms/tmt-th145a">https://aka.ms/tmt-th145a</a>. Use the Always Encrypted feature to allow client applications to encrypt sensitive data before it is sent to the Azure SQL Database. Refer: <a href="https://aka.ms/tmt-th145b">https://aka.ms/tmt-th145b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary having access to the storage container (e.g. physical access to the storage media) may be able to read sensitive data false E A compromised identity may permit more privileges than intended to an adversary due to weak permission and role assignments. target is 'SE.DS.TMCore.AzureSQLDB' TH146 UserThreatDescription Description false A compromised identity may permit more privileges than intended to an adversary due to weak permission and role assignments. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to review permission and role assignments to ensure the users are granted the least privileges necessary. Refer: <a href="https://aka.ms/tmt-th146">https://aka.ms/tmt-th146</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 A compromised identity may permit more privileges than intended to an adversary due to weak permission and role assignments false R An adversary can deny actions performed on {target.Name} due to a lack of auditing. target is 'SE.DS.TMCore.AzureSQLDB' and target.6a3509e5-a3fd-41db-8dea-6fb44b031e4b is 'True' target is 'SE.DS.TMCore.AzureSQLDB' TH147 UserThreatDescription Description false An adversary can deny actions performed on {target.Name} due to a lack of auditing. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable auditing on Azure SQL Database instances to track and log database events. After configuring and customizing the audited events, enable threat detection to receive alerts on anomalous database activities indicating potential security threats. Refer: <a href="https://aka.ms/tmt-th147">https://aka.ms/tmt-th147</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions performed on {target.Name} due to a lack of auditing false E An adversary can gain long term, persistent access to an Azure SQL DB instance through the compromise of local user account password(s). target is 'SE.DS.TMCore.AzureSQLDB' TH148 UserThreatDescription Description false An adversary can gain long term, persistent access to an Azure SQL DB instance through the compromise of local user account password(s). 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain long term, persistent access to an Azure SQL DB instance through the compromise of local user account password(s) false E An adversary may abuse weak {target.Name} configuration. target is 'SE.DS.TMCore.AzureSQLDB' and target.212cf67e-047a-4617-860f-92282e04b8d8 is 'True' target is 'SE.DS.TMCore.AzureSQLDB' TH149 UserThreatDescription Description false An adversary may abuse weak {target.Name} configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable SQL Vulnerability Assessment to gain visibility into the security posture of your Azure SQL Database instances. Acting on the assessment results help reduce attack surface and enhance your database security. Refer: <a href="https://aka.ms/tmt-th149">https://aka.ms/tmt-th149</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may abuse weak {target.Name} configuration false E An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration. target is 'SE.DS.TMCore.AzureMySQLDB' and not target.9afccb81-bc8b-4527-ad05-f90ec3e396cb is 'Allow access from selected networks' TH150 UserThreatDescription Description false An adversary can gain unauthorized access to Azure MySQL DB instances due to weak network security configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure MySQL DB instances by configuring server-level firewall rules to only permit connections from selected IP addresses where possible. Refer: <a href="https://aka.ms/tmt-th150">https://aka.ms/tmt-th150</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure MySQL DB instances due to weak network security configuration false T An adversary may read and/or tamper with the data transmitted to {target.Name} due to weak configuration. target is 'SE.DS.TMCore.AzureMySQLDB' and not target.4d3b2548-8c31-460e-88e5-4c26135003ac is 'True' TH151 UserThreatDescription Description false An adversary may read and/or tamper with the data transmitted to Azure MySQL DB due to weak configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enforce communication between clients and Azure MySQL DB to be over SSL/TLS by enabling the Enforce SSL connection feature on the server. Check that the connection strings used to connect to MySQL databases have the right configuration (e.g. ssl = true or sslmode=require or sslmode=true are set). Refer: <a href="https://aka.ms/tmt-th151a">https://aka.ms/tmt-th151a</a> Configure MySQL server to use a verifiable SSL certificate (needed for SSL/TLS communication). Refer: <a href="https://aka.ms/tmt-th151b">https://aka.ms/tmt-th151b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may read and/or tamper with the data transmitted to Azure MySQL DB due to weak configuration false E An adversary can gain long term, persistent access to {target.Name} instance through the compromise of local user account password(s). target is 'SE.DS.TMCore.AzureMySQLDB' TH152 UserThreatDescription Description false An adversary can gain long term, persistent access to an Azure MySQL DB instance through the compromise of local user account password(s). 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain long term, persistent access to an Azure MySQL DB instance through the compromise of local user account password(s) false E An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration. target is 'SE.DS.TMCore.AzurePostgresDB' and not target.ba682010-cfcf-4916-9f88-524f8d9ce8a8 is 'Allow access from selected networks' TH153 UserThreatDescription Description false An adversary can gain unauthorized access to Azure Postgres DB instances due to weak network security configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure Postgres DB instances by configuring server-level firewall rules to only permit connections from selected IP addresses where possible. Refer: <a href="https://aka.ms/tmt-th153">https://aka.ms/tmt-th153</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure Postgres DB instances due to weak network security configuration false T An adversary may read and/or tamper with the data transmitted to {target.Name} due to weak configuration. target is 'SE.DS.TMCore.AzurePostgresDB' and not target.65a8827c-6efd-4243-aa81-0625c4aea98e is 'True' TH154 UserThreatDescription Description false An adversary may read and/or tamper with the data transmitted to Azure Postgres DB due to weak configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enforce communication between clients and Azure Postgres DB to be over SSL/TLS by enabling the Enforce SSL connection feature on the server. Check that the connection strings used to connect to MySQL databases have the right configuration (e.g. ssl = true or sslmode=require or sslmode=true are set). Refer: <a href="https://aka.ms/tmt-th154a">https://aka.ms/tmt-th154a</a> Configure MySQL server to use a verifiable SSL certificate (needed for SSL/TLS communication). Refer: <a href="https://aka.ms/tmt-th154b">https://aka.ms/tmt-th154b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may read and/or tamper with the data transmitted to Azure Postgres DB due to weak configuration false E An adversary can gain long term, persistent access to {target.Name} instance through the compromise of local user account password(s). target is 'SE.DS.TMCore.AzurePostgresDB' TH155 UserThreatDescription Description false An adversary can gain long term, persistent access to an Azure Postgres DB instance through the compromise of local user account password(s). 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain long term, persistent access to an Azure Postgres DB instance through the compromise of local user account password(s) false E An adversary can gain unauthorized access to {target.Name} due to weak account policy target is 'SE.DS.TMCore.AzureSQLDWDB' TH156 UserThreatDescription Description false An adversary can gain unauthorized access to {target.Name} due to weak account policy 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false When possible use Azure Active Directory Authentication for Connecting to SQL DW Database. Refer: <a href="https://aka.ms/tmt-th156a">https://aka.ms/tmt-th156a</a>. Ensure that least-privileged accounts are used to connect to SQL DW Database. Refer: <a href="https://aka.ms/tmt-th156b">https://aka.ms/tmt-th156b</a> and <a href="https://aka.ms/tmt-th156c">https://aka.ms/tmt-th156c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to {target.Name} due to weak account policy false E An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration target is 'SE.DS.TMCore.AzureSQLDWDB' and not target.b8c8850c-979b-4db0-b536-9aa364b7e6a2 is 'Allow access from selected networks (excluding Azure)' TH157 UserThreatDescription Description false An adversary can gain unauthorized access to Azure SQL DW DB instances due to weak network security configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure SQL DW DB instances by configuring server-level firewall rules to permit connections from selected networks (e.g. a virtual network or a custom set of IP addresses) where possible. Refer: <a href="https://aka.ms/tmt-th157">https://aka.ms/tmt-th157</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure SQL DW DB instances due to weak network security configuration false T An adversary can read confidential data or tamper with it due to weak connection string configuration at {target.Name} target is 'SE.DS.TMCore.AzureSQLDWDB' TH158 UserThreatDescription Description false An adversary can read confidential data or tamper with it due to weak connection string configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Clients connecting to a Azure SQL DW DB instance using a connection string should ensure that encryption is enabled and trusting the server certificate by default is disabled (e.g. encrypt=true and trustservercertificate=false are set). This configuration ensures that connections are encrypted only if there is a verifiable server certificate (otherwise the connection attempt fails). This helps protect against Man-In-The-Middle attacks. Refer: <a href="https://aka.ms/tmt-th158">https://aka.ms/tmt-th158</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can read confidential data or tamper with it due to weak connection string configuration false I An adversary having access to the storage container (e.g. physical access to the storage media) may read sensitive data target is 'SE.DS.TMCore.AzureSQLDWDB' and not target.d2ce181d-abae-448d-8ef4-9acdbeb839fe is 'True' TH159 UserThreatDescription Description false An adversary having access to the storage container (e.g. physical access to the storage media) may read sensitive data 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable Transparent Data Encryption (TDE) on Azure SQL Data Warehouse Database instances to have data encrypted at rest. Refer: <a href="https://aka.ms/tmt-th159">https://aka.ms/tmt-th159</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary having access to the storage container (e.g. physical access to the storage media) may read sensitive data false E An identity that is compromised may permit more privileges than intended to an adversary due to weak permission and role assignments target is 'SE.DS.TMCore.AzureSQLDWDB' TH160 UserThreatDescription Description false An identity that is compromised may permit more privileges than intended to an adversary due to weak permission and role assignments 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Review permission and role assignments to ensure users are granted the least privileges necessary. Refer: <a href="https://aka.ms/tmt-th160">https://aka.ms/tmt-th160</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An identity that is compromised may permit more privileges than intended to an adversary due to weak permission and role assignments false R An adversary can deny actions performed on {target.Name} due to lack of auditing target is 'SE.DS.TMCore.AzureSQLDWDB' and not target.cd2a18a2-cebd-4b0f-ae4c-964b190e84f2 is 'True' TH161 UserThreatDescription Description false An adversary can deny actions performed on {target.Name} due to lack of auditing 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable auditing on Azure SQL DW DB instances to track and log database events. After configuring and customizing the audited events, enable threat detection to receive alerts on anomalous activities indicating potential security threats. Refer: <a href="https://aka.ms/tmt-th161">https://aka.ms/tmt-th161</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions performed on {target.Name} due to lack of auditing false E An adversary can gain long term, persistent access to {target.Name} through a compromise of its connection string(s) target is 'SE.DS.TMCore.AzureSQLDWDB' TH162 UserThreatDescription Description false An adversary can gain long term, persistent access to {target.Name} through a compromise of its connection string(s) 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain long term, persistent access to {target.Name} through a compromise of its connection string(s) false E An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration target is 'SE.P.TMCore.AzureRedis' and not target.1bda806d-f9b6-4d4e-ab89-bf649f2c2ca5 is 'Allow access from selected networks' TH163 UserThreatDescription Description false An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure Redis Cache instances by configuring firewall rules to only permit connections from selected IP addresses or VNETs where possible. Refer: <a href="https://aka.ms/tmt-th163">https://aka.ms/tmt-th163</a>. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to {target.Name} instances due to weak network security configuration false E An adversary can gain long term, persistent access to {target.Name} instance through a compromise of its access key(s) target is 'SE.P.TMCore.AzureRedis' TH164 UserThreatDescription Description false An adversary can gain long term, persistent access to {target.Name} instance through a compromise of its access key(s) 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false It is recommended to rotate user account passwords (e.g. those used in connection strings) regularly, in accordance with your organization's policies. Store secrets in a secret storage solution (e.g. Azure Key Vault). 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain long term, persistent access to {target.Name} instance through a compromise of its access key(s) false D An adversary may block access to the application or API hosted on {target.Name} through a denial of service attack target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp' TH165 UserThreatDescription Description false An adversary may block access to the application or API hosted on {target.Name} through a denial of service attack 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Network level denial of service mitigations are automatically enabled as part of the Azure platform (Basic Azure DDoS Protection). Refer: <a href="https://aka.ms/tmt-th165a">https://aka.ms/tmt-th165a</a>. Implement application level throttling (e.g. per-user, per-session, per-API) to maintain service availability and protect against DoS attacks. Leverage Azure API Management for managing and protecting APIs. Refer: <a href="https://aka.ms/tmt-th165b">https://aka.ms/tmt-th165b</a>. General throttling guidance, refer: <a href="https://aka.ms/tmt-th165c">https://aka.ms/tmt-th165c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may block access to the application or API hosted on {target.Name} through a denial of service attack false E An adversary may gain long term persistent access to related resources through the compromise of an application identity target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp' TH166 UserThreatDescription Description false An adversary may gain long term persistent access to related resources through the compromise of an application identity 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Store secrets in secret storage solutions where possible, and rotate secrets on a regular cadence. Use Managed Service Identity to create a managed app identity on Azure Active Directory and use it to access AAD-protected resources. Refer: <a href="https://aka.ms/tmt-th166">https://aka.ms/tmt-th166</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain long term persistent access to related resources through the compromise of an application identity false E An adversary may gain unauthorized access to {target.Name} due to weak network configuration (target is 'SE.P.TMCore.AzureAppServiceWebApp' and not target.327ab565-9b38-4f6a-8171-6ab7deb2246b is 'Allow access from selected networks') or (target is 'SE.P.TMCore.AzureAppServiceApiApp' and not target.cb0fca77-c600-4622-b9a5-118107fcd9dd is 'Allow access from selected networks') or (target is 'SE.P.TMCore.AzureAppServiceMobileApp' and not target.9b54ed83-3970-475b-97a0-be7641051497 is 'Allow access from selected networks') TH167 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} due to weak network configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure App Service to selected networks (e.g. IP whitelisting, VNET integrations). Refer: <a href="https://aka.ms/tmt-th167">https://aka.ms/tmt-th167</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} due to weak network configuration false I An adversary can achieve remote code execution on a server hosting an application or API by exploiting JSON deserialization logic (source is 'GE.EI' or source is 'SE.EI.TMCore.Browser') and ((target is 'SE.P.TMCore.AzureAppServiceWebApp' and target.d69db950-2372-4bd3-8328-f751f0b04c03 is 'True') or (target is 'SE.P.TMCore.AzureAppServiceApiApp' and target.0945adcf-1cfd-432f-8032-05391ab62336 is 'True') or (target is 'SE.P.TMCore.AzureAppServiceMobileApp' and target.015d94e3-d54e-4c09-9ce2-2731a0dc86f0 is 'True')) TH168 UserThreatDescription Description false An adversary can achieve remote code execution on a server hosting an application or API by exploiting JSON deserialization logic 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure serialized objects from untrusted sources are not being deserialized, or handle objects that have been serialized using a serializer that only permits primitive data types. Refer: <a href="https://aka.ms/tmt-th168">https://aka.ms/tmt-th168</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can achieve remote code execution on a server hosting an application or API by exploiting JSON deserialization logic false I An adversary can achieve remote code execution on a server hosting an application or API by exploiting XML parsing logic or through XSLT scripting (source is 'GE.EI' or source is 'SE.EI.TMCore.Browser') and ((target is 'SE.P.TMCore.AzureAppServiceWebApp' and target.049c845a-28c2-46f8-bda2-971ff7df9bd4 is 'True') or (target is 'SE.P.TMCore.AzureAppServiceApiApp' and target.0eb10857-97b7-4c8c-8fdd-c289b7921a7e is 'True') or (target is 'SE.P.TMCore.AzureAppServiceMobileApp' and target.6c7ab607-e310-4d74-aa5b-397d87f02ee9 is 'True')) TH169 UserThreatDescription Description false An adversary can achieve remote code execution on a server hosting an application or API by exploiting XML parsing logic or through XSLT scripting 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Disable XSLT scripting for all transforms using untrusted style sheets. Refer: <a href="https://aka.ms/tmt-th169a">https://aka.ms/tmt-th169a</a>. Disable DTD processing and external entity resolution on XML parsers to protect against XXE attacks. Refer: <a href="https://aka.ms/tmt-th169b">https://aka.ms/tmt-th169b</a>, <a href="https://aka.ms/tmt-th169c">https://aka.ms/tmt-th169c</a>, <a href="https://aka.ms/tmt-th169d">https://aka.ms/tmt-th169d</a> and <a href="https://aka.ms/tmt-th169e">https://aka.ms/tmt-th169e</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can achieve remote code execution on a server hosting an application or API by exploiting XML parsing logic or through XSLT scripting false I Attacker can steal user session cookies due to insecure cookie attributes source is 'SE.EI.TMCore.Browser' and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH170 UserThreatDescription Description false Attacker can steal user session cookies due to insecure cookie attributes 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Applications available over HTTPS must use secure cookies. Refer: <a href="https://aka.ms/tmt-th170a">https://aka.ms/tmt-th170a</a>. All HTTP based applications should specify http only for cookie definition. Refer: <a href="https://aka.ms/tmt-th170b">https://aka.ms/tmt-th170b</a> and <a href="https://aka.ms/tmt-th170c">https://aka.ms/tmt-th170c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Attacker can steal user session cookies due to insecure cookie attributes false E An adversary may get access to a user's session due to improper logout from ADFS source is 'SE.P.TMCore.ADFS' and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH171 UserThreatDescription Description false An adversary may get access to a user's session due to improper logout from ADFS 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper logout using WsFederation methods when using ADFS. Refer: <a href="https://aka.ms/tmt-th171">https://aka.ms/tmt-th171</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may get access to a user's session due to improper logout from ADFS false E An adversary may get access to a user's session due to improper logout from Azure AD source is 'SE.P.TMCore.AzureAD' and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH172 UserThreatDescription Description false An adversary may get access to a user's session due to improper logout from Azure AD 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement proper logout using ADAL methods when using Azure AD. Refer: <a href="https://aka.ms/tmt-th172">https://aka.ms/tmt-th172</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may get access to a user's session due to improper logout from Azure AD false R An adversary can deny performing actions against {target.Name} due to lack of auditing, leading to repudiation issues (source is 'GE.EI' or source is 'SE.EI.TMCore.Browser') and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH173 UserThreatDescription Description false An adversary can deny performing actions against {target.Name} due to lack of auditing, leading to repudiation issues 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Implement application level auditing and logging, especially for sensitive operations, like accessing secrets from secrets storage solutions. Other examples include user management events like successful and failed user logins, password resets, password changes, account lockouts and user registrations. 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny performing actions against {target.Name} due to lack of auditing, leading to repudiation issues false I An adversary can fingerprint an Azure web application or API by leveraging server header information (source is 'GE.EI' or source is 'SE.EI.TMCore.Browser') and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH174 UserThreatDescription Description false An adversary can fingerprint an Azure web application or API by leveraging server header information 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Remove standard server headers to avoid fingerprinting. Refer: <a href="https://aka.ms/tmt-th174a">https://aka.ms/tmt-th174a</a> and <a href="https://aka.ms/tmt-th174b">https://aka.ms/tmt-th174b</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can fingerprint an Azure web application or API by leveraging server header information false T An adversary can read sensitive data by sniffing or intercepting traffic to {target.Name} source is 'SE.EI.TMCore.Browser' and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH175 UserThreatDescription Description false An adversary can read sensitive data by sniffing or intercepting traffic to {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Configure SSL certificate for custom domain in Azure App Service. Force all HTTP traffic to the app service to be over HTTPS by enabling the HTTPS only option on the instance. Refer: <a href="https://aka.ms/tmt-th175a">https://aka.ms/tmt-th175a</a> and <a href="https://aka.ms/tmt-th175b">https://aka.ms/tmt-th175b</a>. Enable HTTP Strict Transport Security (HSTS). Refer: <a href="https://aka.ms/tmt-th175c">https://aka.ms/tmt-th175c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can read sensitive data by sniffing or intercepting traffic to {target.Name} false E An adversary may perform action(s) on behalf of another user due to lack of controls against cross domain requests (target is 'SE.P.TMCore.AzureAppServiceWebApp' and target.f6b0309d-2020-4c3f-838f-5ab8ea0d2194 is 'False') or (target is 'SE.P.TMCore.AzureAppServiceApiApp' and target.3f4a2250-9087-44c1-9fb7-61e9eb1e4df7 is 'False') or (target is 'SE.P.TMCore.AzureAppServiceMobileApp' and target.6ddbac5e-2e11-4b88-b917-587749ea4721 is 'False') target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp' TH176 UserThreatDescription Description false An adversary may perform action(s) on behalf of another user due to lack of controls against cross domain requests 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that only trusted origins are allowed if CORS is being used. Refer: <a href="https://aka.ms/tmt-th176">https://aka.ms/tmt-th176</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may perform action(s) on behalf of another user due to lack of controls against cross domain requests false S An adversary may be able to perform action(s) on behalf of another user due to lack of controls against cross domain requests source is 'SE.EI.TMCore.Browser' and (target is 'SE.P.TMCore.AzureAppServiceWebApp' or target is 'SE.P.TMCore.AzureAppServiceApiApp' or target is 'SE.P.TMCore.AzureAppServiceMobileApp') TH177 UserThreatDescription Description false An adversary may be able to perform action(s) on behalf of another user due to lack of controls against cross domain requests 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure that authenticated pages incorporate UI Redressing or clickjacking defences. Refer: <a href="https://aka.ms/tmt-th177a">https://aka.ms/tmt-th177a</a>. Mitigate against Cross-Site Request Forgery (CSRF) attacks. Refer: <a href="https://aka.ms/tmt-th177b">https://aka.ms/tmt-th177b</a> and <a href="https://aka.ms/tmt-th177c">https://aka.ms/tmt-th177c</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may be able to perform action(s) on behalf of another user due to lack of controls against cross domain requests false S An adversary may spoof the service or service endpoints by leveraging stale CNAME DNS records and executing a subdomain hijack attack target is 'SE.P.TMCore.AzureTrafficManager' TH178 UserThreatDescription Description false An adversary may spoof the service or service endpoints by leveraging stale CNAME DNS records and executing a subdomain hijack attack 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Address stale CNAME DNS records mapping custom domain names to the domain name of the Azure Traffic Manager instance. In some cases, deleting the stale CNAME records may be sufficient, while in other cases, the domain name of the Azure Traffic Manager instance should be kept to prevent subdomain hijack attacks. Refer: <a href="https://aka.ms/tmt-th178 ">https://aka.ms/tmt-th178 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may spoof the service or service endpoints by leveraging stale CNAME DNS records and executing a subdomain hijack attack false E An adversary can gain unauthorized access to Azure Key Vault instances due to weak network security configuration. target is 'SE.DS.TMCore.AzureKeyVault' and not target.cd610fb8-4fbd-49c0-966f-8b4634b39262 is 'Allow access from selected networks' TH179 UserThreatDescription Description false An adversary can gain unauthorized access to Azure Key Vault instances due to weak network security configuration. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict access to Azure Key Vault instances by configuring firewall rules to permit connections from selected networks (e.g. a virtual network or a custom set of IP addresses).For Key Vault client applications behind a firewall trying to access a Key Vault instance, see best practices mentioned here: <a href="https://aka.ms/tmt-th179 ">https://aka.ms/tmt-th179 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain unauthorized access to Azure Key Vault instances due to weak network security configuration. false R An adversary can deny actions performed on {target.Name} due to a lack of auditing. target is 'SE.DS.TMCore.AzureKeyVault' and not target.78bf9482-5267-41c6-84fd-bac2fb6ca0b9 is 'True' TH180 UserThreatDescription Description false An adversary can deny actions performed on {target.Name} due to a lack of auditing. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable audit logging on Azure Key Vault instances to monitor how and when the instances are access, and by whom. Use standard Azure access controls to restrict access to the logs. Refer : <a href="https://aka.ms/tmt-th180 ">https://aka.ms/tmt-th180 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can deny actions performed on {target.Name} due to a lack of auditing. false E An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules. target is 'SE.DS.TMCore.AzureKeyVault' TH181 UserThreatDescription Description false An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Access to the Azure Key Vault management plane should be restricted by choosing appropriate Role-Based Access Control (RBAC) roles and privileges in accordance with the principle of least privilege. Over permissive or weak authorization rules may potentially permit data plane access (e.g. a user with Contribute (RBAC) permissions to Key Vault management plane may grant themselves access to the data plane by setting the Azure Key Vault access policy). Refer : <a href="https://aka.ms/tmt-th181 ">https://aka.ms/tmt-th181 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules. false E An adversary may gain unauthorized access to {target.Name} secrets due to weak authorization rules target is 'SE.DS.TMCore.AzureKeyVault' TH182 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} secrets due to weak authorization rules 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Limit Azure Key Vault data plane access by configuring strict access policies. Grant users, groups and applications the ability to perform only the necessary operations against keys or secrets in a Key Vault instance. Follow the principle of least privilege and grant privileges only as needed. Refer : <a href="https://aka.ms/tmt-th181 ">https://aka.ms/tmt-th181 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} secrets due to weak authorization rules false E An adversary can abuse poorly managed service principal Certificate. An adversary may gain unauthorized access to {target.Name} due to compromise of User or Service Principal . target is 'SE.DS.TMCore.AzureKeyVault' and target.ae94fa17-596d-476e-a283-0afc166dcf26 is 'Service or User Principal and Certificate' TH183 UserThreatDescription Description false An adversary can abuse poorly managed service principal Certificate. An adversary may gain unauthorized access to {target.Name} due to compromise of User or Service Principal . 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure secure management and storage of Azure Key Vault Service/User Principal certificate. It is recommended to rotate service principal certificate regularly, in accordance with organizational policies. If supported , use managed identities for Azure resources and details can be found here. Refer : <a href="https://aka.ms/tmt-th183 ">https://aka.ms/tmt-th183 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse poorly managed service principal Certificate. An adversary may gain unauthorized access to {target.Name} due to compromise of User or Service Principal . false E An adversary can abuse poorly managed service principal secret. An adversary may gain unauthorized access to {target.Name} due to compromise of Service Principal Secret . target is 'SE.DS.TMCore.AzureKeyVault' and target.ae94fa17-596d-476e-a283-0afc166dcf26 is 'Service or User Principal and Secret' TH184 UserThreatDescription Description false An adversary can abuse poorly managed service principal secret. An adversary may gain unauthorized access to {target.Name} due to compromise of Service Principal Secret . 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use managed identities for Azure resources and details can be found here at <a href="https://aka.ms/tmt-th183 ">https://aka.ms/tmt-th183</a>. If managed identities is not supported , use Service/User Principal and Certificate. If none of the above options are feasible, please ensure secure management and storage of Azure Key Vault Service/User Principal secret . It is recommended to rotate service/user principal secret regularly, in accordance with organizational policies. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse poorly managed service principal secret. An adversary may gain unauthorized access to {target.Name} due to compromise of Service Principal Secret . false E An adversary can abuse poorly managed authentication/access policies. An adversary may gain unauthorized access to {target.Name} due to compromise of secret/certificate used to authenticate to {target.Name} . target is 'SE.DS.TMCore.AzureKeyVault' and target.ae94fa17-596d-476e-a283-0afc166dcf26 is 'Select' TH185 UserThreatDescription Description false An adversary can abuse poorly managed authentication/access policies. An adversary may gain unauthorized access to {target.Name} due to compromise of secret/certificate used to authenticate to {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use managed identities for Azure resources and details can be found here at <a href="https://aka.ms/tmt-th183 ">https://aka.ms/tmt-th183 </a>. If managed identities is not supported , use Service/User Principal and Certificate. If none of the above options are feasible, please ensure secure management and storage of Azure Key Vault Service/User Principal secret . It is recommended to rotate service/user principal secret regularly, in accordance with organizational policies. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse poorly managed authentication/access policies. An adversary may gain unauthorized access to {target.Name} due to compromise of secret/certificate used to authenticate to {target.Name} . false D An adversary may attempt to delete key vault or key vault object causing business disruption. target is 'SE.DS.TMCore.AzureKeyVault' TH186 UserThreatDescription Description false An adversary may attempt to delete key vault or key vault object causing business disruption. 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Key Vault's soft delete feature allows recovery of the deleted vaults and vault objects, known as soft-delete . Soft deleted resources are retained for a set period of time, 90 days. Refer : <a href="https://aka.ms/tmt-th186 ">https://aka.ms/tmt-th186 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Low 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may attempt to delete key vault or key vault object causing business disruption. false E An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules target is 'SE.P.TMCore.ALA' TH187 UserThreatDescription Description false An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false
+ Access to the Azure Logic Apps management plane should be restricted by assigning the appropriate Role-Based Access Control (RBAC) roles to only those needing the privileges. Follow the principle of least privilege.
+ Refer : <a href="https://aka.ms/tmt-th187 ">https://aka.ms/tmt-th187 </a>
+ 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to manage {target.Name} due to weak authorization rules false E An adversary may gain unauthorized access to {target.Name} workflow run history data due to weak network configuration target is 'SE.P.TMCore.ALA' and not target.0b0ab9bc-a582-4509-a6c4-8d56de65661e is 'Specific IP' TH188 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} workflow run history data due to weak network configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Limit Azure Logic Apps data plane access to workflow run history data by only allowing requests from specific IP address ranges. Grant access only as necessary, adhering to the principle of least privilege. Refer : <a href="https://aka.ms/tmt-th188 ">https://aka.ms/tmt-th188 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} workflow run history data due to weak network configuration false E An adversary may gain unauthorized access to {target.Name} triggers/actions inputs or outputs by workflow run history data target is 'SE.P.TMCore.ALA' and not target.b1724997-7ae6-4b30-a001-9c5b42d9d1d1 is 'No' TH189 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} triggers/actions inputs or outputs by workflow run history data 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enable secure inputs or outputs on the trigger or action to prevent sensitive data from being logged into run history. Refer : <a href="https://aka.ms/tmt-th189 ">https://aka.ms/tmt-th189 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} triggers/actions inputs or outputs by workflow run history data false E An adversary may gain unauthorized access to {target.Name} trigger due to weak controls on the trigger target is 'SE.P.TMCore.ALA' and not target.5afb52dc-dffb-4319-aa22-523f78ee3845 is 'No' TH190 UserThreatDescription Description false An adversary may gain unauthorized access to {target.Name} trigger due to weak controls on the trigger 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Limit access to invoke the trigger by Logic Apps Shared Access Signatures ( SAS) keys and callback URLs. Refer : <a href="https://aka.ms/tmt-th190 ">https://aka.ms/tmt-th190</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to {target.Name} trigger due to weak controls on the trigger false E An adversary may gain unauthorized access to trigger {target.Name} workflows due to weak network configuration target is 'SE.P.TMCore.ALA' and ( target.d488c23c-1667-45a1-994b-f56f2655727b is 'Allow any IP inbound' or target.d488c23c-1667-45a1-994b-f56f2655727b is 'Select') TH191 UserThreatDescription Description false An adversary may gain unauthorized access to trigger {target.Name} workflows due to weak network configuration 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Restrict calls to Azure Logic Apps on a network level, only permitting specific clients (belonging to a set of IP addresses or IP address range) to trigger workflows. Refer : <a href="https://aka.ms/tmt-th191 ">https://aka.ms/tmt-th191</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Design 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to trigger {target.Name} workflows due to weak network configuration false I An adversary may read sensitive workflow parameters due to improper handling and management of workflow parameters and inputs target is 'SE.P.TMCore.ALA' TH192 UserThreatDescription Description false An adversary may read sensitive workflow parameters due to improper handling and management of workflow parameters and inputs 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Define resource parameters and leverage Azure Logic Apps workflow definition language, such as the @parameters() operation, to access resource parameter values at runtime. Use the securestring parameter type to better protect when and how parameter values can be accessed. For sensitive parameters (e.g. secrets), use Azure Key Vault to store and retrieve secrets when needed. Refer : <a href="https://aka.ms/tmt-th192 ">https://aka.ms/tmt-th192</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may read sensitive workflow parameters due to improper handling and management of workflow parameters and inputs false E An adversary can abuse poorly managed credentials or secrets used to access other resources in AAD tenants target is 'SE.P.TMCore.ALA' TH193 UserThreatDescription Description false An adversary can abuse poorly managed credentials or secrets used to access other resources in AAD tenants 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Use managed identities , if possible , for your logic apps to connect to different resources managed in AAD tenant. Refer : <a href="https://aka.ms/tmt-th193 ">https://aka.ms/tmt-th193</a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can abuse poorly managed credentials or secrets used to access other resources in AAD tenants. false E An adversary may gain unauthorized access to run any action on {target.Name} due to weak authorization rules target is 'SE.P.TMCore.ADE' TH194 UserThreatDescription Description false An adversary may gain unauthorized access to run any action on {target.Name} due to weak authorization rules 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure access to run any action on a Kusto resource is restricted by assigning the appropriate Role-Based Access Control (RBAC) roles to only those needing the privileges. Follow the principle of least privilege. Security roles define which security principals (users and applications) can have permissions to operate on a secured resource (such as a database or a table), and what operations are permitted. Refer : 1) <a href="https://aka.ms/tmt-th194 ">https://aka.ms/tmt-th194 </a> 2)<a href="https://aka.ms/tmt-th194a ">https://aka.ms/tmt-th194a </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary may gain unauthorized access to run any action on {target.Name} due to weak authorization rules false I Secret information should not be logged in {target.Name} target is 'SE.P.TMCore.ADE' TH195 UserThreatDescription Description false Secret information should not be logged in {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Ensure any secret information like passwords , SAS Tokens , refresh tokens etc are not logged in Azure Data Explorer. 22222222-2222-2222-2222-222222222222 2 Priority Severity false High 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Secret information should not be logged in {target.Name} false I Sensitive information might get disclosed while querying {target.Name} target is 'SE.P.TMCore.ADE' TH196 UserThreatDescription Description false Sensitive information might get disclosed while querying {target.Name} 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false RestrictedViewAccess policy can be enabled on tables in database which contain sensitive information and only principals with "UnrestrictedViewer" role in the database can query that data.Refer : <a href="https://aka.ms/tmt-th196 ">https://aka.ms/tmt-th196 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 Sensitive information might get disclosed while querying {target.Name} false E An adversary can run malicious Kusto queries on {target.Name} if user provided input is used in non-parameterised queries target is 'SE.P.TMCore.ADE' TH197 UserThreatDescription Description false An adversary can run malicious Kusto queries on {target.Name} if user provided input is used in non-parameterised queries 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Please use query parameters to protect against injection attacks.Refer : <a href="https://aka.ms/tmt-th197 ">https://aka.ms/tmt-th197 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can run malicious Kusto queries on {target.Name} if user provided input is used in non-parameterised queries false I An adversary can gain access to unencrypted sensitive data stored in {target.Name} cluster target is 'SE.P.TMCore.ADE' TH198 UserThreatDescription Description false An adversary can gain access to unencrypted sensitive data stored in {target.Name} cluster 22222222-2222-2222-2222-222222222222 0 PossibleMitigations Possible Mitigation(s) false Enabling encryption at rest on your cluster provides data protection for stored data (at rest). Refer : <a href="https://aka.ms/tmt-th198 ">https://aka.ms/tmt-th198 </a> 22222222-2222-2222-2222-222222222222 2 Priority Severity false Medium 22222222-2222-2222-2222-222222222222 1 SDLPhase SDL Phase false Implementation 22222222-2222-2222-2222-222222222222 1 An adversary can gain access to unencrypted sensitive data stored in {target.Name} cluster
\ No newline at end of file
diff --git a/tests/resources/example.template b/tests/resources/example.template
new file mode 100644
index 00000000..88287e45
--- /dev/null
+++ b/tests/resources/example.template
@@ -0,0 +1,157 @@
+{
+ "AWSTemplateFormatVersion" : "2010-09-09",
+
+ "Description" : "AWS CloudFormation Sample Template RDS_MySQL_With_Read_Replica: Sample template showing how to create a highly-available, RDS DBInstance with a read replica. **WARNING** This template creates an Amazon Relational Database Service database instance and Amazon CloudWatch alarms. You will be billed for the AWS resources used if you create a stack from this template.",
+
+ "Parameters": {
+ "DBName": {
+ "Default": "MyDatabase",
+ "Description" : "The database name",
+ "Type": "String",
+ "MinLength": "1",
+ "MaxLength": "64",
+ "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*",
+ "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters."
+ },
+
+ "DBUser": {
+ "NoEcho": "true",
+ "Description" : "The database admin account username",
+ "Type": "String",
+ "MinLength": "1",
+ "MaxLength": "16",
+ "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*",
+ "ConstraintDescription" : "must begin with a letter and contain only alphanumeric characters."
+ },
+
+ "DBPassword": {
+ "NoEcho": "true",
+ "Description" : "The database admin account password",
+ "Type": "String",
+ "MinLength": "1",
+ "MaxLength": "41",
+ "AllowedPattern" : "[a-zA-Z0-9]+",
+ "ConstraintDescription" : "must contain only alphanumeric characters."
+ },
+
+ "DBAllocatedStorage": {
+ "Default": "5",
+ "Description" : "The size of the database (Gb)",
+ "Type": "Number",
+ "MinValue": "5",
+ "MaxValue": "1024",
+ "ConstraintDescription" : "must be between 5 and 1024Gb."
+ },
+
+ "DBInstanceClass": {
+ "Description" : "The database instance type",
+ "Type": "String",
+ "Default": "db.t2.small",
+ "AllowedValues" : [ "db.t1.micro", "db.m1.small", "db.m1.medium", "db.m1.large", "db.m1.xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.m3.medium", "db.m3.large", "db.m3.xlarge", "db.m3.2xlarge", "db.m4.large", "db.m4.xlarge", "db.m4.2xlarge", "db.m4.4xlarge", "db.m4.10xlarge", "db.r3.large", "db.r3.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", "db.m2.xlarge", "db.m2.2xlarge", "db.m2.4xlarge", "db.cr1.8xlarge", "db.t2.micro", "db.t2.small", "db.t2.medium", "db.t2.large"]
+,
+ "ConstraintDescription" : "must select a valid database instance type."
+ },
+
+ "EC2SecurityGroup": {
+ "Description" : "The EC2 security group that contains instances that need access to the database",
+ "Default": "default",
+ "Type": "String",
+ "AllowedPattern" : "[a-zA-Z0-9\\-]+",
+ "ConstraintDescription" : "must be a valid security group name."
+ },
+
+ "MultiAZ" : {
+ "Description" : "Multi-AZ master database",
+ "Type" : "String",
+ "Default" : "false",
+ "AllowedValues" : [ "true", "false" ],
+ "ConstraintDescription" : "must be true or false."
+ }
+ },
+
+ "Conditions" : {
+ "Is-EC2-VPC" : { "Fn::Or" : [ {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "eu-central-1" ]},
+ {"Fn::Equals" : [{"Ref" : "AWS::Region"}, "cn-north-1" ]}]},
+ "Is-EC2-Classic" : { "Fn::Not" : [{ "Condition" : "Is-EC2-VPC"}]}
+ },
+
+ "Resources" : {
+
+ "DBEC2SecurityGroup": {
+ "Type": "AWS::EC2::SecurityGroup",
+ "Condition" : "Is-EC2-VPC",
+ "Properties" : {
+ "GroupDescription": "Open database for access",
+ "SecurityGroupIngress" : [{
+ "IpProtocol" : "tcp",
+ "FromPort" : "3306",
+ "ToPort" : "3306",
+ "SourceSecurityGroupName" : { "Ref" : "EC2SecurityGroup" }
+ }]
+ }
+ },
+
+ "DBSecurityGroup": {
+ "Type": "AWS::RDS::DBSecurityGroup",
+ "Condition" : "Is-EC2-Classic",
+ "Properties": {
+ "DBSecurityGroupIngress": {
+ "EC2SecurityGroupName": { "Ref": "EC2SecurityGroup" }
+ },
+ "GroupDescription": "database access"
+ }
+ },
+
+ "MasterDB" : {
+ "Type" : "AWS::RDS::DBInstance",
+ "Properties" : {
+ "DBName" : { "Ref" : "DBName" },
+ "AllocatedStorage" : { "Ref" : "DBAllocatedStorage" },
+ "DBInstanceClass" : { "Ref" : "DBInstanceClass" },
+ "Engine" : "MySQL",
+ "MasterUsername" : { "Ref" : "DBUser" },
+ "MasterUserPassword" : { "Ref" : "DBPassword" },
+ "MultiAZ" : { "Ref" : "MultiAZ" },
+ "Tags" : [{ "Key" : "Name", "Value" : "Master Database" }],
+ "VPCSecurityGroups": { "Fn::If" : [ "Is-EC2-VPC", [ { "Fn::GetAtt": [ "DBEC2SecurityGroup", "GroupId" ] } ], { "Ref" : "AWS::NoValue"}]},
+ "DBSecurityGroups": { "Fn::If" : [ "Is-EC2-Classic", [ { "Ref": "DBSecurityGroup" } ], { "Ref" : "AWS::NoValue"}]}
+ },
+ "DeletionPolicy" : "Snapshot"
+ },
+
+ "ReplicaDB" : {
+ "Type" : "AWS::RDS::DBInstance",
+ "Properties" : {
+ "SourceDBInstanceIdentifier" : { "Ref" : "MasterDB" },
+ "DBInstanceClass" : { "Ref" : "DBInstanceClass" },
+ "Tags" : [{ "Key" : "Name", "Value" : "Read Replica Database" }]
+ }
+ }
+ },
+
+ "Outputs" : {
+ "EC2Platform" : {
+ "Description" : "Platform in which this stack is deployed",
+ "Value" : { "Fn::If" : [ "Is-EC2-VPC", "EC2-VPC", "EC2-Classic" ]}
+ },
+
+ "MasterJDBCConnectionString": {
+ "Description" : "JDBC connection string for the master database",
+ "Value" : { "Fn::Join": [ "", [ "jdbc:mysql://",
+ { "Fn::GetAtt": [ "MasterDB", "Endpoint.Address" ] },
+ ":",
+ { "Fn::GetAtt": [ "MasterDB", "Endpoint.Port" ] },
+ "/",
+ { "Ref": "DBName" }]]}
+ },
+ "ReplicaJDBCConnectionString": {
+ "Description" : "JDBC connection string for the replica database",
+ "Value" : { "Fn::Join": [ "", [ "jdbc:mysql://",
+ { "Fn::GetAtt": [ "ReplicaDB", "Endpoint.Address" ] },
+ ":",
+ { "Fn::GetAtt": [ "ReplicaDB", "Endpoint.Port" ] },
+ "/",
+ { "Ref": "DBName" }]]}
+ }
+ }
+}
diff --git a/tests/resources/test_resource_paths.py b/tests/resources/test_resource_paths.py
index 35a089aa..801333fa 100644
--- a/tests/resources/test_resource_paths.py
+++ b/tests/resources/test_resource_paths.py
@@ -5,6 +5,7 @@
# GENERIC
example_json = f'{path}/example.json'
example_yaml = f'{path}/example.yaml'
+example_template = f'{path}/example.template'
invalid_yaml = f'{path}/invalid-yaml.yaml'
invalid_tf = f'{path}/invalid-tf.tf'
example_gzip = f'{path}/example.gz'
@@ -22,6 +23,7 @@
cloudformation_for_security_group_tests_2_json = f'{path}/cloudformation/cloudformation_for_security_group_tests_2.json'
cloudformation_for_security_groups_mapping = f'{path}/cloudformation/cloudformation_for_security_group_tests_mapping_definitions.yaml'
cloudformation_gz = f'{path}/cloudformation/cloudformation.gz'
+cloudformation_empty_file = f'{path}/cloudformation/cloudformation_empty_file.json'
cloudformation_invalid_size = f'{path}/cloudformation/cloudformation-invalid-size.json'
cloudformation_malformed_mapping_wrong_id = f'{path}/cloudformation/cloudformation_malformed_mapping_wrong_id.yaml'
cloudformation_component_without_parent = f'{path}/cloudformation/cloudformation_component_without_parent.json'
@@ -34,8 +36,14 @@
cloudformation_ref_short_syntax = f'{path}/cloudformation/cloudformation_ref_short_syntax.yaml'
# mapping
default_cloudformation_mapping = f'{path}/cloudformation/cloudformation_mapping.yaml'
+old_cloudformation_default_mapping = f'{path}/cloudformation/old_cloudformation_default_mapping.yaml'
cloudformation_mapping_component_without_parent = f'{path}/cloudformation/cloudformation_mapping_component_without_parent.yaml'
cloudformation_mapping_all_functions = f'{path}/cloudformation/cloudformation_mapping_all_functions.yaml'
+cloudformation_mapping_no_dataflows = f'{path}/cloudformation/cloudformation_mapping_no_dataflows.yaml'
+cloudformation_mapping_trustzone_no_id = f'{path}/cloudformation/cloudformation_mapping_trustzone_no_id.yaml'
+cloudformation_custom_mapping_file = f'{path}/cloudformation/cloudformation_custom_mapping_file.yaml'
+cloudformation_wrong_mapping_file = f'{path}/cloudformation/cloudformation_wrong_mapping_file.yaml'
+
# expected otm results
cloudformation_for_mappings_tests_json_otm_expected = f'{path}/cloudformation/cloudformation_for_mappings_tests.otm'
@@ -70,6 +78,13 @@
# expected otm results
terraform_aws_simple_components_otm_expected = f'{path}/terraform/aws_simple_components.otm'
+# TERRAFORM PLAN
+terraform_plan_official = f'{path}/tfplan/official-tfplan.json'
+terraform_graph_official = f'{path}/tfplan/official-tfgraph.gv'
+# mapping
+terraform_plan_default_mapping_file = f'{path}/tfplan/iriusrisk-tfplan-aws-mapping.yaml'
+terraform_plan_custom_mapping_file = f'{path}/tfplan/iriusrisk-tfplan-custom-mapping.yaml'
+
# VISIO
visio_aws_vsdx_folder = f'{path}/visio/'
@@ -129,5 +144,8 @@
# DRAWIO
drawio_multi_page = f'{path}/drawio/drawio-multi-page.drawio'
default_drawio_mapping = f'{path}/drawio/drawio_mapping.yaml'
-drawio_minimal = f'{path}/drawio/aws_minimal.drawio.xml'
+drawio_minimal_xml = f'{path}/drawio/aws_minimal.drawio.xml'
+drawio_minimal_drawio = f'{path}/drawio/aws_minimal.drawio'
lean_ix_drawio = f'{path}/drawio/lean_ix.drawio.xml'
+custom_drawio_mapping = f'{path}/drawio/custom_drawio_mapping.yaml'
+invalid_extension_mtmt_file = f'{path}/drawio/invalid-extension-mtmt-mobile-api.tm7'
diff --git a/tests/resources/tfplan/iriusrisk-tfplan-aws-mapping.yaml b/tests/resources/tfplan/iriusrisk-tfplan-aws-mapping.yaml
new file mode 100644
index 00000000..9bbc303a
--- /dev/null
+++ b/tests/resources/tfplan/iriusrisk-tfplan-aws-mapping.yaml
@@ -0,0 +1,180 @@
+trustzones:
+ - type: b61d6911-338d-46a8-9f39-8dcd24abfe91
+ name: Public Cloud
+ risk:
+ trust_rating: 10
+ $default: true
+
+ - type: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+ name: Internet
+ risk:
+ trust_rating: 1
+
+components:
+
+ - label: aws_acm_certificate
+ type: CD-ACM
+ $singleton: true
+
+ - label: aws_cloudwatch_metric_alarm
+ type: cloudwatch
+ $singleton: true
+
+ - label: aws_dynamodb_table
+ type: dynamodb
+
+ - label: aws_vpc
+ type: vpc
+
+ - label: aws_instance
+ type: ec2
+
+ - label: aws_subnet
+ type: empty-component
+
+ - label: aws_vpc_endpoint
+ type: empty-component
+
+ - label: aws_internet_gateway
+ type: empty-component
+
+ - label: aws_ecs_service
+ type: elastic-container-service
+
+ - label: aws_ecs_task_definition
+ type: docker-container
+
+ - label: ["aws_lb", "aws_elb", "aws_alb"]
+ type: load-balancer
+
+ - label: aws_kms_key
+ type: kms
+ $singleton: true
+
+ - label: aws_lambda_function
+ type: aws-lambda-function
+
+ - label: aws_cloudwatch_log_group
+ type: cloudwatch
+ $singleton: true
+
+ - label: ["aws_db_instance", "aws_rds_cluster"]
+ type: rds
+
+ - label: aws_route53_zone
+ type: route-53
+
+ - label: aws_autoscaling_group
+ type: CD-EC2-AUTO-SCALING
+
+ - label: cloudflare_record
+ type: empty-component
+
+ - label: aws_s3_bucket
+ type: s3
+
+ - label: aws_secretsmanager_secret
+ type: CD-SECRETS-MANAGER
+ $singleton: true
+
+ - label: aws_sqs_queue
+ type: sqs-simple-queue-service
+
+ - label: {$regex: ^aws_ssm_\w*$}
+ type: CD-SYSTEMS-MANAGER
+ $singleton: true
+
+ - label: aws_synthetics_canary
+ type: empty-component
+
+ - label: {$regex: ^aws_api_gateway_\w*$}
+ type: api-gateway
+ $singleton: true
+
+ - label: {$regex: ^aws_athena_\w*$}
+ type: athena
+ $singleton: true
+
+ - label: {$regex: ^aws_mq_\w*$}
+ type: CD-MQ
+ $singleton: true
+
+ - label: {$regex: ^aws_cloudfront_\w*$}
+ type: cf-cloudfront
+ $singleton: true
+
+ - label: aws_cloudtrail
+ type: cloudtrail
+
+ - label: ["aws_cognito_user_pool", "aws_cognito_identity_pool"]
+ type: cognito
+
+ - label: {$regex: ^aws_config_\w*$}
+ type: CD-CONFIG
+ $singleton: true
+
+ - label: {$regex: ^aws_ecr_\w*$}
+ type: elastic-container-registry
+ $singleton: true
+
+ - label: aws_eks_cluster
+ type: elastic-container-kubernetes
+
+ - label: {$regex: ^aws_elasticache_\w*$}
+ type: elasticache
+ $singleton: true
+
+ - label: {$regex: ^aws_guardduty_\w*$}
+ type: CD-GUARDDUTY
+ $singleton: true
+
+ - label: {$regex: ^aws_inspector_\w*$}
+ type: CD-INSPECTOR
+ $singleton: true
+
+ - label: {$regex: ^aws_macie2_\w*$}
+ type: CD-MACIE
+ $singleton: true
+
+ - label: aws_networkfirewall_firewall
+ type: CD-AWS-NETWORK-FIREWALL
+
+ - label: aws_redshift_cluster
+ type: redshift
+
+ - label: {$regex: ^aws_ses_\w*$}
+ type: CD-SES
+ $singleton: true
+
+ - label: {$regex: ^aws_sns_\w*$}
+ type: sns
+ $singleton: true
+
+ - label: {$regex: ^aws_sfn_\w*$}
+ type: step-functions
+
+ - label: {$regex: ^aws_waf_\w*$}
+ type: CD-WAF
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_analytics_\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_stream\w*$}
+ type: kinesis-data-analytics
+ $singleton: true
+
+ - label: {$regex: ^aws_kinesis_firehose_\w*$}
+ type: kinesis-data-firehose
+ $singleton: true
+
+configuration:
+ attack_surface:
+ client: generic-client
+ trustzone: f0ba7722-39b6-4c81-8290-a30a248bb8d9
+
+# skip:
+# - aws_security_group
+# - aws_db_subnet_group
+# catch_all: empty-component
\ No newline at end of file
diff --git a/tests/resources/tfplan/iriusrisk-tfplan-custom-mapping.yaml b/tests/resources/tfplan/iriusrisk-tfplan-custom-mapping.yaml
new file mode 100644
index 00000000..22d47549
--- /dev/null
+++ b/tests/resources/tfplan/iriusrisk-tfplan-custom-mapping.yaml
@@ -0,0 +1,3 @@
+components:
+ - label: aws_dynamodb_table
+ type: empty-component
diff --git a/tests/resources/tfplan/official-tfgraph.gv b/tests/resources/tfplan/official-tfgraph.gv
new file mode 100644
index 00000000..947f8a4a
--- /dev/null
+++ b/tests/resources/tfplan/official-tfgraph.gv
@@ -0,0 +1,140 @@
+digraph {
+ compound = "true"
+ newrank = "true"
+ subgraph "root" {
+ "[root] aws_api_gateway_account.click_logger_api_gateway_account (expand)" [label = "aws_api_gateway_account.click_logger_api_gateway_account", shape = "box"]
+ "[root] aws_api_gateway_authorizer.clicklogger-authorizer (expand)" [label = "aws_api_gateway_authorizer.clicklogger-authorizer", shape = "box"]
+ "[root] aws_api_gateway_deployment.clicklogger_deployment (expand)" [label = "aws_api_gateway_deployment.clicklogger_deployment", shape = "box"]
+ "[root] aws_api_gateway_integration.integration (expand)" [label = "aws_api_gateway_integration.integration", shape = "box"]
+ "[root] aws_api_gateway_integration_response.MyDemoIntegrationResponse (expand)" [label = "aws_api_gateway_integration_response.MyDemoIntegrationResponse", shape = "box"]
+ "[root] aws_api_gateway_method.method (expand)" [label = "aws_api_gateway_method.method", shape = "box"]
+ "[root] aws_api_gateway_method_response.response_200 (expand)" [label = "aws_api_gateway_method_response.response_200", shape = "box"]
+ "[root] aws_api_gateway_method_settings.general_settings (expand)" [label = "aws_api_gateway_method_settings.general_settings", shape = "box"]
+ "[root] aws_api_gateway_model.clicklogger_model (expand)" [label = "aws_api_gateway_model.clicklogger_model", shape = "box"]
+ "[root] aws_api_gateway_request_validator.clicklogger_validator (expand)" [label = "aws_api_gateway_request_validator.clicklogger_validator", shape = "box"]
+ "[root] aws_api_gateway_resource.resource (expand)" [label = "aws_api_gateway_resource.resource", shape = "box"]
+ "[root] aws_api_gateway_rest_api.click_logger_api (expand)" [label = "aws_api_gateway_rest_api.click_logger_api", shape = "box"]
+ "[root] aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group (expand)" [label = "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group", shape = "box"]
+ "[root] aws_cloudwatch_log_group.clicklogger-api-log-group (expand)" [label = "aws_cloudwatch_log_group.clicklogger-api-log-group", shape = "box"]
+ "[root] aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group (expand)" [label = "aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group", shape = "box"]
+ "[root] aws_cloudwatch_log_group.lambda_click_logger_log_group (expand)" [label = "aws_cloudwatch_log_group.lambda_click_logger_log_group", shape = "box"]
+ "[root] aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream (expand)" [label = "aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream", shape = "box"]
+ "[root] aws_dynamodb_table.click-logger-table (expand)" [label = "aws_dynamodb_table.click-logger-table", shape = "box"]
+ "[root] aws_glue_catalog_database.aws_glue_click_logger_database (expand)" [label = "aws_glue_catalog_database.aws_glue_click_logger_database", shape = "box"]
+ "[root] aws_glue_catalog_table.aws_glue_click_logger_catalog_table (expand)" [label = "aws_glue_catalog_table.aws_glue_click_logger_catalog_table", shape = "box"]
+ "[root] aws_iam_policy.click_loggerlambda_logging_policy (expand)" [label = "aws_iam_policy.click_loggerlambda_logging_policy", shape = "box"]
+ "[root] aws_iam_role.click_logger_api_gateway_cloudwatch_role (expand)" [label = "aws_iam_role.click_logger_api_gateway_cloudwatch_role", shape = "box"]
+ "[root] aws_iam_role.click_logger_invocation_role (expand)" [label = "aws_iam_role.click_logger_invocation_role", shape = "box"]
+ "[root] aws_iam_role.click_logger_lambda_role (expand)" [label = "aws_iam_role.click_logger_lambda_role", shape = "box"]
+ "[root] aws_iam_role.click_logger_stream_consumer_firehose_role (expand)" [label = "aws_iam_role.click_logger_stream_consumer_firehose_role", shape = "box"]
+ "[root] aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy (expand)" [label = "aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy", shape = "box"]
+ "[root] aws_iam_role_policy.click_logger_invocation_policy (expand)" [label = "aws_iam_role_policy.click_logger_invocation_policy", shape = "box"]
+ "[root] aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy (expand)" [label = "aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy", shape = "box"]
+ "[root] aws_iam_role_policy_attachment.click_loggerlambda_policy (expand)" [label = "aws_iam_role_policy_attachment.click_loggerlambda_policy", shape = "box"]
+ "[root] aws_iam_role_policy_attachment.lambda_logs (expand)" [label = "aws_iam_role_policy_attachment.lambda_logs", shape = "box"]
+ "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)" [label = "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream", shape = "box"]
+ "[root] aws_lambda_function.lambda_clicklogger (expand)" [label = "aws_lambda_function.lambda_clicklogger", shape = "box"]
+ "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)" [label = "aws_lambda_function.lambda_clicklogger_authorizer", shape = "box"]
+ "[root] aws_lambda_function.lambda_clicklogger_stream_consumer (expand)" [label = "aws_lambda_function.lambda_clicklogger_stream_consumer", shape = "box"]
+ "[root] aws_lambda_permission.apigw_lambda (expand)" [label = "aws_lambda_permission.apigw_lambda", shape = "box"]
+ "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)" [label = "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket", shape = "box"]
+ "[root] data.aws_caller_identity.current (expand)" [label = "data.aws_caller_identity.current", shape = "box"]
+ "[root] data.aws_iam_policy_document.AWSLambdaTrustPolicy (expand)" [label = "data.aws_iam_policy_document.AWSLambdaTrustPolicy", shape = "box"]
+ "[root] data.aws_region.current (expand)" [label = "data.aws_region.current", shape = "box"]
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"]" [label = "provider[\"registry.terraform.io/hashicorp/aws\"]", shape = "diamond"]
+ "[root] var.app_prefix" [label = "var.app_prefix", shape = "note"]
+ "[root] var.lambda_source_zip_path" [label = "var.lambda_source_zip_path", shape = "note"]
+ "[root] var.stage_name" [label = "var.stage_name", shape = "note"]
+ "[root] aws_api_gateway_account.click_logger_api_gateway_account (expand)" -> "[root] aws_iam_role.click_logger_api_gateway_cloudwatch_role (expand)"
+ "[root] aws_api_gateway_authorizer.clicklogger-authorizer (expand)" -> "[root] aws_api_gateway_rest_api.click_logger_api (expand)"
+ "[root] aws_api_gateway_authorizer.clicklogger-authorizer (expand)" -> "[root] aws_iam_role.click_logger_invocation_role (expand)"
+ "[root] aws_api_gateway_authorizer.clicklogger-authorizer (expand)" -> "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)"
+ "[root] aws_api_gateway_deployment.clicklogger_deployment (expand)" -> "[root] aws_api_gateway_integration.integration (expand)"
+ "[root] aws_api_gateway_integration.integration (expand)" -> "[root] aws_api_gateway_method.method (expand)"
+ "[root] aws_api_gateway_integration.integration (expand)" -> "[root] aws_lambda_function.lambda_clicklogger (expand)"
+ "[root] aws_api_gateway_integration_response.MyDemoIntegrationResponse (expand)" -> "[root] aws_api_gateway_integration.integration (expand)"
+ "[root] aws_api_gateway_integration_response.MyDemoIntegrationResponse (expand)" -> "[root] aws_api_gateway_method_response.response_200 (expand)"
+ "[root] aws_api_gateway_method.method (expand)" -> "[root] aws_api_gateway_authorizer.clicklogger-authorizer (expand)"
+ "[root] aws_api_gateway_method.method (expand)" -> "[root] aws_api_gateway_model.clicklogger_model (expand)"
+ "[root] aws_api_gateway_method.method (expand)" -> "[root] aws_api_gateway_request_validator.clicklogger_validator (expand)"
+ "[root] aws_api_gateway_method.method (expand)" -> "[root] aws_api_gateway_resource.resource (expand)"
+ "[root] aws_api_gateway_method_response.response_200 (expand)" -> "[root] aws_api_gateway_method.method (expand)"
+ "[root] aws_api_gateway_method_settings.general_settings (expand)" -> "[root] aws_api_gateway_deployment.clicklogger_deployment (expand)"
+ "[root] aws_api_gateway_model.clicklogger_model (expand)" -> "[root] aws_api_gateway_rest_api.click_logger_api (expand)"
+ "[root] aws_api_gateway_request_validator.clicklogger_validator (expand)" -> "[root] aws_api_gateway_rest_api.click_logger_api (expand)"
+ "[root] aws_api_gateway_resource.resource (expand)" -> "[root] aws_api_gateway_rest_api.click_logger_api (expand)"
+ "[root] aws_api_gateway_rest_api.click_logger_api (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_api_gateway_rest_api.click_logger_api (expand)" -> "[root] var.app_prefix"
+ "[root] aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group (expand)" -> "[root] var.app_prefix"
+ "[root] aws_cloudwatch_log_group.clicklogger-api-log-group (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_cloudwatch_log_group.clicklogger-api-log-group (expand)" -> "[root] var.app_prefix"
+ "[root] aws_cloudwatch_log_group.clicklogger-api-log-group (expand)" -> "[root] var.stage_name"
+ "[root] aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group (expand)" -> "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)"
+ "[root] aws_cloudwatch_log_group.lambda_click_logger_log_group (expand)" -> "[root] aws_lambda_function.lambda_clicklogger (expand)"
+ "[root] aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream (expand)" -> "[root] aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group (expand)"
+ "[root] aws_dynamodb_table.click-logger-table (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_dynamodb_table.click-logger-table (expand)" -> "[root] var.app_prefix"
+ "[root] aws_dynamodb_table.click-logger-table (expand)" -> "[root] var.stage_name"
+ "[root] aws_glue_catalog_database.aws_glue_click_logger_database (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_glue_catalog_database.aws_glue_click_logger_database (expand)" -> "[root] var.app_prefix"
+ "[root] aws_glue_catalog_table.aws_glue_click_logger_catalog_table (expand)" -> "[root] aws_glue_catalog_database.aws_glue_click_logger_database (expand)"
+ "[root] aws_glue_catalog_table.aws_glue_click_logger_catalog_table (expand)" -> "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)"
+ "[root] aws_iam_policy.click_loggerlambda_logging_policy (expand)" -> "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)"
+ "[root] aws_iam_role.click_logger_api_gateway_cloudwatch_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_iam_role.click_logger_api_gateway_cloudwatch_role (expand)" -> "[root] var.app_prefix"
+ "[root] aws_iam_role.click_logger_invocation_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_iam_role.click_logger_invocation_role (expand)" -> "[root] var.app_prefix"
+ "[root] aws_iam_role.click_logger_lambda_role (expand)" -> "[root] data.aws_iam_policy_document.AWSLambdaTrustPolicy (expand)"
+ "[root] aws_iam_role.click_logger_lambda_role (expand)" -> "[root] var.app_prefix"
+ "[root] aws_iam_role.click_logger_stream_consumer_firehose_role (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] aws_iam_role.click_logger_stream_consumer_firehose_role (expand)" -> "[root] var.app_prefix"
+ "[root] aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy (expand)" -> "[root] aws_iam_role.click_logger_api_gateway_cloudwatch_role (expand)"
+ "[root] aws_iam_role_policy.click_logger_invocation_policy (expand)" -> "[root] aws_iam_role.click_logger_invocation_role (expand)"
+ "[root] aws_iam_role_policy.click_logger_invocation_policy (expand)" -> "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)"
+ "[root] aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy (expand)" -> "[root] aws_iam_role.click_logger_stream_consumer_firehose_role (expand)"
+ "[root] aws_iam_role_policy_attachment.click_loggerlambda_policy (expand)" -> "[root] aws_iam_role.click_logger_lambda_role (expand)"
+ "[root] aws_iam_role_policy_attachment.lambda_logs (expand)" -> "[root] aws_iam_policy.click_loggerlambda_logging_policy (expand)"
+ "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)" -> "[root] aws_glue_catalog_table.aws_glue_click_logger_catalog_table (expand)"
+ "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)" -> "[root] aws_iam_role.click_logger_stream_consumer_firehose_role (expand)"
+ "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)" -> "[root] aws_lambda_function.lambda_clicklogger_stream_consumer (expand)"
+ "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)" -> "[root] data.aws_region.current (expand)"
+ "[root] aws_lambda_function.lambda_clicklogger (expand)" -> "[root] aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream (expand)"
+ "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)" -> "[root] aws_iam_role.click_logger_lambda_role (expand)"
+ "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)" -> "[root] var.lambda_source_zip_path"
+ "[root] aws_lambda_function.lambda_clicklogger_stream_consumer (expand)" -> "[root] aws_dynamodb_table.click-logger-table (expand)"
+ "[root] aws_lambda_function.lambda_clicklogger_stream_consumer (expand)" -> "[root] aws_iam_role.click_logger_lambda_role (expand)"
+ "[root] aws_lambda_function.lambda_clicklogger_stream_consumer (expand)" -> "[root] var.lambda_source_zip_path"
+ "[root] aws_lambda_permission.apigw_lambda (expand)" -> "[root] aws_api_gateway_rest_api.click_logger_api (expand)"
+ "[root] aws_lambda_permission.apigw_lambda (expand)" -> "[root] aws_lambda_function.lambda_clicklogger (expand)"
+ "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)" -> "[root] data.aws_caller_identity.current (expand)"
+ "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)" -> "[root] var.app_prefix"
+ "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)" -> "[root] var.stage_name"
+ "[root] data.aws_caller_identity.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] data.aws_iam_policy_document.AWSLambdaTrustPolicy (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] data.aws_region.current (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"]"
+ "[root] output.S3 (expand)" -> "[root] aws_s3_bucket.click_logger_firehose_delivery_s3_bucket (expand)"
+ "[root] output.deployment-url (expand)" -> "[root] aws_api_gateway_deployment.clicklogger_deployment (expand)"
+ "[root] output.lambda-clicklogger (expand)" -> "[root] aws_lambda_function.lambda_clicklogger (expand)"
+ "[root] output.lambda-clicklogger-authorzer (expand)" -> "[root] aws_lambda_function.lambda_clicklogger_authorizer (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_api_gateway_account.click_logger_api_gateway_account (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_api_gateway_integration_response.MyDemoIntegrationResponse (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_api_gateway_method_settings.general_settings (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_log_group.clicklogger-api-log-group (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_log_group.lambda_click_logger_log_group (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy.click_logger_invocation_policy (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy_attachment.click_loggerlambda_policy (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_iam_role_policy_attachment.lambda_logs (expand)"
+ "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)" -> "[root] aws_lambda_permission.apigw_lambda (expand)"
+ "[root] root" -> "[root] output.S3 (expand)"
+ "[root] root" -> "[root] output.deployment-url (expand)"
+ "[root] root" -> "[root] output.lambda-clicklogger (expand)"
+ "[root] root" -> "[root] output.lambda-clicklogger-authorzer (expand)"
+ "[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/aws\"] (close)"
+ }
+}
+
diff --git a/tests/resources/tfplan/official-tfplan.json b/tests/resources/tfplan/official-tfplan.json
new file mode 100644
index 00000000..c00e7809
--- /dev/null
+++ b/tests/resources/tfplan/official-tfplan.json
@@ -0,0 +1,3888 @@
+{
+ "format_version": "1.1",
+ "terraform_version": "1.3.9",
+ "variables": {
+ "app_prefix": {
+ "value": "clicklogger"
+ },
+ "lambda_source_zip_path": {
+ "value": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar"
+ },
+ "stage_name": {
+ "value": "dev"
+ }
+ },
+ "planned_values": {
+ "outputs": {
+ "S3": {
+ "sensitive": false
+ },
+ "deployment-url": {
+ "sensitive": false
+ },
+ "lambda-clicklogger": {
+ "sensitive": false
+ },
+ "lambda-clicklogger-authorzer": {
+ "sensitive": false
+ }
+ },
+ "root_module": {
+ "resources": [{
+ "address": "aws_api_gateway_account.click_logger_api_gateway_account",
+ "mode": "managed",
+ "type": "aws_api_gateway_account",
+ "name": "click_logger_api_gateway_account",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "sensitive_values": {
+ "throttle_settings": []
+ }
+ }, {
+ "address": "aws_api_gateway_authorizer.clicklogger-authorizer",
+ "mode": "managed",
+ "type": "aws_api_gateway_authorizer",
+ "name": "clicklogger-authorizer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "authorizer_result_ttl_in_seconds": 300,
+ "identity_source": "method.request.header.Authorization",
+ "identity_validation_expression": null,
+ "name": "clicklogger-authorizer",
+ "provider_arns": null,
+ "type": "TOKEN"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_api_gateway_deployment.clicklogger_deployment",
+ "mode": "managed",
+ "type": "aws_api_gateway_deployment",
+ "name": "clicklogger_deployment",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": null,
+ "stage_description": null,
+ "stage_name": "dev",
+ "triggers": null,
+ "variables": null
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_api_gateway_integration.integration",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration",
+ "name": "integration",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "cache_key_parameters": null,
+ "connection_id": null,
+ "connection_type": "INTERNET",
+ "content_handling": null,
+ "credentials": null,
+ "http_method": "POST",
+ "integration_http_method": "POST",
+ "request_parameters": null,
+ "request_templates": null,
+ "timeout_milliseconds": 29000,
+ "tls_config": [],
+ "type": "AWS"
+ },
+ "sensitive_values": {
+ "tls_config": []
+ }
+ }, {
+ "address": "aws_api_gateway_integration_response.MyDemoIntegrationResponse",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration_response",
+ "name": "MyDemoIntegrationResponse",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "content_handling": null,
+ "http_method": "POST",
+ "response_parameters": {
+ "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Requested-With'",
+ "method.response.header.Access-Control-Allow-Methods": "'*'",
+ "method.response.header.Access-Control-Allow-Origin": "'*'"
+ },
+ "response_templates": null,
+ "selection_pattern": null,
+ "status_code": "200"
+ },
+ "sensitive_values": {
+ "response_parameters": {}}}, {
+ "address": "aws_api_gateway_method.method",
+ "mode": "managed",
+ "type": "aws_api_gateway_method",
+ "name": "method",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "api_key_required": false,
+ "authorization": "CUSTOM",
+ "authorization_scopes": null,
+ "http_method": "POST",
+ "operation_name": null,
+ "request_models": {
+ "application/json": "clickloggermodel"
+ },
+ "request_parameters": {
+ "method.request.header.Authorization": true
+ }
+ },
+ "sensitive_values": {
+ "request_models": {},
+ "request_parameters": {}}}, {
+ "address": "aws_api_gateway_method_response.response_200",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_response",
+ "name": "response_200",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "http_method": "POST",
+ "response_models": {
+ "application/json": "Empty"
+ },
+ "response_parameters": {
+ "method.response.header.Access-Control-Allow-Headers": true,
+ "method.response.header.Access-Control-Allow-Methods": true,
+ "method.response.header.Access-Control-Allow-Origin": true
+ },
+ "status_code": "200"
+ },
+ "sensitive_values": {
+ "response_models": {},
+ "response_parameters": {}}}, {
+ "address": "aws_api_gateway_method_settings.general_settings",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_settings",
+ "name": "general_settings",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "method_path": "*/*",
+ "settings": [{
+ "data_trace_enabled": true,
+ "logging_level": "INFO",
+ "metrics_enabled": true,
+ "throttling_burst_limit": 50,
+ "throttling_rate_limit": 100
+ }],
+ "stage_name": "dev"
+ },
+ "sensitive_values": {
+ "settings": [{}]}}, {
+ "address": "aws_api_gateway_model.clicklogger_model",
+ "mode": "managed",
+ "type": "aws_api_gateway_model",
+ "name": "clicklogger_model",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "content_type": "application/json",
+ "description": "clicklogger-JSON schema",
+ "name": "clickloggermodel",
+ "schema": "{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"additionalProperties\":false,\"properties\":{\"action\":{\"type\":\"string\"},\"callerid\":{\"type\":\"string\"},\"component\":{\"type\":\"string\"},\"contextid\":{\"type\":\"string\"},\"requestid\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"required\":[\"contextid\",\"requestid\",\"callerid\",\"action\",\"component\",\"type\"],\"title\":\"clicklogger\",\"type\":\"object\"}"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_api_gateway_request_validator.clicklogger_validator",
+ "mode": "managed",
+ "type": "aws_api_gateway_request_validator",
+ "name": "clicklogger_validator",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "name": "clicklogger-validator",
+ "validate_request_body": true,
+ "validate_request_parameters": true
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_api_gateway_resource.resource",
+ "mode": "managed",
+ "type": "aws_api_gateway_resource",
+ "name": "resource",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "path_part": "clicklogger"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_api_gateway_rest_api.click_logger_api",
+ "mode": "managed",
+ "type": "aws_api_gateway_rest_api",
+ "name": "click_logger_api",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "body": null,
+ "description": "click logger api",
+ "minimum_compression_size": -1,
+ "name": "clicklogger-api",
+ "parameters": null,
+ "put_rest_api_mode": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "binary_media_types": [],
+ "endpoint_configuration": [],
+ "tags_all": {}}}, {
+ "address": "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "click_logger_firehose_delivery_stream_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "kms_key_id": null,
+ "name": "/aws/kinesis_firehose_delivery_stream/clicklogger/click_logger_firehose_delivery_stream",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}}}, {
+ "address": "aws_cloudwatch_log_group.clicklogger-api-log-group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "clicklogger-api-log-group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "kms_key_id": null,
+ "name": "/aws/apigateway/clicklogger-API-Gateway-Execution-Logs/dev",
+ "retention_in_days": 7,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}}}, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_authorizer_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "kms_key_id": null,
+ "name": "/aws/lambda/clicklogger/clicklogger-lambda-authorizer",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}}}, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "kms_key_id": null,
+ "name": "/aws/lambda/clicklogger/clicklogger-lambda",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}}}, {
+ "address": "aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "log_group_name": "/aws/kinesis_firehose_delivery_stream/clicklogger/click_logger_firehose_delivery_stream",
+ "name": "clicklogger-firehose-delivery-stream"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_dynamodb_table.click-logger-table",
+ "mode": "managed",
+ "type": "aws_dynamodb_table",
+ "name": "click-logger-table",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "attribute": [{
+ "name": "callerid",
+ "type": "S"
+ }, {
+ "name": "contextid",
+ "type": "S"
+ }, {
+ "name": "requestid",
+ "type": "S"
+ }],
+ "billing_mode": "PROVISIONED",
+ "global_secondary_index": [{
+ "hash_key": "contextid",
+ "name": "ContextCallerIndex",
+ "non_key_attributes": ["action", "clientip", "component", "createdtime", "requestid", "type"],
+ "projection_type": "INCLUDE",
+ "range_key": "callerid",
+ "read_capacity": 5,
+ "write_capacity": 5
+ }],
+ "hash_key": "requestid",
+ "local_secondary_index": [],
+ "name": "clickloggertable",
+ "range_key": "contextid",
+ "read_capacity": 5,
+ "replica": [],
+ "restore_date_time": null,
+ "restore_source_name": null,
+ "restore_to_latest_time": null,
+ "stream_enabled": null,
+ "table_class": null,
+ "tags": {
+ "Environment": "dev",
+ "Name": "clickloggertable"
+ },
+ "tags_all": {
+ "Environment": "dev",
+ "Name": "clickloggertable"
+ },
+ "timeouts": null,
+ "write_capacity": 5
+ },
+ "sensitive_values": {
+ "attribute": [{}, {}, {}],
+ "global_secondary_index": [{
+ "non_key_attributes": [false, false, false, false, false, false]
+ }],
+ "local_secondary_index": [],
+ "point_in_time_recovery": [],
+ "replica": [],
+ "server_side_encryption": [],
+ "tags": {},
+ "tags_all": {},
+ "ttl": []
+ }
+ }, {
+ "address": "aws_glue_catalog_database.aws_glue_click_logger_database",
+ "mode": "managed",
+ "type": "aws_glue_catalog_database",
+ "name": "aws_glue_click_logger_database",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "Click logger Glue database",
+ "name": "clickloggerdatabase",
+ "parameters": null,
+ "target_database": []
+ },
+ "sensitive_values": {
+ "create_table_default_permission": [],
+ "target_database": []
+ }
+ }, {
+ "address": "aws_glue_catalog_table.aws_glue_click_logger_catalog_table",
+ "mode": "managed",
+ "type": "aws_glue_catalog_table",
+ "name": "aws_glue_click_logger_catalog_table",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "database_name": "clickloggerdatabase",
+ "description": null,
+ "name": "clickloggertable",
+ "owner": null,
+ "parameters": {
+ "EXTERNAL": "TRUE",
+ "parquet.compression": "SNAPPY"
+ },
+ "partition_keys": [],
+ "retention": 0,
+ "storage_descriptor": [{
+ "bucket_columns": null,
+ "columns": [{
+ "comment": null,
+ "name": "requestid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": null,
+ "name": "contextid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "callerid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "component",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "action",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "type",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "clientip",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "createdtime",
+ "parameters": null,
+ "type": "string"
+ }],
+ "compressed": false,
+ "input_format": "org.apache.hadoop.mapred.TextInputFormat",
+ "number_of_buckets": null,
+ "output_format": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
+ "parameters": {
+ "classification": "json",
+ "compression_type": "none",
+ "crawler_schema_deserializer_version": "1.0",
+ "crawler_schema_serializer_version": "1.0",
+ "type_of_data": "file"
+ },
+ "schema_reference": [],
+ "ser_de_info": [{
+ "name": "clickloggertable",
+ "parameters": {
+ "serialization.format": "1"
+ },
+ "serialization_library": "org.openx.data.jsonserde.JsonSerDe"
+ }],
+ "skewed_info": [],
+ "sort_columns": [],
+ "stored_as_sub_directories": null
+ }],
+ "table_type": "EXTERNAL_TABLE",
+ "target_table": [],
+ "view_expanded_text": null,
+ "view_original_text": null
+ },
+ "sensitive_values": {
+ "parameters": {},
+ "partition_index": [],
+ "partition_keys": [],
+ "storage_descriptor": [{
+ "columns": [{}, {}, {}, {}, {}, {}, {}, {}],
+ "parameters": {},
+ "schema_reference": [],
+ "ser_de_info": [{
+ "parameters": {}}],
+ "skewed_info": [],
+ "sort_columns": []
+ }],
+ "target_table": []
+ }
+ }, {
+ "address": "aws_iam_policy.click_loggerlambda_logging_policy",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "click_loggerlambda_logging_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "IAM policy for logging from a lambda",
+ "name": "clicklogger-lambda-logging-policy",
+ "name_prefix": null,
+ "path": "/",
+ "tags": null
+ },
+ "sensitive_values": {
+ "tags_all": {}}}, {
+ "address": "aws_iam_role.click_logger_api_gateway_cloudwatch_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_api_gateway_cloudwatch_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"apigateway.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-api-gateway-cloudwatch-global-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}, {
+ "address": "aws_iam_role.click_logger_invocation_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_invocation_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"apigateway.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-api-gateway-auth-invocation",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}, {
+ "address": "aws_iam_role.click_logger_lambda_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_lambda_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-lambda-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}, {
+ "address": "aws_iam_role.click_logger_stream_consumer_firehose_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_stream_consumer_firehose_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"firehose.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-stream-consumer-firehose-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "sensitive_values": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}, {
+ "address": "aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_api_gateway_cloudwatch_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "name": "clicklogger-api-gateway-cloudwatch-policy",
+ "name_prefix": null,
+ "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"logs:CreateLogGroup\",\"logs:CreateLogStream\",\"logs:DescribeLogGroups\",\"logs:DescribeLogStreams\",\"logs:PutLogEvents\",\"logs:GetLogEvents\",\"logs:FilterLogEvents\"],\"Effect\":\"Allow\",\"Resource\":\"*\"}]}"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_iam_role_policy.click_logger_invocation_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_invocation_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "name": "clicklogger-invocation-policy",
+ "name_prefix": null
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_stream_consumer_firehose_inline_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "name": "clicklogger-stream-consumer-firehose-inline_policy",
+ "name_prefix": null,
+ "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"glue:*\",\"s3:*\",\"logs:*\",\"lambda:*\"],\"Effect\":\"Allow\",\"Resource\":\"*\"}]}"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_iam_role_policy_attachment.click_loggerlambda_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "click_loggerlambda_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "policy_arn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+ "role": "clicklogger-lambda-role"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_iam_role_policy_attachment.lambda_logs",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "lambda_logs",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "role": "clicklogger-lambda-role"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_kinesis_firehose_delivery_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 1,
+ "values": {
+ "destination": "extended_s3",
+ "elasticsearch_configuration": [],
+ "extended_s3_configuration": [{
+ "buffer_interval": 60,
+ "buffer_size": 64,
+ "cloudwatch_logging_options": [{
+ "enabled": true,
+ "log_group_name": "/aws/kinesis_firehose_delivery_stream/click_logger_firehose_delivery_stream",
+ "log_stream_name": "click_logger_firehose_delivery_stream"
+ }],
+ "compression_format": "UNCOMPRESSED",
+ "data_format_conversion_configuration": [{
+ "enabled": true,
+ "input_format_configuration": [{
+ "deserializer": [{
+ "hive_json_ser_de": [],
+ "open_x_json_ser_de": [{
+ "case_insensitive": true,
+ "column_to_json_key_mappings": null,
+ "convert_dots_in_json_keys_to_underscores": false
+ }]
+ }]
+ }],
+ "output_format_configuration": [{
+ "serializer": [{
+ "orc_ser_de": [],
+ "parquet_ser_de": [{
+ "block_size_bytes": 268435456,
+ "compression": "SNAPPY",
+ "enable_dictionary_compression": false,
+ "max_padding_bytes": 0,
+ "page_size_bytes": 1048576,
+ "writer_version": "V1"
+ }]
+ }]
+ }],
+ "schema_configuration": [{
+ "database_name": "clickloggerdatabase",
+ "region": "us-east-1",
+ "table_name": "clickloggertable",
+ "version_id": "LATEST"
+ }]
+ }],
+ "dynamic_partitioning_configuration": [],
+ "error_output_prefix": "clicklog_error/error=!{firehose:error-output-type}data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/",
+ "kms_key_arn": null,
+ "prefix": "clicklog/data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/",
+ "processing_configuration": [{
+ "enabled": true,
+ "processors": [{
+ "parameters": [{
+ "parameter_name": "LambdaArn"
+ }],
+ "type": "Lambda"
+ }]
+ }],
+ "s3_backup_configuration": [],
+ "s3_backup_mode": "Disabled"
+ }],
+ "http_endpoint_configuration": [],
+ "kinesis_source_configuration": [],
+ "name": "clicklogger-firehose-delivery-stream",
+ "redshift_configuration": [],
+ "s3_configuration": [],
+ "server_side_encryption": [],
+ "splunk_configuration": [],
+ "tags": null,
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "elasticsearch_configuration": [],
+ "extended_s3_configuration": [{
+ "cloudwatch_logging_options": [{}],
+ "data_format_conversion_configuration": [{
+ "input_format_configuration": [{
+ "deserializer": [{
+ "hive_json_ser_de": [],
+ "open_x_json_ser_de": [{}]}]}],
+ "output_format_configuration": [{
+ "serializer": [{
+ "orc_ser_de": [],
+ "parquet_ser_de": [{}]}]}],
+ "schema_configuration": [{}]}],
+ "dynamic_partitioning_configuration": [],
+ "processing_configuration": [{
+ "processors": [{
+ "parameters": [{}]}]}],
+ "s3_backup_configuration": []
+ }],
+ "http_endpoint_configuration": [],
+ "kinesis_source_configuration": [],
+ "redshift_configuration": [],
+ "s3_configuration": [],
+ "server_side_encryption": [],
+ "splunk_configuration": [],
+ "tags_all": {}}}, {
+ "address": "aws_lambda_function.lambda_clicklogger",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "STREAM_NAME": "clicklogger-firehose-delivery-stream"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda",
+ "handler": "com.clicklogs.Handlers.ClickLoggerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "sensitive_values": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_authorizer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "AUTH_TOKENS": "ALLOW=ORDERAPP;ALLOW=BILLAPP;"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda-authorizer",
+ "handler": "com.clicklogs.Handlers.APIGatewayAuthorizerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "sensitive_values": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_stream_consumer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_stream_consumer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "DB_TABLE": "clickloggertable"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda-stream-consumer",
+ "handler": "com.clicklogs.Handlers.ClickLoggerStreamHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "sensitive_values": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }, {
+ "address": "aws_lambda_permission.apigw_lambda",
+ "mode": "managed",
+ "type": "aws_lambda_permission",
+ "name": "apigw_lambda",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "action": "lambda:InvokeFunction",
+ "event_source_token": null,
+ "function_url_auth_type": null,
+ "principal": "apigateway.amazonaws.com",
+ "principal_org_id": null,
+ "qualifier": null,
+ "source_account": null,
+ "statement_id": "AllowExecutionFromAPIGateway"
+ },
+ "sensitive_values": {}}, {
+ "address": "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket",
+ "mode": "managed",
+ "type": "aws_s3_bucket",
+ "name": "click_logger_firehose_delivery_s3_bucket",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "acl": "private",
+ "bucket": "clicklogger-dev-firehose-delivery-bucket-123456789012",
+ "bucket_prefix": null,
+ "force_destroy": false,
+ "tags": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "tags_all": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "timeouts": null
+ },
+ "sensitive_values": {
+ "cors_rule": [],
+ "grant": [],
+ "lifecycle_rule": [],
+ "logging": [],
+ "object_lock_configuration": [],
+ "replication_configuration": [],
+ "server_side_encryption_configuration": [],
+ "tags": {},
+ "tags_all": {},
+ "versioning": [],
+ "website": []
+ }
+ }]
+ }
+ },
+ "resource_changes": [{
+ "address": "aws_api_gateway_account.click_logger_api_gateway_account",
+ "mode": "managed",
+ "type": "aws_api_gateway_account",
+ "name": "click_logger_api_gateway_account",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {},
+ "after_unknown": {
+ "cloudwatch_role_arn": true,
+ "id": true,
+ "throttle_settings": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "throttle_settings": []
+ }
+ }
+ }, {
+ "address": "aws_api_gateway_authorizer.clicklogger-authorizer",
+ "mode": "managed",
+ "type": "aws_api_gateway_authorizer",
+ "name": "clicklogger-authorizer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "authorizer_result_ttl_in_seconds": 300,
+ "identity_source": "method.request.header.Authorization",
+ "identity_validation_expression": null,
+ "name": "clicklogger-authorizer",
+ "provider_arns": null,
+ "type": "TOKEN"
+ },
+ "after_unknown": {
+ "arn": true,
+ "authorizer_credentials": true,
+ "authorizer_uri": true,
+ "id": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_api_gateway_deployment.clicklogger_deployment",
+ "mode": "managed",
+ "type": "aws_api_gateway_deployment",
+ "name": "clicklogger_deployment",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "description": null,
+ "stage_description": null,
+ "stage_name": "dev",
+ "triggers": null,
+ "variables": null
+ },
+ "after_unknown": {
+ "created_date": true,
+ "execution_arn": true,
+ "id": true,
+ "invoke_url": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_api_gateway_integration.integration",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration",
+ "name": "integration",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "cache_key_parameters": null,
+ "connection_id": null,
+ "connection_type": "INTERNET",
+ "content_handling": null,
+ "credentials": null,
+ "http_method": "POST",
+ "integration_http_method": "POST",
+ "request_parameters": null,
+ "request_templates": null,
+ "timeout_milliseconds": 29000,
+ "tls_config": [],
+ "type": "AWS"
+ },
+ "after_unknown": {
+ "cache_namespace": true,
+ "id": true,
+ "passthrough_behavior": true,
+ "resource_id": true,
+ "rest_api_id": true,
+ "tls_config": [],
+ "uri": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tls_config": []
+ }
+ }
+ }, {
+ "address": "aws_api_gateway_integration_response.MyDemoIntegrationResponse",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration_response",
+ "name": "MyDemoIntegrationResponse",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "content_handling": null,
+ "http_method": "POST",
+ "response_parameters": {
+ "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Requested-With'",
+ "method.response.header.Access-Control-Allow-Methods": "'*'",
+ "method.response.header.Access-Control-Allow-Origin": "'*'"
+ },
+ "response_templates": null,
+ "selection_pattern": null,
+ "status_code": "200"
+ },
+ "after_unknown": {
+ "id": true,
+ "resource_id": true,
+ "response_parameters": {},
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "response_parameters": {}}}}, {
+ "address": "aws_api_gateway_method.method",
+ "mode": "managed",
+ "type": "aws_api_gateway_method",
+ "name": "method",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "api_key_required": false,
+ "authorization": "CUSTOM",
+ "authorization_scopes": null,
+ "http_method": "POST",
+ "operation_name": null,
+ "request_models": {
+ "application/json": "clickloggermodel"
+ },
+ "request_parameters": {
+ "method.request.header.Authorization": true
+ }
+ },
+ "after_unknown": {
+ "authorizer_id": true,
+ "id": true,
+ "request_models": {},
+ "request_parameters": {},
+ "request_validator_id": true,
+ "resource_id": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "request_models": {},
+ "request_parameters": {}}}}, {
+ "address": "aws_api_gateway_method_response.response_200",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_response",
+ "name": "response_200",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "http_method": "POST",
+ "response_models": {
+ "application/json": "Empty"
+ },
+ "response_parameters": {
+ "method.response.header.Access-Control-Allow-Headers": true,
+ "method.response.header.Access-Control-Allow-Methods": true,
+ "method.response.header.Access-Control-Allow-Origin": true
+ },
+ "status_code": "200"
+ },
+ "after_unknown": {
+ "id": true,
+ "resource_id": true,
+ "response_models": {},
+ "response_parameters": {},
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "response_models": {},
+ "response_parameters": {}}}}, {
+ "address": "aws_api_gateway_method_settings.general_settings",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_settings",
+ "name": "general_settings",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "method_path": "*/*",
+ "settings": [{
+ "data_trace_enabled": true,
+ "logging_level": "INFO",
+ "metrics_enabled": true,
+ "throttling_burst_limit": 50,
+ "throttling_rate_limit": 100
+ }],
+ "stage_name": "dev"
+ },
+ "after_unknown": {
+ "id": true,
+ "rest_api_id": true,
+ "settings": [{
+ "cache_data_encrypted": true,
+ "cache_ttl_in_seconds": true,
+ "caching_enabled": true,
+ "require_authorization_for_cache_control": true,
+ "unauthorized_cache_control_header_strategy": true
+ }]
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "settings": [{}]}}}, {
+ "address": "aws_api_gateway_model.clicklogger_model",
+ "mode": "managed",
+ "type": "aws_api_gateway_model",
+ "name": "clicklogger_model",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "content_type": "application/json",
+ "description": "clicklogger-JSON schema",
+ "name": "clickloggermodel",
+ "schema": "{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"additionalProperties\":false,\"properties\":{\"action\":{\"type\":\"string\"},\"callerid\":{\"type\":\"string\"},\"component\":{\"type\":\"string\"},\"contextid\":{\"type\":\"string\"},\"requestid\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"required\":[\"contextid\",\"requestid\",\"callerid\",\"action\",\"component\",\"type\"],\"title\":\"clicklogger\",\"type\":\"object\"}"
+ },
+ "after_unknown": {
+ "id": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_api_gateway_request_validator.clicklogger_validator",
+ "mode": "managed",
+ "type": "aws_api_gateway_request_validator",
+ "name": "clicklogger_validator",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "name": "clicklogger-validator",
+ "validate_request_body": true,
+ "validate_request_parameters": true
+ },
+ "after_unknown": {
+ "id": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_api_gateway_resource.resource",
+ "mode": "managed",
+ "type": "aws_api_gateway_resource",
+ "name": "resource",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "path_part": "clicklogger"
+ },
+ "after_unknown": {
+ "id": true,
+ "parent_id": true,
+ "path": true,
+ "rest_api_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_api_gateway_rest_api.click_logger_api",
+ "mode": "managed",
+ "type": "aws_api_gateway_rest_api",
+ "name": "click_logger_api",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "body": null,
+ "description": "click logger api",
+ "minimum_compression_size": -1,
+ "name": "clicklogger-api",
+ "parameters": null,
+ "put_rest_api_mode": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "api_key_source": true,
+ "arn": true,
+ "binary_media_types": true,
+ "created_date": true,
+ "disable_execute_api_endpoint": true,
+ "endpoint_configuration": true,
+ "execution_arn": true,
+ "id": true,
+ "policy": true,
+ "root_resource_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "binary_media_types": [],
+ "endpoint_configuration": [],
+ "tags_all": {}}}}, {
+ "address": "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "click_logger_firehose_delivery_stream_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "kms_key_id": null,
+ "name": "/aws/kinesis_firehose_delivery_stream/clicklogger/click_logger_firehose_delivery_stream",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}}}}, {
+ "address": "aws_cloudwatch_log_group.clicklogger-api-log-group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "clicklogger-api-log-group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "kms_key_id": null,
+ "name": "/aws/apigateway/clicklogger-API-Gateway-Execution-Logs/dev",
+ "retention_in_days": 7,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}}}}, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_authorizer_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "kms_key_id": null,
+ "name": "/aws/lambda/clicklogger/clicklogger-lambda-authorizer",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}}}}, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_log_group",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "kms_key_id": null,
+ "name": "/aws/lambda/clicklogger/clicklogger-lambda",
+ "retention_in_days": 3,
+ "skip_destroy": false,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "name_prefix": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}}}}, {
+ "address": "aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "log_group_name": "/aws/kinesis_firehose_delivery_stream/clicklogger/click_logger_firehose_delivery_stream",
+ "name": "clicklogger-firehose-delivery-stream"
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_dynamodb_table.click-logger-table",
+ "mode": "managed",
+ "type": "aws_dynamodb_table",
+ "name": "click-logger-table",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "attribute": [{
+ "name": "callerid",
+ "type": "S"
+ }, {
+ "name": "contextid",
+ "type": "S"
+ }, {
+ "name": "requestid",
+ "type": "S"
+ }],
+ "billing_mode": "PROVISIONED",
+ "global_secondary_index": [{
+ "hash_key": "contextid",
+ "name": "ContextCallerIndex",
+ "non_key_attributes": ["action", "clientip", "component", "createdtime", "requestid", "type"],
+ "projection_type": "INCLUDE",
+ "range_key": "callerid",
+ "read_capacity": 5,
+ "write_capacity": 5
+ }],
+ "hash_key": "requestid",
+ "local_secondary_index": [],
+ "name": "clickloggertable",
+ "range_key": "contextid",
+ "read_capacity": 5,
+ "replica": [],
+ "restore_date_time": null,
+ "restore_source_name": null,
+ "restore_to_latest_time": null,
+ "stream_enabled": null,
+ "table_class": null,
+ "tags": {
+ "Environment": "dev",
+ "Name": "clickloggertable"
+ },
+ "tags_all": {
+ "Environment": "dev",
+ "Name": "clickloggertable"
+ },
+ "timeouts": null,
+ "write_capacity": 5
+ },
+ "after_unknown": {
+ "arn": true,
+ "attribute": [{}, {}, {}],
+ "global_secondary_index": [{
+ "non_key_attributes": [false, false, false, false, false, false]
+ }],
+ "id": true,
+ "local_secondary_index": [],
+ "point_in_time_recovery": true,
+ "replica": [],
+ "server_side_encryption": true,
+ "stream_arn": true,
+ "stream_label": true,
+ "stream_view_type": true,
+ "tags": {},
+ "tags_all": {},
+ "ttl": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "attribute": [{}, {}, {}],
+ "global_secondary_index": [{
+ "non_key_attributes": [false, false, false, false, false, false]
+ }],
+ "local_secondary_index": [],
+ "point_in_time_recovery": [],
+ "replica": [],
+ "server_side_encryption": [],
+ "tags": {},
+ "tags_all": {},
+ "ttl": []
+ }
+ }
+ }, {
+ "address": "aws_glue_catalog_database.aws_glue_click_logger_database",
+ "mode": "managed",
+ "type": "aws_glue_catalog_database",
+ "name": "aws_glue_click_logger_database",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "description": "Click logger Glue database",
+ "name": "clickloggerdatabase",
+ "parameters": null,
+ "target_database": []
+ },
+ "after_unknown": {
+ "arn": true,
+ "catalog_id": true,
+ "create_table_default_permission": true,
+ "id": true,
+ "location_uri": true,
+ "target_database": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "create_table_default_permission": [],
+ "target_database": []
+ }
+ }
+ }, {
+ "address": "aws_glue_catalog_table.aws_glue_click_logger_catalog_table",
+ "mode": "managed",
+ "type": "aws_glue_catalog_table",
+ "name": "aws_glue_click_logger_catalog_table",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "database_name": "clickloggerdatabase",
+ "description": null,
+ "name": "clickloggertable",
+ "owner": null,
+ "parameters": {
+ "EXTERNAL": "TRUE",
+ "parquet.compression": "SNAPPY"
+ },
+ "partition_keys": [],
+ "retention": 0,
+ "storage_descriptor": [{
+ "bucket_columns": null,
+ "columns": [{
+ "comment": null,
+ "name": "requestid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": null,
+ "name": "contextid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "callerid",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "component",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "action",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "type",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "clientip",
+ "parameters": null,
+ "type": "string"
+ }, {
+ "comment": "",
+ "name": "createdtime",
+ "parameters": null,
+ "type": "string"
+ }],
+ "compressed": false,
+ "input_format": "org.apache.hadoop.mapred.TextInputFormat",
+ "number_of_buckets": null,
+ "output_format": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
+ "parameters": {
+ "classification": "json",
+ "compression_type": "none",
+ "crawler_schema_deserializer_version": "1.0",
+ "crawler_schema_serializer_version": "1.0",
+ "type_of_data": "file"
+ },
+ "schema_reference": [],
+ "ser_de_info": [{
+ "name": "clickloggertable",
+ "parameters": {
+ "serialization.format": "1"
+ },
+ "serialization_library": "org.openx.data.jsonserde.JsonSerDe"
+ }],
+ "skewed_info": [],
+ "sort_columns": [],
+ "stored_as_sub_directories": null
+ }],
+ "table_type": "EXTERNAL_TABLE",
+ "target_table": [],
+ "view_expanded_text": null,
+ "view_original_text": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "catalog_id": true,
+ "id": true,
+ "parameters": {},
+ "partition_index": true,
+ "partition_keys": [],
+ "storage_descriptor": [{
+ "columns": [{}, {}, {}, {}, {}, {}, {}, {}],
+ "location": true,
+ "parameters": {},
+ "schema_reference": [],
+ "ser_de_info": [{
+ "parameters": {}}],
+ "skewed_info": [],
+ "sort_columns": []
+ }],
+ "target_table": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "parameters": {},
+ "partition_index": [],
+ "partition_keys": [],
+ "storage_descriptor": [{
+ "columns": [{}, {}, {}, {}, {}, {}, {}, {}],
+ "parameters": {},
+ "schema_reference": [],
+ "ser_de_info": [{
+ "parameters": {}}],
+ "skewed_info": [],
+ "sort_columns": []
+ }],
+ "target_table": []
+ }
+ }
+ }, {
+ "address": "aws_iam_policy.click_loggerlambda_logging_policy",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "click_loggerlambda_logging_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "description": "IAM policy for logging from a lambda",
+ "name": "clicklogger-lambda-logging-policy",
+ "name_prefix": null,
+ "path": "/",
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "id": true,
+ "policy": true,
+ "policy_id": true,
+ "tags_all": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "tags_all": {}}}}, {
+ "address": "aws_iam_role.click_logger_api_gateway_cloudwatch_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_api_gateway_cloudwatch_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"apigateway.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-api-gateway-cloudwatch-global-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name_prefix": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}}, {
+ "address": "aws_iam_role.click_logger_invocation_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_invocation_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"apigateway.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-api-gateway-auth-invocation",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name_prefix": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}}, {
+ "address": "aws_iam_role.click_logger_lambda_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_lambda_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-lambda-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name_prefix": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}}, {
+ "address": "aws_iam_role.click_logger_stream_consumer_firehose_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_stream_consumer_firehose_role",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "assume_role_policy": "{\"Statement\":[{\"Action\":\"sts:AssumeRole\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"firehose.amazonaws.com\"},\"Sid\":\"\"}],\"Version\":\"2012-10-17\"}",
+ "description": null,
+ "force_detach_policies": false,
+ "max_session_duration": 3600,
+ "name": "clicklogger-stream-consumer-firehose-role",
+ "path": "/",
+ "permissions_boundary": null,
+ "tags": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "create_date": true,
+ "id": true,
+ "inline_policy": true,
+ "managed_policy_arns": true,
+ "name_prefix": true,
+ "tags_all": true,
+ "unique_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "inline_policy": [],
+ "managed_policy_arns": [],
+ "tags_all": {}}}}, {
+ "address": "aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_api_gateway_cloudwatch_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "name": "clicklogger-api-gateway-cloudwatch-policy",
+ "name_prefix": null,
+ "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"logs:CreateLogGroup\",\"logs:CreateLogStream\",\"logs:DescribeLogGroups\",\"logs:DescribeLogStreams\",\"logs:PutLogEvents\",\"logs:GetLogEvents\",\"logs:FilterLogEvents\"],\"Effect\":\"Allow\",\"Resource\":\"*\"}]}"
+ },
+ "after_unknown": {
+ "id": true,
+ "role": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_iam_role_policy.click_logger_invocation_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_invocation_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "name": "clicklogger-invocation-policy",
+ "name_prefix": null
+ },
+ "after_unknown": {
+ "id": true,
+ "policy": true,
+ "role": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_stream_consumer_firehose_inline_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "name": "clicklogger-stream-consumer-firehose-inline_policy",
+ "name_prefix": null,
+ "policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":[\"glue:*\",\"s3:*\",\"logs:*\",\"lambda:*\"],\"Effect\":\"Allow\",\"Resource\":\"*\"}]}"
+ },
+ "after_unknown": {
+ "id": true,
+ "role": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_iam_role_policy_attachment.click_loggerlambda_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "click_loggerlambda_policy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "policy_arn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+ "role": "clicklogger-lambda-role"
+ },
+ "after_unknown": {
+ "id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_iam_role_policy_attachment.lambda_logs",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "lambda_logs",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "role": "clicklogger-lambda-role"
+ },
+ "after_unknown": {
+ "id": true,
+ "policy_arn": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_kinesis_firehose_delivery_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "destination": "extended_s3",
+ "elasticsearch_configuration": [],
+ "extended_s3_configuration": [{
+ "buffer_interval": 60,
+ "buffer_size": 64,
+ "cloudwatch_logging_options": [{
+ "enabled": true,
+ "log_group_name": "/aws/kinesis_firehose_delivery_stream/click_logger_firehose_delivery_stream",
+ "log_stream_name": "click_logger_firehose_delivery_stream"
+ }],
+ "compression_format": "UNCOMPRESSED",
+ "data_format_conversion_configuration": [{
+ "enabled": true,
+ "input_format_configuration": [{
+ "deserializer": [{
+ "hive_json_ser_de": [],
+ "open_x_json_ser_de": [{
+ "case_insensitive": true,
+ "column_to_json_key_mappings": null,
+ "convert_dots_in_json_keys_to_underscores": false
+ }]
+ }]
+ }],
+ "output_format_configuration": [{
+ "serializer": [{
+ "orc_ser_de": [],
+ "parquet_ser_de": [{
+ "block_size_bytes": 268435456,
+ "compression": "SNAPPY",
+ "enable_dictionary_compression": false,
+ "max_padding_bytes": 0,
+ "page_size_bytes": 1048576,
+ "writer_version": "V1"
+ }]
+ }]
+ }],
+ "schema_configuration": [{
+ "database_name": "clickloggerdatabase",
+ "region": "us-east-1",
+ "table_name": "clickloggertable",
+ "version_id": "LATEST"
+ }]
+ }],
+ "dynamic_partitioning_configuration": [],
+ "error_output_prefix": "clicklog_error/error=!{firehose:error-output-type}data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/",
+ "kms_key_arn": null,
+ "prefix": "clicklog/data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/",
+ "processing_configuration": [{
+ "enabled": true,
+ "processors": [{
+ "parameters": [{
+ "parameter_name": "LambdaArn"
+ }],
+ "type": "Lambda"
+ }]
+ }],
+ "s3_backup_configuration": [],
+ "s3_backup_mode": "Disabled"
+ }],
+ "http_endpoint_configuration": [],
+ "kinesis_source_configuration": [],
+ "name": "clicklogger-firehose-delivery-stream",
+ "redshift_configuration": [],
+ "s3_configuration": [],
+ "server_side_encryption": [],
+ "splunk_configuration": [],
+ "tags": null,
+ "timeouts": null
+ },
+ "after_unknown": {
+ "arn": true,
+ "destination_id": true,
+ "elasticsearch_configuration": [],
+ "extended_s3_configuration": [{
+ "bucket_arn": true,
+ "cloudwatch_logging_options": [{}],
+ "data_format_conversion_configuration": [{
+ "input_format_configuration": [{
+ "deserializer": [{
+ "hive_json_ser_de": [],
+ "open_x_json_ser_de": [{}]}]}],
+ "output_format_configuration": [{
+ "serializer": [{
+ "orc_ser_de": [],
+ "parquet_ser_de": [{}]}]}],
+ "schema_configuration": [{
+ "catalog_id": true,
+ "role_arn": true
+ }]
+ }],
+ "dynamic_partitioning_configuration": [],
+ "processing_configuration": [{
+ "processors": [{
+ "parameters": [{
+ "parameter_value": true
+ }]
+ }]
+ }],
+ "role_arn": true,
+ "s3_backup_configuration": []
+ }],
+ "http_endpoint_configuration": [],
+ "id": true,
+ "kinesis_source_configuration": [],
+ "redshift_configuration": [],
+ "s3_configuration": [],
+ "server_side_encryption": [],
+ "splunk_configuration": [],
+ "tags_all": true,
+ "version_id": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "elasticsearch_configuration": [],
+ "extended_s3_configuration": [{
+ "cloudwatch_logging_options": [{}],
+ "data_format_conversion_configuration": [{
+ "input_format_configuration": [{
+ "deserializer": [{
+ "hive_json_ser_de": [],
+ "open_x_json_ser_de": [{}]}]}],
+ "output_format_configuration": [{
+ "serializer": [{
+ "orc_ser_de": [],
+ "parquet_ser_de": [{}]}]}],
+ "schema_configuration": [{}]}],
+ "dynamic_partitioning_configuration": [],
+ "processing_configuration": [{
+ "processors": [{
+ "parameters": [{}]}]}],
+ "s3_backup_configuration": []
+ }],
+ "http_endpoint_configuration": [],
+ "kinesis_source_configuration": [],
+ "redshift_configuration": [],
+ "s3_configuration": [],
+ "server_side_encryption": [],
+ "splunk_configuration": [],
+ "tags_all": {}}}}, {
+ "address": "aws_lambda_function.lambda_clicklogger",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "STREAM_NAME": "clicklogger-firehose-delivery-stream"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda",
+ "handler": "com.clicklogs.Handlers.ClickLoggerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "after_unknown": {
+ "architectures": true,
+ "arn": true,
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": true,
+ "file_system_config": [],
+ "id": true,
+ "image_config": [],
+ "invoke_arn": true,
+ "last_modified": true,
+ "qualified_arn": true,
+ "qualified_invoke_arn": true,
+ "role": true,
+ "signing_job_arn": true,
+ "signing_profile_version_arn": true,
+ "snap_start": [],
+ "source_code_size": true,
+ "tags_all": true,
+ "tracing_config": true,
+ "version": true,
+ "vpc_config": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_authorizer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "AUTH_TOKENS": "ALLOW=ORDERAPP;ALLOW=BILLAPP;"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda-authorizer",
+ "handler": "com.clicklogs.Handlers.APIGatewayAuthorizerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "after_unknown": {
+ "architectures": true,
+ "arn": true,
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": true,
+ "file_system_config": [],
+ "id": true,
+ "image_config": [],
+ "invoke_arn": true,
+ "last_modified": true,
+ "qualified_arn": true,
+ "qualified_invoke_arn": true,
+ "role": true,
+ "signing_job_arn": true,
+ "signing_profile_version_arn": true,
+ "snap_start": [],
+ "source_code_size": true,
+ "tags_all": true,
+ "tracing_config": true,
+ "version": true,
+ "vpc_config": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_stream_consumer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_stream_consumer",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "DB_TABLE": "clickloggertable"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda-stream-consumer",
+ "handler": "com.clicklogs.Handlers.ClickLoggerStreamHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "after_unknown": {
+ "architectures": true,
+ "arn": true,
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": true,
+ "file_system_config": [],
+ "id": true,
+ "image_config": [],
+ "invoke_arn": true,
+ "last_modified": true,
+ "qualified_arn": true,
+ "qualified_invoke_arn": true,
+ "role": true,
+ "signing_job_arn": true,
+ "signing_profile_version_arn": true,
+ "snap_start": [],
+ "source_code_size": true,
+ "tags_all": true,
+ "tracing_config": true,
+ "version": true,
+ "vpc_config": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "architectures": [],
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": [],
+ "file_system_config": [],
+ "image_config": [],
+ "snap_start": [],
+ "tags_all": {},
+ "tracing_config": [],
+ "vpc_config": []
+ }
+ }
+ }, {
+ "address": "aws_lambda_permission.apigw_lambda",
+ "mode": "managed",
+ "type": "aws_lambda_permission",
+ "name": "apigw_lambda",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "action": "lambda:InvokeFunction",
+ "event_source_token": null,
+ "function_url_auth_type": null,
+ "principal": "apigateway.amazonaws.com",
+ "principal_org_id": null,
+ "qualifier": null,
+ "source_account": null,
+ "statement_id": "AllowExecutionFromAPIGateway"
+ },
+ "after_unknown": {
+ "function_name": true,
+ "id": true,
+ "source_arn": true,
+ "statement_id_prefix": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {}}}, {
+ "address": "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket",
+ "mode": "managed",
+ "type": "aws_s3_bucket",
+ "name": "click_logger_firehose_delivery_s3_bucket",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "change": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "acl": "private",
+ "bucket": "clicklogger-dev-firehose-delivery-bucket-123456789012",
+ "bucket_prefix": null,
+ "force_destroy": false,
+ "tags": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "tags_all": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "acceleration_status": true,
+ "arn": true,
+ "bucket_domain_name": true,
+ "bucket_regional_domain_name": true,
+ "cors_rule": true,
+ "grant": true,
+ "hosted_zone_id": true,
+ "id": true,
+ "lifecycle_rule": true,
+ "logging": true,
+ "object_lock_configuration": true,
+ "object_lock_enabled": true,
+ "policy": true,
+ "region": true,
+ "replication_configuration": true,
+ "request_payer": true,
+ "server_side_encryption_configuration": true,
+ "tags": {},
+ "tags_all": {},
+ "versioning": true,
+ "website": true,
+ "website_domain": true,
+ "website_endpoint": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": {
+ "cors_rule": [],
+ "grant": [],
+ "lifecycle_rule": [],
+ "logging": [],
+ "object_lock_configuration": [],
+ "replication_configuration": [],
+ "server_side_encryption_configuration": [],
+ "tags": {},
+ "tags_all": {},
+ "versioning": [],
+ "website": []
+ }
+ }
+ }],
+ "output_changes": {
+ "S3": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "acl": "private",
+ "bucket": "clicklogger-dev-firehose-delivery-bucket-123456789012",
+ "bucket_prefix": null,
+ "force_destroy": false,
+ "tags": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "tags_all": {
+ "Environment": "dev",
+ "Name": "Firehose S3 Delivery bucket"
+ },
+ "timeouts": null
+ },
+ "after_unknown": {
+ "acceleration_status": true,
+ "arn": true,
+ "bucket_domain_name": true,
+ "bucket_regional_domain_name": true,
+ "cors_rule": true,
+ "grant": true,
+ "hosted_zone_id": true,
+ "id": true,
+ "lifecycle_rule": true,
+ "logging": true,
+ "object_lock_configuration": true,
+ "object_lock_enabled": true,
+ "policy": true,
+ "region": true,
+ "replication_configuration": true,
+ "request_payer": true,
+ "server_side_encryption_configuration": true,
+ "tags": {},
+ "tags_all": {},
+ "versioning": true,
+ "website": true,
+ "website_domain": true,
+ "website_endpoint": true
+ },
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "deployment-url": {
+ "actions": ["create"],
+ "before": null,
+ "after_unknown": true,
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "lambda-clicklogger": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "STREAM_NAME": "clicklogger-firehose-delivery-stream"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda",
+ "handler": "com.clicklogs.Handlers.ClickLoggerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "after_unknown": {
+ "architectures": true,
+ "arn": true,
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": true,
+ "file_system_config": [],
+ "id": true,
+ "image_config": [],
+ "invoke_arn": true,
+ "last_modified": true,
+ "qualified_arn": true,
+ "qualified_invoke_arn": true,
+ "role": true,
+ "signing_job_arn": true,
+ "signing_profile_version_arn": true,
+ "snap_start": [],
+ "source_code_size": true,
+ "tags_all": true,
+ "tracing_config": true,
+ "version": true,
+ "vpc_config": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": false
+ },
+ "lambda-clicklogger-authorzer": {
+ "actions": ["create"],
+ "before": null,
+ "after": {
+ "code_signing_config_arn": null,
+ "dead_letter_config": [],
+ "description": null,
+ "environment": [{
+ "variables": {
+ "AUTH_TOKENS": "ALLOW=ORDERAPP;ALLOW=BILLAPP;"
+ }
+ }],
+ "file_system_config": [],
+ "filename": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "function_name": "clicklogger-lambda-authorizer",
+ "handler": "com.clicklogs.Handlers.APIGatewayAuthorizerHandler::handleRequest",
+ "image_config": [],
+ "image_uri": null,
+ "kms_key_arn": null,
+ "layers": null,
+ "memory_size": 2048,
+ "package_type": "Zip",
+ "publish": false,
+ "replace_security_groups_on_destroy": null,
+ "replacement_security_group_ids": null,
+ "reserved_concurrent_executions": -1,
+ "runtime": "java8",
+ "s3_bucket": null,
+ "s3_key": null,
+ "s3_object_version": null,
+ "skip_destroy": false,
+ "snap_start": [],
+ "source_code_hash": "XKEVaTDaaoic+gbj9uSkhorAcywFBvdUcHsX9QfgYIU=",
+ "tags": null,
+ "timeout": 300,
+ "timeouts": null,
+ "vpc_config": []
+ },
+ "after_unknown": {
+ "architectures": true,
+ "arn": true,
+ "dead_letter_config": [],
+ "environment": [{
+ "variables": {}}],
+ "ephemeral_storage": true,
+ "file_system_config": [],
+ "id": true,
+ "image_config": [],
+ "invoke_arn": true,
+ "last_modified": true,
+ "qualified_arn": true,
+ "qualified_invoke_arn": true,
+ "role": true,
+ "signing_job_arn": true,
+ "signing_profile_version_arn": true,
+ "snap_start": [],
+ "source_code_size": true,
+ "tags_all": true,
+ "tracing_config": true,
+ "version": true,
+ "vpc_config": []
+ },
+ "before_sensitive": false,
+ "after_sensitive": false
+ }
+ },
+ "prior_state": {
+ "format_version": "1.0",
+ "terraform_version": "1.3.9",
+ "values": {
+ "root_module": {
+ "resources": [{
+ "address": "data.aws_caller_identity.current",
+ "mode": "data",
+ "type": "aws_caller_identity",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "account_id": "123456789012",
+ "arn": "arn:aws:iam::123456789012:user/someuser",
+ "id": "123456789012",
+ "user_id": "ANYUSERID"
+ },
+ "sensitive_values": {}}, {
+ "address": "data.aws_iam_policy_document.AWSLambdaTrustPolicy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "AWSLambdaTrustPolicy",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "id": "3693445097",
+ "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"\",\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"lambda.amazonaws.com\"\n }\n }\n ]\n}",
+ "override_json": null,
+ "override_policy_documents": null,
+ "policy_id": null,
+ "source_json": null,
+ "source_policy_documents": null,
+ "statement": [{
+ "actions": ["sts:AssumeRole"],
+ "condition": [],
+ "effect": "Allow",
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [{
+ "identifiers": ["lambda.amazonaws.com"],
+ "type": "Service"
+ }],
+ "resources": [],
+ "sid": ""
+ }],
+ "version": "2012-10-17"
+ },
+ "sensitive_values": {
+ "statement": [{
+ "actions": [false],
+ "condition": [],
+ "not_actions": [],
+ "not_principals": [],
+ "not_resources": [],
+ "principals": [{
+ "identifiers": [false]
+ }],
+ "resources": []
+ }]
+ }
+ }, {
+ "address": "data.aws_region.current",
+ "mode": "data",
+ "type": "aws_region",
+ "name": "current",
+ "provider_name": "registry.terraform.io/hashicorp/aws",
+ "schema_version": 0,
+ "values": {
+ "description": "US East (N. Virginia)",
+ "endpoint": "ec2.us-east-1.amazonaws.com",
+ "id": "us-east-1",
+ "name": "us-east-1"
+ },
+ "sensitive_values": {}}]}}},
+ "configuration": {
+ "provider_config": {
+ "aws": {
+ "name": "aws",
+ "full_name": "registry.terraform.io/hashicorp/aws",
+ "expressions": {
+ "region": {
+ "constant_value": "us-east-1"
+ }
+ }
+ }
+ },
+ "root_module": {
+ "outputs": {
+ "S3": {
+ "expression": {
+ "references": ["aws_s3_bucket.click_logger_firehose_delivery_s3_bucket"]
+ }
+ },
+ "deployment-url": {
+ "expression": {
+ "references": ["aws_api_gateway_deployment.clicklogger_deployment.invoke_url", "aws_api_gateway_deployment.clicklogger_deployment"]
+ }
+ },
+ "lambda-clicklogger": {
+ "expression": {
+ "references": ["aws_lambda_function.lambda_clicklogger"]
+ }
+ },
+ "lambda-clicklogger-authorzer": {
+ "expression": {
+ "references": ["aws_lambda_function.lambda_clicklogger_authorizer"]
+ }
+ }
+ },
+ "resources": [{
+ "address": "aws_api_gateway_account.click_logger_api_gateway_account",
+ "mode": "managed",
+ "type": "aws_api_gateway_account",
+ "name": "click_logger_api_gateway_account",
+ "provider_config_key": "aws",
+ "expressions": {
+ "cloudwatch_role_arn": {
+ "references": ["aws_iam_role.click_logger_api_gateway_cloudwatch_role.arn", "aws_iam_role.click_logger_api_gateway_cloudwatch_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_api_gateway_authorizer.clicklogger-authorizer",
+ "mode": "managed",
+ "type": "aws_api_gateway_authorizer",
+ "name": "clicklogger-authorizer",
+ "provider_config_key": "aws",
+ "expressions": {
+ "authorizer_credentials": {
+ "references": ["aws_iam_role.click_logger_invocation_role.arn", "aws_iam_role.click_logger_invocation_role"]
+ },
+ "authorizer_uri": {
+ "references": ["aws_lambda_function.lambda_clicklogger_authorizer.invoke_arn", "aws_lambda_function.lambda_clicklogger_authorizer"]
+ },
+ "identity_source": {
+ "constant_value": "method.request.header.Authorization"
+ },
+ "name": {
+ "constant_value": "clicklogger-authorizer"
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "type": {
+ "constant_value": "TOKEN"
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_api_gateway_deployment.clicklogger_deployment",
+ "mode": "managed",
+ "type": "aws_api_gateway_deployment",
+ "name": "clicklogger_deployment",
+ "provider_config_key": "aws",
+ "expressions": {
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "stage_name": {
+ "references": ["var.stage_name"]
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_integration.integration"]
+ }, {
+ "address": "aws_api_gateway_integration.integration",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration",
+ "name": "integration",
+ "provider_config_key": "aws",
+ "expressions": {
+ "http_method": {
+ "references": ["aws_api_gateway_method.method.http_method", "aws_api_gateway_method.method"]
+ },
+ "integration_http_method": {
+ "constant_value": "POST"
+ },
+ "resource_id": {
+ "references": ["aws_api_gateway_resource.resource.id", "aws_api_gateway_resource.resource"]
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "type": {
+ "constant_value": "AWS"
+ },
+ "uri": {
+ "references": ["aws_lambda_function.lambda_clicklogger.invoke_arn", "aws_lambda_function.lambda_clicklogger"]
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_rest_api.click_logger_api", "aws_api_gateway_resource.resource", "aws_api_gateway_method.method"]
+ }, {
+ "address": "aws_api_gateway_integration_response.MyDemoIntegrationResponse",
+ "mode": "managed",
+ "type": "aws_api_gateway_integration_response",
+ "name": "MyDemoIntegrationResponse",
+ "provider_config_key": "aws",
+ "expressions": {
+ "http_method": {
+ "references": ["aws_api_gateway_method.method.http_method", "aws_api_gateway_method.method"]
+ },
+ "resource_id": {
+ "references": ["aws_api_gateway_resource.resource.id", "aws_api_gateway_resource.resource"]
+ },
+ "response_parameters": {
+ "constant_value": {
+ "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,X-Requested-With'",
+ "method.response.header.Access-Control-Allow-Methods": "'*'",
+ "method.response.header.Access-Control-Allow-Origin": "'*'"
+ }
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "status_code": {
+ "references": ["aws_api_gateway_method_response.response_200.status_code", "aws_api_gateway_method_response.response_200"]
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_resource.resource", "aws_api_gateway_rest_api.click_logger_api", "aws_api_gateway_method_response.response_200", "aws_api_gateway_method.method", "aws_api_gateway_integration.integration"]
+ }, {
+ "address": "aws_api_gateway_method.method",
+ "mode": "managed",
+ "type": "aws_api_gateway_method",
+ "name": "method",
+ "provider_config_key": "aws",
+ "expressions": {
+ "authorization": {
+ "constant_value": "CUSTOM"
+ },
+ "authorizer_id": {
+ "references": ["aws_api_gateway_authorizer.clicklogger-authorizer.id", "aws_api_gateway_authorizer.clicklogger-authorizer"]
+ },
+ "http_method": {
+ "constant_value": "POST"
+ },
+ "request_models": {
+ "references": ["aws_api_gateway_model.clicklogger_model.name", "aws_api_gateway_model.clicklogger_model"]
+ },
+ "request_parameters": {
+ "constant_value": {
+ "method.request.header.Authorization": true
+ }
+ },
+ "request_validator_id": {
+ "references": ["aws_api_gateway_request_validator.clicklogger_validator.id", "aws_api_gateway_request_validator.clicklogger_validator"]
+ },
+ "resource_id": {
+ "references": ["aws_api_gateway_resource.resource.id", "aws_api_gateway_resource.resource"]
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_rest_api.click_logger_api", "aws_api_gateway_resource.resource", "aws_api_gateway_authorizer.clicklogger-authorizer", "aws_api_gateway_model.clicklogger_model", "aws_api_gateway_request_validator.clicklogger_validator"]
+ }, {
+ "address": "aws_api_gateway_method_response.response_200",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_response",
+ "name": "response_200",
+ "provider_config_key": "aws",
+ "expressions": {
+ "http_method": {
+ "references": ["aws_api_gateway_method.method.http_method", "aws_api_gateway_method.method"]
+ },
+ "resource_id": {
+ "references": ["aws_api_gateway_resource.resource.id", "aws_api_gateway_resource.resource"]
+ },
+ "response_models": {
+ "constant_value": {
+ "application/json": "Empty"
+ }
+ },
+ "response_parameters": {
+ "constant_value": {
+ "method.response.header.Access-Control-Allow-Headers": true,
+ "method.response.header.Access-Control-Allow-Methods": true,
+ "method.response.header.Access-Control-Allow-Origin": true
+ }
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "status_code": {
+ "constant_value": "200"
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_resource.resource", "aws_api_gateway_rest_api.click_logger_api", "aws_api_gateway_method.method"]
+ }, {
+ "address": "aws_api_gateway_method_settings.general_settings",
+ "mode": "managed",
+ "type": "aws_api_gateway_method_settings",
+ "name": "general_settings",
+ "provider_config_key": "aws",
+ "expressions": {
+ "method_path": {
+ "constant_value": "*/*"
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "settings": [{
+ "data_trace_enabled": {
+ "constant_value": true
+ },
+ "logging_level": {
+ "constant_value": "INFO"
+ },
+ "metrics_enabled": {
+ "constant_value": true
+ },
+ "throttling_burst_limit": {
+ "constant_value": 50
+ },
+ "throttling_rate_limit": {
+ "constant_value": 100
+ }
+ }],
+ "stage_name": {
+ "references": ["aws_api_gateway_deployment.clicklogger_deployment.stage_name", "aws_api_gateway_deployment.clicklogger_deployment"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_api_gateway_model.clicklogger_model",
+ "mode": "managed",
+ "type": "aws_api_gateway_model",
+ "name": "clicklogger_model",
+ "provider_config_key": "aws",
+ "expressions": {
+ "content_type": {
+ "constant_value": "application/json"
+ },
+ "description": {
+ "references": ["var.app_prefix"]
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "schema": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_api_gateway_request_validator.clicklogger_validator",
+ "mode": "managed",
+ "type": "aws_api_gateway_request_validator",
+ "name": "clicklogger_validator",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "validate_request_body": {
+ "constant_value": true
+ },
+ "validate_request_parameters": {
+ "constant_value": true
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_api_gateway_resource.resource",
+ "mode": "managed",
+ "type": "aws_api_gateway_resource",
+ "name": "resource",
+ "provider_config_key": "aws",
+ "expressions": {
+ "parent_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.root_resource_id", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "path_part": {
+ "constant_value": "clicklogger"
+ },
+ "rest_api_id": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.id", "aws_api_gateway_rest_api.click_logger_api"]
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_api_gateway_rest_api.click_logger_api"]
+ }, {
+ "address": "aws_api_gateway_rest_api.click_logger_api",
+ "mode": "managed",
+ "type": "aws_api_gateway_rest_api",
+ "name": "click_logger_api",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "click logger api"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "click_logger_firehose_delivery_stream_log_group",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "retention_in_days": {
+ "constant_value": 3
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_cloudwatch_log_group.clicklogger-api-log-group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "clicklogger-api-log-group",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix", "var.stage_name"]
+ },
+ "retention_in_days": {
+ "constant_value": 7
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_authorizer_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_authorizer_log_group",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix", "aws_lambda_function.lambda_clicklogger_authorizer.function_name", "aws_lambda_function.lambda_clicklogger_authorizer"]
+ },
+ "retention_in_days": {
+ "constant_value": 3
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_lambda_function.lambda_clicklogger_authorizer"]
+ }, {
+ "address": "aws_cloudwatch_log_group.lambda_click_logger_log_group",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_group",
+ "name": "lambda_click_logger_log_group",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix", "aws_lambda_function.lambda_clicklogger.function_name", "aws_lambda_function.lambda_clicklogger"]
+ },
+ "retention_in_days": {
+ "constant_value": 3
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_lambda_function.lambda_clicklogger"]
+ }, {
+ "address": "aws_cloudwatch_log_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_cloudwatch_log_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_config_key": "aws",
+ "expressions": {
+ "log_group_name": {
+ "references": ["aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group.name", "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group"]
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_dynamodb_table.click-logger-table",
+ "mode": "managed",
+ "type": "aws_dynamodb_table",
+ "name": "click-logger-table",
+ "provider_config_key": "aws",
+ "expressions": {
+ "attribute": [{
+ "name": {
+ "constant_value": "requestid"
+ },
+ "type": {
+ "constant_value": "S"
+ }
+ }, {
+ "name": {
+ "constant_value": "contextid"
+ },
+ "type": {
+ "constant_value": "S"
+ }
+ }, {
+ "name": {
+ "constant_value": "callerid"
+ },
+ "type": {
+ "constant_value": "S"
+ }
+ }],
+ "billing_mode": {
+ "constant_value": "PROVISIONED"
+ },
+ "global_secondary_index": [{
+ "hash_key": {
+ "constant_value": "contextid"
+ },
+ "name": {
+ "constant_value": "ContextCallerIndex"
+ },
+ "non_key_attributes": {
+ "constant_value": ["requestid", "action", "clientip", "component", "createdtime", "type"]
+ },
+ "projection_type": {
+ "constant_value": "INCLUDE"
+ },
+ "range_key": {
+ "constant_value": "callerid"
+ },
+ "read_capacity": {
+ "constant_value": 5
+ },
+ "write_capacity": {
+ "constant_value": 5
+ }
+ }],
+ "hash_key": {
+ "constant_value": "requestid"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "range_key": {
+ "constant_value": "contextid"
+ },
+ "read_capacity": {
+ "constant_value": 5
+ },
+ "tags": {
+ "references": ["var.app_prefix", "var.stage_name"]
+ },
+ "write_capacity": {
+ "constant_value": 5
+ }
+ },
+ "schema_version": 1
+ }, {
+ "address": "aws_glue_catalog_database.aws_glue_click_logger_database",
+ "mode": "managed",
+ "type": "aws_glue_catalog_database",
+ "name": "aws_glue_click_logger_database",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "Click logger Glue database"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_glue_catalog_table.aws_glue_click_logger_catalog_table",
+ "mode": "managed",
+ "type": "aws_glue_catalog_table",
+ "name": "aws_glue_click_logger_catalog_table",
+ "provider_config_key": "aws",
+ "expressions": {
+ "database_name": {
+ "references": ["var.app_prefix"]
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "parameters": {
+ "constant_value": {
+ "EXTERNAL": "TRUE",
+ "parquet.compression": "SNAPPY"
+ }
+ },
+ "retention": {
+ "constant_value": 0
+ },
+ "storage_descriptor": [{
+ "columns": [{
+ "name": {
+ "constant_value": "requestid"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "name": {
+ "constant_value": "contextid"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "callerid"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "component"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "action"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "type"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "clientip"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }, {
+ "comment": {
+ "constant_value": ""
+ },
+ "name": {
+ "constant_value": "createdtime"
+ },
+ "type": {
+ "constant_value": "string"
+ }
+ }],
+ "compressed": {
+ "constant_value": false
+ },
+ "input_format": {
+ "constant_value": "org.apache.hadoop.mapred.TextInputFormat"
+ },
+ "location": {
+ "references": ["aws_s3_bucket.click_logger_firehose_delivery_s3_bucket.arn", "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket"]
+ },
+ "output_format": {
+ "constant_value": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
+ },
+ "parameters": {
+ "constant_value": {
+ "classification": "json",
+ "compression_type": "none",
+ "crawler_schema_deserializer_version": "1.0",
+ "crawler_schema_serializer_version": "1.0",
+ "type_of_data": "file"
+ }
+ },
+ "ser_de_info": [{
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "parameters": {
+ "constant_value": {
+ "serialization.format": 1
+ }
+ },
+ "serialization_library": {
+ "constant_value": "org.openx.data.jsonserde.JsonSerDe"
+ }
+ }]
+ }],
+ "table_type": {
+ "constant_value": "EXTERNAL_TABLE"
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_glue_catalog_database.aws_glue_click_logger_database", "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket"]
+ }, {
+ "address": "aws_iam_policy.click_loggerlambda_logging_policy",
+ "mode": "managed",
+ "type": "aws_iam_policy",
+ "name": "click_loggerlambda_logging_policy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "description": {
+ "constant_value": "IAM policy for logging from a lambda"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "path": {
+ "constant_value": "/"
+ },
+ "policy": {
+ "references": ["aws_dynamodb_table.click-logger-table.arn", "aws_dynamodb_table.click-logger-table", "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream.arn", "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role.click_logger_api_gateway_cloudwatch_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_api_gateway_cloudwatch_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "constant_value": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"\",\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Service\": \"apigateway.amazonaws.com\"\n },\n \"Action\": \"sts:AssumeRole\"\n }\n ]\n}\n"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role.click_logger_invocation_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_invocation_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "constant_value": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"apigateway.amazonaws.com\"\n },\n \"Effect\": \"Allow\",\n \"Sid\": \"\"\n }\n ]\n}\n"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "path": {
+ "constant_value": "/"
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role.click_logger_lambda_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_lambda_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "references": ["data.aws_iam_policy_document.AWSLambdaTrustPolicy.json", "data.aws_iam_policy_document.AWSLambdaTrustPolicy"]
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role.click_logger_stream_consumer_firehose_role",
+ "mode": "managed",
+ "type": "aws_iam_role",
+ "name": "click_logger_stream_consumer_firehose_role",
+ "provider_config_key": "aws",
+ "expressions": {
+ "assume_role_policy": {
+ "constant_value": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Action\": \"sts:AssumeRole\",\n \"Principal\": {\n \"Service\": \"firehose.amazonaws.com\"\n },\n \"Effect\": \"Allow\",\n \"Sid\": \"\"\n }\n ]\n}\n"
+ },
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role_policy.click_logger_api_gateway_cloudwatch_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_api_gateway_cloudwatch_policy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "policy": {
+ "constant_value": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"logs:CreateLogGroup\",\n \"logs:CreateLogStream\",\n \"logs:DescribeLogGroups\",\n \"logs:DescribeLogStreams\",\n \"logs:PutLogEvents\",\n \"logs:GetLogEvents\",\n \"logs:FilterLogEvents\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n"
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_api_gateway_cloudwatch_role.id", "aws_iam_role.click_logger_api_gateway_cloudwatch_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role_policy.click_logger_invocation_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_invocation_policy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "policy": {
+ "references": ["aws_lambda_function.lambda_clicklogger_authorizer.arn", "aws_lambda_function.lambda_clicklogger_authorizer"]
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_invocation_role.id", "aws_iam_role.click_logger_invocation_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role_policy.click_logger_stream_consumer_firehose_inline_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy",
+ "name": "click_logger_stream_consumer_firehose_inline_policy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "name": {
+ "references": ["var.app_prefix"]
+ },
+ "policy": {
+ "constant_value": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": [\n \"glue:*\",\n \"s3:*\",\n \"logs:*\",\n \"lambda:*\"\n ],\n \"Resource\": \"*\"\n }\n ]\n}\n"
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_stream_consumer_firehose_role.id", "aws_iam_role.click_logger_stream_consumer_firehose_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role_policy_attachment.click_loggerlambda_policy",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "click_loggerlambda_policy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "constant_value": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_lambda_role.name", "aws_iam_role.click_logger_lambda_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_iam_role_policy_attachment.lambda_logs",
+ "mode": "managed",
+ "type": "aws_iam_role_policy_attachment",
+ "name": "lambda_logs",
+ "provider_config_key": "aws",
+ "expressions": {
+ "policy_arn": {
+ "references": ["aws_iam_policy.click_loggerlambda_logging_policy.arn", "aws_iam_policy.click_loggerlambda_logging_policy"]
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_lambda_role.name", "aws_iam_role.click_logger_lambda_role"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream",
+ "mode": "managed",
+ "type": "aws_kinesis_firehose_delivery_stream",
+ "name": "click_logger_firehose_delivery_stream",
+ "provider_config_key": "aws",
+ "expressions": {
+ "destination": {
+ "constant_value": "extended_s3"
+ },
+ "extended_s3_configuration": [{
+ "bucket_arn": {
+ "references": ["aws_s3_bucket.click_logger_firehose_delivery_s3_bucket.arn", "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket"]
+ },
+ "buffer_interval": {
+ "constant_value": 60
+ },
+ "buffer_size": {
+ "constant_value": 64
+ },
+ "cloudwatch_logging_options": [{
+ "enabled": {
+ "constant_value": true
+ },
+ "log_group_name": {
+ "constant_value": "/aws/kinesis_firehose_delivery_stream/click_logger_firehose_delivery_stream"
+ },
+ "log_stream_name": {
+ "constant_value": "click_logger_firehose_delivery_stream"
+ }
+ }],
+ "compression_format": {
+ "constant_value": "UNCOMPRESSED"
+ },
+ "data_format_conversion_configuration": [{
+ "enabled": {
+ "constant_value": true
+ },
+ "input_format_configuration": [{
+ "deserializer": [{
+ "open_x_json_ser_de": [{
+ "case_insensitive": {
+ "constant_value": true
+ }
+ }]
+ }]
+ }],
+ "output_format_configuration": [{
+ "serializer": [{
+ "parquet_ser_de": [{
+ "compression": {
+ "constant_value": "SNAPPY"
+ }
+ }]
+ }]
+ }],
+ "schema_configuration": [{
+ "database_name": {
+ "references": ["aws_glue_catalog_database.aws_glue_click_logger_database.name", "aws_glue_catalog_database.aws_glue_click_logger_database"]
+ },
+ "region": {
+ "references": ["data.aws_region.current.name", "data.aws_region.current"]
+ },
+ "role_arn": {
+ "references": ["aws_iam_role.click_logger_stream_consumer_firehose_role.arn", "aws_iam_role.click_logger_stream_consumer_firehose_role"]
+ },
+ "table_name": {
+ "references": ["aws_glue_catalog_table.aws_glue_click_logger_catalog_table.name", "aws_glue_catalog_table.aws_glue_click_logger_catalog_table"]
+ }
+ }]
+ }],
+ "error_output_prefix": {
+ "constant_value": "clicklog_error/error=!{firehose:error-output-type}data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/"
+ },
+ "prefix": {
+ "constant_value": "clicklog/data=!{timestamp:yyyy}-!{timestamp:MM}-!{timestamp:dd}/"
+ },
+ "processing_configuration": [{
+ "enabled": {
+ "constant_value": "true"
+ },
+ "processors": [{
+ "parameters": [{
+ "parameter_name": {
+ "constant_value": "LambdaArn"
+ },
+ "parameter_value": {
+ "references": ["aws_lambda_function.lambda_clicklogger_stream_consumer.arn", "aws_lambda_function.lambda_clicklogger_stream_consumer"]
+ }
+ }],
+ "type": {
+ "constant_value": "Lambda"
+ }
+ }]
+ }],
+ "role_arn": {
+ "references": ["aws_iam_role.click_logger_stream_consumer_firehose_role.arn", "aws_iam_role.click_logger_stream_consumer_firehose_role"]
+ }
+ }],
+ "name": {
+ "references": ["var.app_prefix"]
+ }
+ },
+ "schema_version": 1,
+ "depends_on": ["aws_s3_bucket.click_logger_firehose_delivery_s3_bucket"]
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger",
+ "provider_config_key": "aws",
+ "expressions": {
+ "environment": [{
+ "variables": {
+ "references": ["aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream.name", "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream"]
+ }
+ }],
+ "filename": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "function_name": {
+ "references": ["var.app_prefix"]
+ },
+ "handler": {
+ "constant_value": "com.clicklogs.Handlers.ClickLoggerHandler::handleRequest"
+ },
+ "memory_size": {
+ "constant_value": 2048
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_lambda_role.arn", "aws_iam_role.click_logger_lambda_role"]
+ },
+ "runtime": {
+ "constant_value": "java8"
+ },
+ "source_code_hash": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "timeout": {
+ "constant_value": 300
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_iam_role.click_logger_lambda_role", "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream"]
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_authorizer",
+ "provider_config_key": "aws",
+ "expressions": {
+ "environment": [{
+ "variables": {
+ "constant_value": {
+ "AUTH_TOKENS": "ALLOW=ORDERAPP;ALLOW=BILLAPP;"
+ }
+ }
+ }],
+ "filename": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "function_name": {
+ "references": ["var.app_prefix"]
+ },
+ "handler": {
+ "constant_value": "com.clicklogs.Handlers.APIGatewayAuthorizerHandler::handleRequest"
+ },
+ "memory_size": {
+ "constant_value": 2048
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_lambda_role.arn", "aws_iam_role.click_logger_lambda_role"]
+ },
+ "runtime": {
+ "constant_value": "java8"
+ },
+ "source_code_hash": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "timeout": {
+ "constant_value": 300
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_iam_role.click_logger_lambda_role"]
+ }, {
+ "address": "aws_lambda_function.lambda_clicklogger_stream_consumer",
+ "mode": "managed",
+ "type": "aws_lambda_function",
+ "name": "lambda_clicklogger_stream_consumer",
+ "provider_config_key": "aws",
+ "expressions": {
+ "environment": [{
+ "variables": {
+ "references": ["aws_dynamodb_table.click-logger-table.name", "aws_dynamodb_table.click-logger-table"]
+ }
+ }],
+ "filename": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "function_name": {
+ "references": ["var.app_prefix"]
+ },
+ "handler": {
+ "constant_value": "com.clicklogs.Handlers.ClickLoggerStreamHandler::handleRequest"
+ },
+ "memory_size": {
+ "constant_value": 2048
+ },
+ "role": {
+ "references": ["aws_iam_role.click_logger_lambda_role.arn", "aws_iam_role.click_logger_lambda_role"]
+ },
+ "runtime": {
+ "constant_value": "java8"
+ },
+ "source_code_hash": {
+ "references": ["var.lambda_source_zip_path"]
+ },
+ "timeout": {
+ "constant_value": 300
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_iam_role.click_logger_lambda_role", "aws_dynamodb_table.click-logger-table"]
+ }, {
+ "address": "aws_lambda_permission.apigw_lambda",
+ "mode": "managed",
+ "type": "aws_lambda_permission",
+ "name": "apigw_lambda",
+ "provider_config_key": "aws",
+ "expressions": {
+ "action": {
+ "constant_value": "lambda:InvokeFunction"
+ },
+ "function_name": {
+ "references": ["aws_lambda_function.lambda_clicklogger.arn", "aws_lambda_function.lambda_clicklogger"]
+ },
+ "principal": {
+ "constant_value": "apigateway.amazonaws.com"
+ },
+ "source_arn": {
+ "references": ["aws_api_gateway_rest_api.click_logger_api.execution_arn", "aws_api_gateway_rest_api.click_logger_api"]
+ },
+ "statement_id": {
+ "constant_value": "AllowExecutionFromAPIGateway"
+ }
+ },
+ "schema_version": 0,
+ "depends_on": ["aws_lambda_function.lambda_clicklogger", "aws_api_gateway_rest_api.click_logger_api"]
+ }, {
+ "address": "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket",
+ "mode": "managed",
+ "type": "aws_s3_bucket",
+ "name": "click_logger_firehose_delivery_s3_bucket",
+ "provider_config_key": "aws",
+ "expressions": {
+ "acl": {
+ "constant_value": "private"
+ },
+ "bucket": {
+ "references": ["var.app_prefix", "var.stage_name", "data.aws_caller_identity.current.account_id", "data.aws_caller_identity.current"]
+ },
+ "tags": {
+ "references": ["var.stage_name"]
+ }
+ },
+ "schema_version": 0
+ }, {
+ "address": "data.aws_caller_identity.current",
+ "mode": "data",
+ "type": "aws_caller_identity",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }, {
+ "address": "data.aws_iam_policy_document.AWSLambdaTrustPolicy",
+ "mode": "data",
+ "type": "aws_iam_policy_document",
+ "name": "AWSLambdaTrustPolicy",
+ "provider_config_key": "aws",
+ "expressions": {
+ "statement": [{
+ "actions": {
+ "constant_value": ["sts:AssumeRole"]
+ },
+ "effect": {
+ "constant_value": "Allow"
+ },
+ "principals": [{
+ "identifiers": {
+ "constant_value": ["lambda.amazonaws.com"]
+ },
+ "type": {
+ "constant_value": "Service"
+ }
+ }]
+ }]
+ },
+ "schema_version": 0
+ }, {
+ "address": "data.aws_region.current",
+ "mode": "data",
+ "type": "aws_region",
+ "name": "current",
+ "provider_config_key": "aws",
+ "schema_version": 0
+ }],
+ "variables": {
+ "app_prefix": {
+ "default": "clicklogger",
+ "description": "Application prefix for the AWS services that are built"
+ },
+ "lambda_source_zip_path": {
+ "default": "..//..//source//clicklogger//target//clicklogger-1.0-SNAPSHOT.jar",
+ "description": "Java lambda zip"
+ },
+ "stage_name": {
+ "default": "dev"
+ }
+ }
+ }
+ },
+ "relevant_attributes": [{
+ "resource": "aws_iam_role.click_logger_lambda_role",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_iam_role.click_logger_invocation_role",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_iam_role.click_logger_stream_consumer_firehose_role",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_dynamodb_table.click-logger-table",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_api_gateway_rest_api.click_logger_api",
+ "attribute": ["id"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "attribute": ["invoke_arn"]
+ }, {
+ "resource": "aws_glue_catalog_database.aws_glue_click_logger_database",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_glue_catalog_table.aws_glue_click_logger_catalog_table",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger_stream_consumer",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_api_gateway_rest_api.click_logger_api",
+ "attribute": ["execution_arn"]
+ }, {
+ "resource": "aws_iam_role.click_logger_stream_consumer_firehose_role",
+ "attribute": ["id"]
+ }, {
+ "resource": "aws_iam_role.click_logger_lambda_role",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_iam_role.click_logger_invocation_role",
+ "attribute": ["id"]
+ }, {
+ "resource": "data.aws_caller_identity.current",
+ "attribute": ["account_id"]
+ }, {
+ "resource": "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_cloudwatch_log_group.click_logger_firehose_delivery_stream_log_group",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_iam_policy.click_loggerlambda_logging_policy",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_s3_bucket.click_logger_firehose_delivery_s3_bucket",
+ "attribute": []
+ }, {
+ "resource": "aws_api_gateway_deployment.clicklogger_deployment",
+ "attribute": ["invoke_url"]
+ }, {
+ "resource": "aws_iam_role.click_logger_api_gateway_cloudwatch_role",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_iam_role.click_logger_api_gateway_cloudwatch_role",
+ "attribute": ["id"]
+ }, {
+ "resource": "aws_api_gateway_resource.resource",
+ "attribute": ["id"]
+ }, {
+ "resource": "aws_api_gateway_method.method",
+ "attribute": ["http_method"]
+ }, {
+ "resource": "aws_api_gateway_rest_api.click_logger_api",
+ "attribute": ["root_resource_id"]
+ }, {
+ "resource": "aws_kinesis_firehose_delivery_stream.click_logger_firehose_delivery_stream",
+ "attribute": ["arn"]
+ }, {
+ "resource": "aws_api_gateway_method_response.response_200",
+ "attribute": ["status_code"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "attribute": ["function_name"]
+ }, {
+ "resource": "aws_api_gateway_model.clicklogger_model",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_api_gateway_request_validator.clicklogger_validator",
+ "attribute": ["id"]
+ }, {
+ "resource": "data.aws_region.current",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger",
+ "attribute": ["function_name"]
+ }, {
+ "resource": "aws_api_gateway_deployment.clicklogger_deployment",
+ "attribute": ["stage_name"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger",
+ "attribute": []
+ }, {
+ "resource": "data.aws_iam_policy_document.AWSLambdaTrustPolicy",
+ "attribute": ["json"]
+ }, {
+ "resource": "aws_dynamodb_table.click-logger-table",
+ "attribute": ["name"]
+ }, {
+ "resource": "aws_api_gateway_authorizer.clicklogger-authorizer",
+ "attribute": ["id"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger",
+ "attribute": ["invoke_arn"]
+ }, {
+ "resource": "aws_lambda_function.lambda_clicklogger_authorizer",
+ "attribute": []
+ }]
+}
\ No newline at end of file