From 248ad69823e5db6650d1e4b783c0d1910944750a Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Fri, 15 May 2020 14:59:14 +0100 Subject: [PATCH] Added news icons to aws network resource (#135) --- diagrams/aws/network.py | 20 ++ docs/nodes/aws.md | 307 ++++++++++++----------- resources/aws/network/nacl.png | Bin 0 -> 5027 bytes resources/aws/network/private-subnet.png | Bin 0 -> 1750 bytes resources/aws/network/public-subnet.png | Bin 0 -> 1796 bytes resources/aws/network/route-table.png | Bin 0 -> 5865 bytes resources/aws/network/vpc-peering.png | Bin 0 -> 5655 bytes 7 files changed, 176 insertions(+), 151 deletions(-) create mode 100644 resources/aws/network/nacl.png create mode 100644 resources/aws/network/private-subnet.png create mode 100644 resources/aws/network/public-subnet.png create mode 100644 resources/aws/network/route-table.png create mode 100644 resources/aws/network/vpc-peering.png diff --git a/diagrams/aws/network.py b/diagrams/aws/network.py index 1a4ea9b8..23f952b0 100644 --- a/diagrams/aws/network.py +++ b/diagrams/aws/network.py @@ -48,6 +48,10 @@ class InternetGateway(_Network): _icon = "internet-gateway.png" +class Nacl(_Network): + _icon = "nacl.png" + + class NATGateway(_Network): _icon = "nat-gateway.png" @@ -56,14 +60,26 @@ class NetworkingAndContentDelivery(_Network): _icon = "networking-and-content-delivery.png" +class PrivateSubnet(_Network): + _icon = "private-subnet.png" + + class Privatelink(_Network): _icon = "privatelink.png" +class PublicSubnet(_Network): + _icon = "public-subnet.png" + + class Route53(_Network): _icon = "route-53.png" +class RouteTable(_Network): + _icon = "route-table.png" + + class SiteToSiteVpn(_Network): _icon = "site-to-site-vpn.png" @@ -72,6 +88,10 @@ class TransitGateway(_Network): _icon = "transit-gateway.png" +class VPCPeering(_Network): + _icon = "vpc-peering.png" + + class VPCRouter(_Network): _icon = "vpc-router.png" diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md index c57e3041..7a20e6a4 100644 --- a/docs/nodes/aws.md +++ b/docs/nodes/aws.md @@ -5,6 +5,56 @@ title: AWS Node classes list of aws provider. +## aws.analytics + +- **diagrams.aws.analytics.Analytics** +- **diagrams.aws.analytics.Athena** +- **diagrams.aws.analytics.CloudsearchSearchDocuments** +- **diagrams.aws.analytics.Cloudsearch** +- **diagrams.aws.analytics.DataPipeline** +- **diagrams.aws.analytics.ElasticsearchService**, **ES** (alias) +- **diagrams.aws.analytics.EMRCluster** +- **diagrams.aws.analytics.EMRHdfsCluster** +- **diagrams.aws.analytics.EMR** +- **diagrams.aws.analytics.GlueCrawlers** +- **diagrams.aws.analytics.GlueDataCatalog** +- **diagrams.aws.analytics.Glue** +- **diagrams.aws.analytics.KinesisDataAnalytics** +- **diagrams.aws.analytics.KinesisDataFirehose** +- **diagrams.aws.analytics.KinesisDataStreams** +- **diagrams.aws.analytics.KinesisVideoStreams** +- **diagrams.aws.analytics.Kinesis** +- **diagrams.aws.analytics.LakeFormation** +- **diagrams.aws.analytics.ManagedStreamingForKafka** +- **diagrams.aws.analytics.Quicksight** +- **diagrams.aws.analytics.RedshiftDenseComputeNode** +- **diagrams.aws.analytics.RedshiftDenseStorageNode** +- **diagrams.aws.analytics.Redshift** + +## aws.compute + +- **diagrams.aws.compute.ApplicationAutoScaling**, **AutoScaling** (alias) +- **diagrams.aws.compute.Batch** +- **diagrams.aws.compute.Compute** +- **diagrams.aws.compute.EC2ContainerRegistry**, **ECR** (alias) +- **diagrams.aws.compute.EC2** +- **diagrams.aws.compute.ElasticBeanstalk**, **EB** (alias) +- **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias) +- **diagrams.aws.compute.ElasticKubernetesService**, **EKS** (alias) +- **diagrams.aws.compute.Fargate** +- **diagrams.aws.compute.Lambda** +- **diagrams.aws.compute.Lightsail** +- **diagrams.aws.compute.Outposts** +- **diagrams.aws.compute.ServerlessApplicationRepository**, **SAR** (alias) +- **diagrams.aws.compute.ThinkboxDeadline** +- **diagrams.aws.compute.ThinkboxDraft** +- **diagrams.aws.compute.ThinkboxFrost** +- **diagrams.aws.compute.ThinkboxKrakatoa** +- **diagrams.aws.compute.ThinkboxSequoia** +- **diagrams.aws.compute.ThinkboxStoke** +- **diagrams.aws.compute.ThinkboxXmesh** +- **diagrams.aws.compute.VmwareCloudOnAWS** + ## aws.database - **diagrams.aws.database.Aurora** @@ -20,27 +70,25 @@ Node classes list of aws provider. - **diagrams.aws.database.Redshift** - **diagrams.aws.database.Timestream** -## aws.security +## aws.devtools -- **diagrams.aws.security.Artifact** -- **diagrams.aws.security.CertificateManager**, **ACM** (alias) -- **diagrams.aws.security.CloudDirectory** -- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias) -- **diagrams.aws.security.Cognito** -- **diagrams.aws.security.DirectoryService**, **DS** (alias) -- **diagrams.aws.security.FirewallManager**, **FMS** (alias) -- **diagrams.aws.security.Guardduty** -- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias) -- **diagrams.aws.security.Inspector** -- **diagrams.aws.security.KeyManagementService**, **KMS** (alias) -- **diagrams.aws.security.Macie** -- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias) -- **diagrams.aws.security.SecretsManager** -- **diagrams.aws.security.SecurityHub** -- **diagrams.aws.security.SecurityIdentityAndCompliance** -- **diagrams.aws.security.Shield** -- **diagrams.aws.security.SingleSignOn** -- **diagrams.aws.security.WAF** +- **diagrams.aws.devtools.CloudDevelopmentKit** +- **diagrams.aws.devtools.Cloud9** +- **diagrams.aws.devtools.Codebuild** +- **diagrams.aws.devtools.Codecommit** +- **diagrams.aws.devtools.Codedeploy** +- **diagrams.aws.devtools.Codepipeline** +- **diagrams.aws.devtools.Codestar** +- **diagrams.aws.devtools.CommandLineInterface**, **CLI** (alias) +- **diagrams.aws.devtools.DeveloperTools**, **DevTools** (alias) +- **diagrams.aws.devtools.ToolsAndSdks** +- **diagrams.aws.devtools.XRay** + +## aws.engagement + +- **diagrams.aws.engagement.Connect** +- **diagrams.aws.engagement.Pinpoint** +- **diagrams.aws.engagement.SimpleEmailServiceSes**, **SES** (alias) ## aws.integration @@ -53,26 +101,20 @@ Node classes list of aws provider. - **diagrams.aws.integration.SimpleQueueServiceSqs**, **SQS** (alias) - **diagrams.aws.integration.StepFunctions**, **SF** (alias) -## aws.network +## aws.iot -- **diagrams.aws.network.APIGateway** -- **diagrams.aws.network.AppMesh** -- **diagrams.aws.network.ClientVpn** -- **diagrams.aws.network.CloudMap** -- **diagrams.aws.network.CloudFront**, **CF** (alias) -- **diagrams.aws.network.DirectConnect** -- **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias) -- **diagrams.aws.network.Endpoint** -- **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias) -- **diagrams.aws.network.InternetGateway** -- **diagrams.aws.network.NATGateway** -- **diagrams.aws.network.NetworkingAndContentDelivery** -- **diagrams.aws.network.Privatelink** -- **diagrams.aws.network.Route53** -- **diagrams.aws.network.SiteToSiteVpn** -- **diagrams.aws.network.TransitGateway** -- **diagrams.aws.network.VPCRouter** -- **diagrams.aws.network.VPC** +- **diagrams.aws.iot.Freertos**, **FreeRTOS** (alias) +- **diagrams.aws.iot.InternetOfThings** +- **diagrams.aws.iot.Iot1Click** +- **diagrams.aws.iot.IotAnalytics** +- **diagrams.aws.iot.IotButton** +- **diagrams.aws.iot.IotCore** +- **diagrams.aws.iot.IotDeviceDefender** +- **diagrams.aws.iot.IotDeviceManagement** +- **diagrams.aws.iot.IotEvents** +- **diagrams.aws.iot.IotGreengrass** +- **diagrams.aws.iot.IotSitewise** +- **diagrams.aws.iot.IotThingsGraph** ## aws.management @@ -95,83 +137,19 @@ Node classes list of aws provider. - **diagrams.aws.management.TrustedAdvisor** - **diagrams.aws.management.WellArchitectedTool** -## aws.storage - -- **diagrams.aws.storage.Backup** -- **diagrams.aws.storage.CloudendureDisasterRecovery**, **CDR** (alias) -- **diagrams.aws.storage.EFSInfrequentaccessPrimaryBg** -- **diagrams.aws.storage.EFSStandardPrimaryBg** -- **diagrams.aws.storage.ElasticBlockStoreEBS**, **EBS** (alias) -- **diagrams.aws.storage.ElasticFileSystemEFS**, **EFS** (alias) -- **diagrams.aws.storage.FsxForLustre** -- **diagrams.aws.storage.FsxForWindowsFileServer** -- **diagrams.aws.storage.Fsx**, **FSx** (alias) -- **diagrams.aws.storage.S3Glacier** -- **diagrams.aws.storage.SimpleStorageServiceS3**, **S3** (alias) -- **diagrams.aws.storage.SnowballEdge** -- **diagrams.aws.storage.Snowball** -- **diagrams.aws.storage.Snowmobile** -- **diagrams.aws.storage.StorageGateway** -- **diagrams.aws.storage.Storage** - -## aws.iot - -- **diagrams.aws.iot.Freertos**, **FreeRTOS** (alias) -- **diagrams.aws.iot.InternetOfThings** -- **diagrams.aws.iot.Iot1Click** -- **diagrams.aws.iot.IotAnalytics** -- **diagrams.aws.iot.IotButton** -- **diagrams.aws.iot.IotCore** -- **diagrams.aws.iot.IotDeviceDefender** -- **diagrams.aws.iot.IotDeviceManagement** -- **diagrams.aws.iot.IotEvents** -- **diagrams.aws.iot.IotGreengrass** -- **diagrams.aws.iot.IotSitewise** -- **diagrams.aws.iot.IotThingsGraph** - -## aws.engagement - -- **diagrams.aws.engagement.Connect** -- **diagrams.aws.engagement.Pinpoint** -- **diagrams.aws.engagement.SimpleEmailServiceSes**, **SES** (alias) - -## aws.compute - -- **diagrams.aws.compute.ApplicationAutoScaling**, **AutoScaling** (alias) -- **diagrams.aws.compute.Batch** -- **diagrams.aws.compute.Compute** -- **diagrams.aws.compute.EC2ContainerRegistry**, **ECR** (alias) -- **diagrams.aws.compute.EC2** -- **diagrams.aws.compute.ElasticBeanstalk**, **EB** (alias) -- **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias) -- **diagrams.aws.compute.ElasticKubernetesService**, **EKS** (alias) -- **diagrams.aws.compute.Fargate** -- **diagrams.aws.compute.Lambda** -- **diagrams.aws.compute.Lightsail** -- **diagrams.aws.compute.Outposts** -- **diagrams.aws.compute.ServerlessApplicationRepository**, **SAR** (alias) -- **diagrams.aws.compute.ThinkboxDeadline** -- **diagrams.aws.compute.ThinkboxDraft** -- **diagrams.aws.compute.ThinkboxFrost** -- **diagrams.aws.compute.ThinkboxKrakatoa** -- **diagrams.aws.compute.ThinkboxSequoia** -- **diagrams.aws.compute.ThinkboxStoke** -- **diagrams.aws.compute.ThinkboxXmesh** -- **diagrams.aws.compute.VmwareCloudOnAWS** - -## aws.devtools +## aws.migration -- **diagrams.aws.devtools.CloudDevelopmentKit** -- **diagrams.aws.devtools.Cloud9** -- **diagrams.aws.devtools.Codebuild** -- **diagrams.aws.devtools.Codecommit** -- **diagrams.aws.devtools.Codedeploy** -- **diagrams.aws.devtools.Codepipeline** -- **diagrams.aws.devtools.Codestar** -- **diagrams.aws.devtools.CommandLineInterface**, **CLI** (alias) -- **diagrams.aws.devtools.DeveloperTools**, **DevTools** (alias) -- **diagrams.aws.devtools.ToolsAndSdks** -- **diagrams.aws.devtools.XRay** +- **diagrams.aws.migration.ApplicationDiscoveryService**, **ADS** (alias) +- **diagrams.aws.migration.CloudendureMigration**, **CEM** (alias) +- **diagrams.aws.migration.DatabaseMigrationService**, **DMS** (alias) +- **diagrams.aws.migration.Datasync** +- **diagrams.aws.migration.MigrationAndTransfer**, **MAT** (alias) +- **diagrams.aws.migration.MigrationHub** +- **diagrams.aws.migration.ServerMigrationService**, **SMS** (alias) +- **diagrams.aws.migration.SnowballEdge** +- **diagrams.aws.migration.Snowball** +- **diagrams.aws.migration.Snowmobile** +- **diagrams.aws.migration.TransferForSftp** ## aws.ml @@ -195,42 +173,69 @@ Node classes list of aws provider. - **diagrams.aws.ml.Transcribe** - **diagrams.aws.ml.Translate** -## aws.migration +## aws.network -- **diagrams.aws.migration.ApplicationDiscoveryService**, **ADS** (alias) -- **diagrams.aws.migration.CloudendureMigration**, **CEM** (alias) -- **diagrams.aws.migration.DatabaseMigrationService**, **DMS** (alias) -- **diagrams.aws.migration.Datasync** -- **diagrams.aws.migration.MigrationAndTransfer**, **MAT** (alias) -- **diagrams.aws.migration.MigrationHub** -- **diagrams.aws.migration.ServerMigrationService**, **SMS** (alias) -- **diagrams.aws.migration.SnowballEdge** -- **diagrams.aws.migration.Snowball** -- **diagrams.aws.migration.Snowmobile** -- **diagrams.aws.migration.TransferForSftp** +- **diagrams.aws.network.APIGateway** +- **diagrams.aws.network.AppMesh** +- **diagrams.aws.network.ClientVpn** +- **diagrams.aws.network.CloudMap** +- **diagrams.aws.network.CloudFront**, **CF** (alias) +- **diagrams.aws.network.DirectConnect** +- **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias) +- **diagrams.aws.network.Endpoint** +- **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias) +- **diagrams.aws.network.InternetGateway** +- **diagrams.aws.network.Nacl** +- **diagrams.aws.network.NATGateway** +- **diagrams.aws.network.NetworkingAndContentDelivery** +- **diagrams.aws.network.PrivateSubnet** +- **diagrams.aws.network.Privatelink** +- **diagrams.aws.network.PublicSubnet** +- **diagrams.aws.network.Route53** +- **diagrams.aws.network.RouteTable** +- **diagrams.aws.network.SiteToSiteVpn** +- **diagrams.aws.network.TransitGateway** +- **diagrams.aws.network.VPCPeering** +- **diagrams.aws.network.VPCRouter** +- **diagrams.aws.network.VPC** -## aws.analytics +## aws.security -- **diagrams.aws.analytics.Analytics** -- **diagrams.aws.analytics.Athena** -- **diagrams.aws.analytics.CloudsearchSearchDocuments** -- **diagrams.aws.analytics.Cloudsearch** -- **diagrams.aws.analytics.DataPipeline** -- **diagrams.aws.analytics.ElasticsearchService**, **ES** (alias) -- **diagrams.aws.analytics.EMRCluster** -- **diagrams.aws.analytics.EMRHdfsCluster** -- **diagrams.aws.analytics.EMR** -- **diagrams.aws.analytics.GlueCrawlers** -- **diagrams.aws.analytics.GlueDataCatalog** -- **diagrams.aws.analytics.Glue** -- **diagrams.aws.analytics.KinesisDataAnalytics** -- **diagrams.aws.analytics.KinesisDataFirehose** -- **diagrams.aws.analytics.KinesisDataStreams** -- **diagrams.aws.analytics.KinesisVideoStreams** -- **diagrams.aws.analytics.Kinesis** -- **diagrams.aws.analytics.LakeFormation** -- **diagrams.aws.analytics.ManagedStreamingForKafka** -- **diagrams.aws.analytics.Quicksight** -- **diagrams.aws.analytics.RedshiftDenseComputeNode** -- **diagrams.aws.analytics.RedshiftDenseStorageNode** -- **diagrams.aws.analytics.Redshift** +- **diagrams.aws.security.Artifact** +- **diagrams.aws.security.CertificateManager**, **ACM** (alias) +- **diagrams.aws.security.CloudDirectory** +- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias) +- **diagrams.aws.security.Cognito** +- **diagrams.aws.security.DirectoryService**, **DS** (alias) +- **diagrams.aws.security.FirewallManager**, **FMS** (alias) +- **diagrams.aws.security.Guardduty** +- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias) +- **diagrams.aws.security.Inspector** +- **diagrams.aws.security.KeyManagementService**, **KMS** (alias) +- **diagrams.aws.security.Macie** +- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias) +- **diagrams.aws.security.SecretsManager** +- **diagrams.aws.security.SecurityHub** +- **diagrams.aws.security.SecurityIdentityAndCompliance** +- **diagrams.aws.security.Shield** +- **diagrams.aws.security.SingleSignOn** +- **diagrams.aws.security.WAF** + +## aws.storage + +- **diagrams.aws.storage.Backup** +- **diagrams.aws.storage.CloudendureDisasterRecovery**, **CDR** (alias) +- **diagrams.aws.storage.EFSInfrequentaccessPrimaryBg** +- **diagrams.aws.storage.EFSStandardPrimaryBg** +- **diagrams.aws.storage.ElasticBlockStoreEBS**, **EBS** (alias) +- **diagrams.aws.storage.ElasticFileSystemEFS**, **EFS** (alias) +- **diagrams.aws.storage.FsxForLustre** +- **diagrams.aws.storage.FsxForWindowsFileServer** +- **diagrams.aws.storage.Fsx**, **FSx** (alias) +- **diagrams.aws.storage.S3Glacier** +- **diagrams.aws.storage.SimpleStorageServiceS3**, **S3** (alias) +- **diagrams.aws.storage.SnowballEdge** +- **diagrams.aws.storage.Snowball** +- **diagrams.aws.storage.Snowmobile** +- **diagrams.aws.storage.StorageGateway** +- **diagrams.aws.storage.Storage** diff --git a/resources/aws/network/nacl.png b/resources/aws/network/nacl.png new file mode 100644 index 0000000000000000000000000000000000000000..fd14518a829ab968110bfcd0fda44bb0027a4dd8 GIT binary patch literal 5027 zcmV;U6I|?xP)!E^)`n9zdX9I1cVK!-1R;6_;;z7G%Ea6i7_XqwgsIUAj8@PPL@;f%1F-|M0^dmc zEvt;FIwyZCE9*QFeD~{akWkfm>-=S&{6l%-+qZANev}|Mb8~a!=jXV5SVSST0T;1Y zeNu!Wv=JMj7=1#7A>@FGQ2xVxqliPu1ru9l2}HypztHQ zFA$9u%yG3JzBKe*T0@;kD*ua!<2vvRW4s0pih;`sV$q`6il@0wl}N7sTM@@Av(Z6^ zMH2`@|8KA9@8rl?DYb!MHmm*cYtvsS6|RZow|^tz_!%}$@UqPp+QJTk*+@9{yGTSJ zpyVm^>#phV(-2Q3v2@b2)C#1F;y_L@&m?^EMG=NAyO^_-MbcS;%tnVPgz>KF?~*vr z5X!pgFA|HZ0_lP{5Jt`MisdcNs3Mhn7cY33@D?vs>ZuGO{~b$+CHwHJ5J@Kl5=j{6 zQaSaz09O0qHqh_-h1uvZE(vHHSU8;!$}a-RRUCnZaVmNXXvifMt0T86_iTLkYqA%L z7D=`OnT-xw6bsM7cq;V|T2&G)m9EF0t8`i@i`9O(^!PKAAWMND+*o^jVrEzR3{=wA z9(5Wktc*cc0>Kk<>FI{=AhK*kQAJ5CQ%_A%{Xm(w&BI>fyFfA#$HGINafT?CIowVuh$5z76=m2wPP>igj^+iZ^5PHRThq+>NCQwqzV`&v{oSS8Xp~g z#P=|&OARm^&`@;^zdp6qo3u_K2m{uRn~oMaC6h5g@nhk5-KT8}Ut1-R+2}BVIBeqM z6NDii!vS~{+tBL_k!%8dwIH-cAhXe7sg(L)@zHD&#*}a@j6AIN!+C(O<(=dOf`oBn z>DnJra+Ksd0Jt~$!S&wa<2vM;q<(Lb76__T8w+=yUDGOM9GbHyh$Pu67ke&NY>;nk zEiU?lQfeULhzG9q0N36GeQ&q8*GZD32SFnE+3;iHH4?zVo7|^ZKuOMnAo(*D$D??S zG$?tKN5hYP#=TF9q&&!MbXXfEd}k!#$vt_5pOL`Qu+sIo+7G7zzm^fn2*g4h$tQS% zb)h90kt7jfS%_nYkV?dnIJifH(%4iE?_m>-)3^t*5Jxgk7r~4+-s?s^h{XlFZ~B4> z_Tb*#8+@d3Ptuq`P_Zx-M-pyVum|_hR3wd6w;Bnt4Er2sB;!)T%?R{MHU<^0MjnvS z1%j^W7v|fwIL4BU=LsrYTLY2&H}*>4r~)y(AR>+qkh)Do69`s*9+~xU5l4qG6v+uC z{wS+}VS?t;ZWY$*y+1cJ>@-2EK)l8|=~+;eVq>lQW@oZumrVNx!o z+>T>d;S8R%2NehgEF77!W#e5_Aq@-~$YIp#ZkPS-aJPjRhl^ zK+yf<T`NItM zA5TLs6+rx2*GxLLWx8L}peZ+~c}vhxS=$QwBmWR@?ctt#EBbg72$nB%4zGEL)G2@C z=|C9ahdAo4<(tr7K-umAXvuE@d}T!2vKkaHpHoFEnu5Y`0yZ{5%_1RS_vMR!=~!! z`LH=Bfs_vFr^xoOc_BWqCC+m9xvLj(^&lMYagxJp1mD1>sD$0wi&zW9z1g|NyoZ!^D<~b-KgR2_ zk95Lr%#D6Yk>fh(u)P$o*39YVB%H60CwU5`GQfi6yP*M%N4(Htb zxs6R4hgetyNG)eSN$&AG7+~?Dl=^6Rs7w!^c}e*^zovk#Q5CIsuw5f;auCTqEWloc zFP7(u7wFG^i8b=3WdzAZj094Oo9j5o9PHHwFs0+8#~=Bj>0<#BWW(sLPfSa`rXFO% zcml2^PJRW8=4=kyr+DvcL0%5P=BS58&vdVdjX)^G{R70je+T>(e`6nx@B@zRg%Jq0 zGEy6&b|Hs&wU8KLkc3(QwnsG%?@YGkns^Y7^5kX#^olscD->?(y;ABgyzUJSz3k(6 z2|wW2Alr+W^g%d3RFd;oI8~LpbKchm=Zr7p;q;RYW47;vn+mWz2r_@F5%VO;`47;m z;Owv**Y%6=-#8DZzVt_a02_QF-ge8aW^qF-@g8PyuGc5dBoHju`Q+($b_I?tvaT0b zAe>5x2;>#&dKvAJVeWm9YSt?pTV!1?UmirlD*)F`g;zGEa4N^>``Ck>1I#eXj|V|5 zpGp#C)$S{t^*%P&i}O@8UTc&w)HUvL)@E@$h=f<3v6(_BL%xmi5@z`j$Vr-mLTbP! zo%1%1KqxmP;gygolx>nBR&ApYEqN;8WC;Wbmneklg>%{$k@2zq@WM8(cuxDWT}7&zk!G9^1{gPFg1~LG8rdt8{mO`6)MD{ z1af93kDH20nEu1JnUyE0xb`{H_h>b+i7F4!<0Rp*O=^!wt&LLxp>8(Edt4hxQ05)B zl6Iv;Dc+I*w(vqM_Utp4`cpPq`!lEzi&_@!D~IU8lT9P*wfBn>2$i7wEbrvcH@c>x2u>(r8W&Y-+D(PJJ&6C5HLcZO-Bm3CGq5Gqclsspa1l)R@RRG&2dH!+iO zA5gYhY3nYtd1J(|Me?4+(@yXQ?&)Q3EELwZS|R+WYMTti$`H<7j;m!T6vvZJcuuWd_@(3+9Fv-lJ}Ni znT$WdCVYj`*0!2Nh^2Fi)qXfpNulUAnJ7;|G;qX#9bm?_fCU* zKn*!Bqwnz`p@PdVxCkU@jEHTJrpdcZ7i=Drd+>zutBnu+sG9hmqz4fM&yWxEDv`Pf zBxq6$MQ;t=wan*g9+P`;hjKmpybepOZ8b>`f;jeQ*d%&NHID5PxCbU-vA)O0RP)E= z1cJuWzlOE*$5i$=2;Z6Fo^a9k`ri~Azex!M#~V|JpIq{3wI5DXX)Fmp8^2TLu?=ND zr*_1($q7@zK$CB6m~Ygb&LkwjYCl}eMu!)}Aq*dolO*9yTs(-c#OjSjGJd8`XA;r? z_h@X`_`QQo_$mZh+iIOas6!-u3FMt&GXAW8wyVdK}-F6y9cwbIs;%0U=B z!gENz(K2w)#)ipzV@hQc5Sppx3WQx2b#E73NthbNXc@QduiM4w6j8&c@ zj!eM4ypJ#$r@(sqxJ!r?!-GgNo+*~eyDiqXS|d$Da!(1ZeV=|JV1?!cfAki|K#MSh zN?;#z%-6E99p_V;YX!2}4_|O(SKY}z91p^&6v#X(AvHKQ=`IkI z+^o-d6NH8!&)DR&7PzZhgqQqn+bmL5?(2f9z zkQ}@GIrpGAw&>4;pbkw9amYE$T1VXd7K3xH{U~O5wc|FaO?DJ^){B&uJy5Hg+rTOF zKADOIbOASsMS;1%ug!1<&iNMzmYqBi?&~)9reOyRthJyy zNS*BaWMZGDLmN2COX`d{p;K^d&*+E@8-Y;C>NMkIT}Twz92H)jg9-$R9rX)(xhCsE z(o7h8Ka96n*v!S^jHj1<WKrnfNO4e`N-ZK!=2R25PcF(pGb6jTgN-iR#0LKokk9Bhu2*-;^ zs3imewnZJXb8bW+D3^&B5t@WmxpG-|=6b>u$BXnawnY%U0h^*KS5DqTxeCO1Ui^lg{`&2AWgO?MqclaDbDTE1#=4Om-C3vf2-~j15(q z53|u>6Jg^KwU0i>K@6dwu2t~uy9lj5Fy8v))3$EDee*Xl6Fa(&j08%DV}p$MMGGE5 zXmw0 zg`>lR6kS4jkm5*RY8s3fw>7z3d$kU;~_`B${dHA%&qmh!)AF;way1d=`;(7lVqG<^i@9lptl^ zYs^N6Ez@mk{*n=&-2$ERf0%FAc}J9mufaV?iHX5<^o^8%y94eu*BhK-4knBy5G*U1 zFq8J4QfezA$sgR~Ewh}fZD$g5iBe1tQuIf-IfjTNa}33ykd#MVWExc<>NRP&6A5>@M6cb~Qt=r?l{p+XquAh(k4% zgIt0O@o4Z7eW8z1;YuIeqhlMzp;8fuvJ*)k6|N*Mr0_eqH(Tba+=67pp;8I4%3!4A zN5hY4Va+AvN&|#cOT(~P^FLqXdVGmoMOr;&J*h&XtS6U341jIyK!qU=kA z1(KTt#39#EZ7J0!FOY)S=&-bK->R7M9dh4t7eO&)ZV>`2Y|oO`w3nosoOV8KG}$hIF(_AnJ9zDR)!P7z(R#TN&cERv_xN%C%;WIj!P^C*vmdgfSLKz9$Z$RKar-o1A>o zYJn6uCX5AVh|T)|l#a+Yzaoa(#3;G0va{JiaAPQl@t zI8>cLl!$}{!m)Bw?rnpjIiY;Kg(!{^HqlgxLs0@zA`)xhY2H9Is?@tsj+>6uMNdVG z;j4HCJL<%tI08{35+PG4aVYNSQO*w%gf_voY4&Vh5s8osCbn#4^%8OkZN%mw@8lLl tC_)=>iGIArO(GT{C48j>{|^8F|Noh&N^xR;zH9&h002ovPDHLkV1hNsWt{*3 literal 0 HcmV?d00001 diff --git a/resources/aws/network/private-subnet.png b/resources/aws/network/private-subnet.png new file mode 100644 index 0000000000000000000000000000000000000000..c31424f0544e5cbc1724c91cf27a7729a9e2252d GIT binary patch literal 1750 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