├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── blog └── microsoft .net web api in aws using cdk.png ├── cdk ├── add-project.hook.d.ts ├── cdk.json ├── cdk.out │ ├── TodoInfraStack.template.json │ ├── cdk.out │ ├── manifest.json │ └── tree.json ├── config │ └── buildspec.yml ├── run.sh └── src │ ├── Todo.sln │ └── Todo │ ├── Constants.cs │ ├── Modules │ ├── EnvironmentVariable.cs │ ├── FargateExecutionRole.cs │ └── FargateTaskRole.cs │ ├── Program.cs │ ├── Todo.csproj │ ├── TodoInfraStack.cs │ ├── Utilities │ ├── ServiceBuilder.cs │ └── ServiceProvider.cs │ └── obj │ ├── Debug │ └── netcoreapp2.1 │ │ ├── Todo.AssemblyInfo.cs │ │ ├── Todo.AssemblyInfoInputs.cache │ │ ├── Todo.assets.cache │ │ ├── Todo.csproj.FileListAbsolute.txt │ │ ├── Todo.csprojAssemblyReference.cache │ │ ├── Todo.dll │ │ └── Todo.pdb │ ├── Todo.csproj.nuget.cache │ ├── Todo.csproj.nuget.dgspec.json │ ├── Todo.csproj.nuget.g.props │ ├── Todo.csproj.nuget.g.targets │ └── project.assets.json └── webapi ├── Controllers ├── Parameters.cs ├── TodoController.cs └── ValuesController.cs ├── Dockerfile ├── Models ├── Todo.cs └── TodoContext.cs ├── Program.cs ├── Properties └── launchSettings.json ├── Startup.cs ├── appsettings.Development.json ├── appsettings.json ├── obj ├── todo-app.csproj.nuget.cache ├── todo-app.csproj.nuget.dgspec.json ├── todo-app.csproj.nuget.g.props └── todo-app.csproj.nuget.g.targets └── todo-app.csproj /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | [Cc]dk.out/ 27 | 28 | # Visual Studio 2015/2017 cache/options directory 29 | .vs/ 30 | 31 | # Visual Studio Code cache/options directory 32 | .vscode/ 33 | 34 | # Uncomment if you have tasks that create the project's static files in wwwroot 35 | #wwwroot/ 36 | 37 | # Visual Studio 2017 auto generated files 38 | Generated\ Files/ 39 | 40 | # MSTest test Results 41 | [Tt]est[Rr]esult*/ 42 | [Bb]uild[Ll]og.* 43 | 44 | # NUNIT 45 | *.VisualState.xml 46 | TestResult.xml 47 | 48 | # Build Results of an ATL Project 49 | [Dd]ebugPS/ 50 | [Rr]eleasePS/ 51 | dlldata.c 52 | 53 | # Benchmark Results 54 | BenchmarkDotNet.Artifacts/ 55 | 56 | # .NET Core 57 | project.lock.json 58 | project.fragment.lock.json 59 | artifacts/ 60 | **/Properties/launchSettings.json 61 | 62 | # StyleCop 63 | StyleCopReport.xml 64 | 65 | # Files built by Visual Studio 66 | *_i.c 67 | *_p.c 68 | *_i.h 69 | *.ilk 70 | *.meta 71 | *.obj 72 | *.iobj 73 | *.pch 74 | *.pdb 75 | *.ipdb 76 | *.pgc 77 | *.pgd 78 | *.rsp 79 | *.sbr 80 | *.tlb 81 | *.tli 82 | *.tlh 83 | *.tmp 84 | *.tmp_proj 85 | *.log 86 | *.vspscc 87 | *.vssscc 88 | .builds 89 | *.pidb 90 | *.svclog 91 | *.scc 92 | 93 | # Chutzpah Test files 94 | _Chutzpah* 95 | 96 | # Visual C++ cache files 97 | ipch/ 98 | *.aps 99 | *.ncb 100 | *.opendb 101 | *.opensdf 102 | *.sdf 103 | *.cachefile 104 | *.VC.db 105 | *.VC.VC.opendb 106 | 107 | # Visual Studio profiler 108 | *.psess 109 | *.vsp 110 | *.vspx 111 | *.sap 112 | 113 | # Visual Studio Trace Files 114 | *.e2e 115 | 116 | # TFS 2012 Local Workspace 117 | $tf/ 118 | 119 | # Guidance Automation Toolkit 120 | *.gpState 121 | 122 | # ReSharper is a .NET coding add-in 123 | _ReSharper*/ 124 | *.[Rr]e[Ss]harper 125 | *.DotSettings.user 126 | 127 | # JustCode is a .NET coding add-in 128 | .JustCode 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | *.nupkg 187 | # The packages folder can be ignored because of Package Restore 188 | **/[Pp]ackages/* 189 | # except build/, which is used as an MSBuild target. 190 | !**/[Pp]ackages/build/ 191 | # Uncomment if necessary however generally it will be regenerated when needed 192 | #!**/[Pp]ackages/repositories.config 193 | # NuGet v3's project.json files produces more ignorable files 194 | *.nuget.props 195 | *.nuget.targets 196 | 197 | # Microsoft Azure Build Output 198 | csx/ 199 | *.build.csdef 200 | 201 | # Microsoft Azure Emulator 202 | ecf/ 203 | rcf/ 204 | 205 | # Windows Store app package directories and files 206 | AppPackages/ 207 | BundleArtifacts/ 208 | Package.StoreAssociation.xml 209 | _pkginfo.txt 210 | *.appx 211 | 212 | # Visual Studio cache files 213 | # files ending in .cache can be ignored 214 | *.[Cc]ache 215 | # but keep track of directories ending in .cache 216 | !*.[Cc]ache/ 217 | 218 | # Others 219 | ClientBin/ 220 | ~$* 221 | *~ 222 | *.dbmdl 223 | *.dbproj.schemaview 224 | *.jfm 225 | *.pfx 226 | *.publishsettings 227 | orleans.codegen.cs 228 | 229 | # Including strong name files can present a security risk 230 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 231 | #*.snk 232 | 233 | # Since there are multiple workflows, uncomment next line to ignore bower_components 234 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 235 | #bower_components/ 236 | 237 | # RIA/Silverlight projects 238 | Generated_Code/ 239 | 240 | # Backup & report files from converting an old project file 241 | # to a newer Visual Studio version. Backup files are not needed, 242 | # because we have git ;-) 243 | _UpgradeReport_Files/ 244 | Backup*/ 245 | UpgradeLog*.XML 246 | UpgradeLog*.htm 247 | ServiceFabricBackup/ 248 | *.rptproj.bak 249 | 250 | # SQL Server files 251 | *.mdf 252 | *.ldf 253 | *.ndf 254 | 255 | # Business Intelligence projects 256 | *.rdl.data 257 | *.bim.layout 258 | *.bim_*.settings 259 | *.rptproj.rsuser 260 | 261 | # Microsoft Fakes 262 | FakesAssemblies/ 263 | 264 | # GhostDoc plugin setting file 265 | *.GhostDoc.xml 266 | 267 | # Node.js Tools for Visual Studio 268 | .ntvs_analysis.dat 269 | node_modules/ 270 | 271 | # Visual Studio 6 build log 272 | *.plg 273 | 274 | # Visual Studio 6 workspace options file 275 | *.opt 276 | 277 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 278 | *.vbw 279 | 280 | # Visual Studio LightSwitch build output 281 | **/*.HTMLClient/GeneratedArtifacts 282 | **/*.DesktopClient/GeneratedArtifacts 283 | **/*.DesktopClient/ModelManifest.xml 284 | **/*.Server/GeneratedArtifacts 285 | **/*.Server/ModelManifest.xml 286 | _Pvt_Extensions 287 | 288 | # Paket dependency manager 289 | .paket/paket.exe 290 | paket-files/ 291 | 292 | # FAKE - F# Make 293 | .fake/ 294 | 295 | # JetBrains Rider 296 | .idea/ 297 | *.sln.iml 298 | 299 | # CodeRush 300 | .cr/ 301 | 302 | # Python Tools for Visual Studio (PTVS) 303 | __pycache__/ 304 | *.pyc 305 | 306 | # Cake - Uncomment if you are using it 307 | # tools/** 308 | # !tools/packages.config 309 | 310 | # Tabs Studio 311 | *.tss 312 | 313 | # Telerik's JustMock configuration file 314 | *.jmconfig 315 | 316 | # BizTalk build output 317 | *.btp.cs 318 | *.btm.cs 319 | *.odx.cs 320 | *.xsd.cs 321 | 322 | # OpenCover UI analysis results 323 | OpenCover/ 324 | 325 | # Azure Stream Analytics local run output 326 | ASALocalRun/ 327 | 328 | # MSBuild Binary and Structured Log 329 | *.binlog 330 | 331 | # NVidia Nsight GPU debugger configuration file 332 | *.nvuser 333 | 334 | # MFractors (Xamarin productivity tool) working folder 335 | .mfractor/ 336 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional 4 | documentation, we greatly value feedback and contributions from our community. 5 | 6 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary 7 | information to effectively respond to your bug report or contribution. 8 | 9 | 10 | ## Reporting Bugs/Feature Requests 11 | 12 | We welcome you to use the GitHub issue tracker to report bugs or suggest features. 13 | 14 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already 15 | reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: 16 | 17 | * A reproducible test case or series of steps 18 | * The version of our code being used 19 | * Any modifications you've made relevant to the bug 20 | * Anything unusual about your environment or deployment 21 | 22 | 23 | ## Contributing via Pull Requests 24 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: 25 | 26 | 1. You are working against the latest source on the *master* branch. 27 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. 28 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted. 29 | 30 | To send us a pull request, please: 31 | 32 | 1. Fork the repository. 33 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. 34 | 3. Ensure local tests pass. 35 | 4. Commit to your fork using clear commit messages. 36 | 5. Send us a pull request, answering any default questions in the pull request interface. 37 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. 38 | 39 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and 40 | [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 41 | 42 | 43 | ## Finding contributions to work on 44 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. 45 | 46 | 47 | ## Code of Conduct 48 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 49 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 50 | opensource-codeofconduct@amazon.com with any additional questions or comments. 51 | 52 | 53 | ## Security issue notifications 54 | If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. 55 | 56 | 57 | ## Licensing 58 | 59 | See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. 60 | 61 | We may ask you to sign a [Contributor License Agreement (CLA)](http://en.wikipedia.org/wiki/Contributor_License_Agreement) for larger changes. 62 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 11 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 12 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Developing a Microsoft .NET Core WebAPI application with Amazon Aurora Database using AWS CDK 2 | In our previous blog (https://aws.amazon.com/blogs/developer/developing-a-microsoft-net-core-web-api-application-with-aurora-database-using-cloudformation/), we developed a Microsoft.NET Web API application with Aurora Database using AWS CloudFormation. In this blog we will use AWS Cloud Development Kit (AWS CDK) which is a software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation. 3 | 4 | Real-world Microsoft workloads include a lot of Web APIs that are native to Microsoft methods for serving front-end applications (like ASP.NET, ASP.NET Razor/MVC, React or Angular Application). Even though there are customers who want to try serverless with AWS Lambda, they often have to continue to maintain their existing .NET Web APIs. These applications traditionally talk to Microsoft SQL Server database for CRUD operations. This blog is for application teams that are migrating out of traditional Microsoft SQL Server workloads. You can use this blog to learn how to create, connect and integrate with Amazon Aurora Database, while continuing to use existing .NET Core Web API technology. 5 | 6 | In this blog, we use AWS CDK to define the cloud resources. 7 | 8 | 1. We will use C#/.NET Developer preview CDK version in this exercise. 9 | 2. CDK provides Developers with one of the supported programming languages. The AWS CDK supports TypeScript, JavaScript, and Python. The AWS CDK also provides Developer Preview support for C#/.NET, and Java. 10 | 3. Developers can define reusable cloud components known as Constructs. This is composed together into Stacks and Apps. 11 | Please refer AWS CDK documentation for more details 12 | 13 | 14 | **As part of this blog we will do the following.** 15 | 16 | 1. Create a simple TODO, Microsoft .NET Core WebAPI application and integrate AWS SDK Package like SSM into it. 17 | 18 | 2. AWS Cloud Development Kit (CDK) is used to define the cloud infrastructure and provisioning is done thorugh AWS CloudFormation 19 | 20 | 3. Utilize Elastic Container Service (ECS), Elastic Container Registry (ECR), Amazon Systems Manager (SSM) [maintains the Aurora DB Credentials] 21 | 22 | 4. Amazon Aurora (Serverless) Database for better database freedom. 23 | 24 | ![Alt text](blog/microsoft%20.net%20web%20api%20in%20aws%20using%20cdk.png?raw=true "Title") 25 | 26 | ### Design Considerations 27 | 28 | 1. "webapi" - We use dotnet cli/version 2.1 (LTS). The application is not tested in higher/3.x versions but ideally should be able to code/run the application 29 | 30 | 2. "cdk" - AWS CDK 1.15.0-devpreview is the stable version at the time of writing this application. Any upcoming or future/release version may have possible/different implementation on the CDK implementation 31 | - Refer cdk\src\Todo\Todo.csproj for TargetFramework and Package Reference versions 32 | - Ex: netcoreapp3.0 and 1.17.1-devpreview also works 33 | 34 | ### Prerequisites: 35 | - Docker - Install & make sure to have your Docker daemon running on your machine. 36 | - AWS SDK, MySql.Data packages are referred by the project and are added already 37 | 38 | ## Versions used while developing this solultion 39 | * cdk - 1.15.0-devpreview 40 | * .Net Core - 2.2 41 | 42 | ### Steps 43 | 44 | 1. Clone this repository and execute the below command to spin up the infrastructure and the application 45 | - cd aws-netcoreapi-aurora-cdk\cdk 46 | 47 | - Option 1: 48 | - "src" folder has a "run.sh" script that 49 | - builds the dotnet src folder 50 | - cdk bootstrap - This sets the S3 bucket for the assets 51 | - cdk deploy 52 | - you may have to run below commands 53 | - "chmod +x run.sh" 54 | - ./run.sh 55 | 56 | - Option 2: 57 | - To manually run the individual commands. Run these below 58 | - $ dotnet build src 59 | - $ cdk bootstrap 60 | - $ cdk deploy 61 | 62 | 2. The WebAPI is exposed to the outside world using Public LoadBalancer in the Outputs section. 63 | 64 | ### Test 65 | 66 | 1. From the output of the second stack use the "WebApiUrl" to test the api. 67 | 68 | 2. You can use tools like Postman, ARC Rest Client or Browser extensions like RestMan 69 | 70 | 3. Select "content-type" as "application/json" 71 | 72 | 4. POST as rawdata/json - sample below 73 | 74 | ``` 75 | { 76 | "Task": "new TODO Application", 77 | "Status": "Completed" 78 | } 79 | ``` 80 | 5. Use the same url and fire a GET call to see the previously posted todo item as response. 81 | 82 | ## Useful commands 83 | * `npm install -g aws-cdk` 84 | * `cdk init app --language csharp` 85 | 86 | * `dotnet build src` compiles the .Net app 87 | * `cdk deploy` deploys this stack to your default AWS account/region 88 | * `cdk diff` compares deployed stack with current state 89 | * `cdk synth` synthesizes and prints the CloudFormation template for this stack. 90 | * `cdk destroy` deletes the aws resources created as part of the deploy. 91 | 92 | 93 | ## Cleanup 94 | 95 | **Make sure to check the following are deleted before the delete stacks are performed** 96 | 97 | - Contents of the S3 files are deleted 98 | - In AWS Console, look for "CDKToolkit" stack 99 | - Go to "Resources" tab, select the s3 bucket 100 | - Select all the contents & delete the contents manually 101 | 102 | 103 | **Once above steps are completed. Execute the below commands:** 104 | 105 | ``` 106 | - AWS CDK Command to destroy the stack 107 | $ CDK destroy 108 | 109 | - Optionally CLI Commands(below) or AWS Console can also be used to delete the stack(s) 110 | 111 | $ aws cloudformation delete-stack --stack-name ToDoInfraStack 112 | 113 | $ aws cloudformation delete-stack --stack-name CDKToolkit 114 | ``` 115 | 116 | ## References 117 | 118 | • AWS Cloud Development Kit (CDK) 119 | https://docs.aws.amazon.com/cdk/latest/guide/home.html 120 | 121 | • AWS CDK .NET API Reference 122 | https://docs.aws.amazon.com/cdk/api/latest/dotnet/api/index.html 123 | 124 | • Microsoft .Net Core 125 | https://dotnet.microsoft.com/download/dotnet-core/2.2 126 | 127 | 128 | ## License 129 | 130 | This library is licensed under the MIT-0 License. See the LICENSE file. 131 | -------------------------------------------------------------------------------- /blog/microsoft .net web api in aws using cdk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-netcoreapi-aurora-cdk/31f2727297cf9e665f3553fbbd4c61c43959b9a9/blog/microsoft .net web api in aws using cdk.png -------------------------------------------------------------------------------- /cdk/add-project.hook.d.ts: -------------------------------------------------------------------------------- 1 | import { InvokeHook } from '../../../init'; 2 | export declare const invoke: InvokeHook; 3 | -------------------------------------------------------------------------------- /cdk/cdk.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": "dotnet src/Todo/bin/Debug/netcoreapp2.1/Todo.dll" 3 | } 4 | -------------------------------------------------------------------------------- /cdk/cdk.out/TodoInfraStack.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "Resources": { 3 | "netcoreapivpc96E2D1AB": { 4 | "Type": "AWS::EC2::VPC", 5 | "Properties": { 6 | "CidrBlock": "10.0.0.0/16", 7 | "EnableDnsHostnames": true, 8 | "EnableDnsSupport": true, 9 | "InstanceTenancy": "default", 10 | "Tags": [ 11 | { 12 | "Key": "Name", 13 | "Value": "TodoInfraStack/netcore-api-vpc" 14 | } 15 | ] 16 | }, 17 | "Metadata": { 18 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/Resource" 19 | } 20 | }, 21 | "netcoreapivpcPublicSubnet1SubnetB51A3C53": { 22 | "Type": "AWS::EC2::Subnet", 23 | "Properties": { 24 | "CidrBlock": "10.0.0.0/18", 25 | "VpcId": { 26 | "Ref": "netcoreapivpc96E2D1AB" 27 | }, 28 | "AvailabilityZone": { 29 | "Fn::Select": [ 30 | 0, 31 | { 32 | "Fn::GetAZs": "" 33 | } 34 | ] 35 | }, 36 | "MapPublicIpOnLaunch": true, 37 | "Tags": [ 38 | { 39 | "Key": "Name", 40 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet1" 41 | }, 42 | { 43 | "Key": "aws-cdk:subnet-name", 44 | "Value": "Public" 45 | }, 46 | { 47 | "Key": "aws-cdk:subnet-type", 48 | "Value": "Public" 49 | } 50 | ] 51 | }, 52 | "Metadata": { 53 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/Subnet" 54 | } 55 | }, 56 | "netcoreapivpcPublicSubnet1RouteTable27FF0CBF": { 57 | "Type": "AWS::EC2::RouteTable", 58 | "Properties": { 59 | "VpcId": { 60 | "Ref": "netcoreapivpc96E2D1AB" 61 | }, 62 | "Tags": [ 63 | { 64 | "Key": "Name", 65 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet1" 66 | } 67 | ] 68 | }, 69 | "Metadata": { 70 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/RouteTable" 71 | } 72 | }, 73 | "netcoreapivpcPublicSubnet1RouteTableAssociationAD716B02": { 74 | "Type": "AWS::EC2::SubnetRouteTableAssociation", 75 | "Properties": { 76 | "RouteTableId": { 77 | "Ref": "netcoreapivpcPublicSubnet1RouteTable27FF0CBF" 78 | }, 79 | "SubnetId": { 80 | "Ref": "netcoreapivpcPublicSubnet1SubnetB51A3C53" 81 | } 82 | }, 83 | "Metadata": { 84 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/RouteTableAssociation" 85 | } 86 | }, 87 | "netcoreapivpcPublicSubnet1DefaultRoute68A2BA90": { 88 | "Type": "AWS::EC2::Route", 89 | "Properties": { 90 | "RouteTableId": { 91 | "Ref": "netcoreapivpcPublicSubnet1RouteTable27FF0CBF" 92 | }, 93 | "DestinationCidrBlock": "0.0.0.0/0", 94 | "GatewayId": { 95 | "Ref": "netcoreapivpcIGW71123C43" 96 | } 97 | }, 98 | "DependsOn": [ 99 | "netcoreapivpcVPCGW590013C5" 100 | ], 101 | "Metadata": { 102 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/DefaultRoute" 103 | } 104 | }, 105 | "netcoreapivpcPublicSubnet1EIP9755BCCD": { 106 | "Type": "AWS::EC2::EIP", 107 | "Properties": { 108 | "Domain": "vpc" 109 | }, 110 | "Metadata": { 111 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/EIP" 112 | } 113 | }, 114 | "netcoreapivpcPublicSubnet1NATGateway3491A159": { 115 | "Type": "AWS::EC2::NatGateway", 116 | "Properties": { 117 | "AllocationId": { 118 | "Fn::GetAtt": [ 119 | "netcoreapivpcPublicSubnet1EIP9755BCCD", 120 | "AllocationId" 121 | ] 122 | }, 123 | "SubnetId": { 124 | "Ref": "netcoreapivpcPublicSubnet1SubnetB51A3C53" 125 | }, 126 | "Tags": [ 127 | { 128 | "Key": "Name", 129 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet1" 130 | } 131 | ] 132 | }, 133 | "Metadata": { 134 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/NATGateway" 135 | } 136 | }, 137 | "netcoreapivpcPublicSubnet2Subnet6A0DFF78": { 138 | "Type": "AWS::EC2::Subnet", 139 | "Properties": { 140 | "CidrBlock": "10.0.64.0/18", 141 | "VpcId": { 142 | "Ref": "netcoreapivpc96E2D1AB" 143 | }, 144 | "AvailabilityZone": { 145 | "Fn::Select": [ 146 | 1, 147 | { 148 | "Fn::GetAZs": "" 149 | } 150 | ] 151 | }, 152 | "MapPublicIpOnLaunch": true, 153 | "Tags": [ 154 | { 155 | "Key": "Name", 156 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet2" 157 | }, 158 | { 159 | "Key": "aws-cdk:subnet-name", 160 | "Value": "Public" 161 | }, 162 | { 163 | "Key": "aws-cdk:subnet-type", 164 | "Value": "Public" 165 | } 166 | ] 167 | }, 168 | "Metadata": { 169 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/Subnet" 170 | } 171 | }, 172 | "netcoreapivpcPublicSubnet2RouteTable2B2C9D99": { 173 | "Type": "AWS::EC2::RouteTable", 174 | "Properties": { 175 | "VpcId": { 176 | "Ref": "netcoreapivpc96E2D1AB" 177 | }, 178 | "Tags": [ 179 | { 180 | "Key": "Name", 181 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet2" 182 | } 183 | ] 184 | }, 185 | "Metadata": { 186 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/RouteTable" 187 | } 188 | }, 189 | "netcoreapivpcPublicSubnet2RouteTableAssociation519F1BB8": { 190 | "Type": "AWS::EC2::SubnetRouteTableAssociation", 191 | "Properties": { 192 | "RouteTableId": { 193 | "Ref": "netcoreapivpcPublicSubnet2RouteTable2B2C9D99" 194 | }, 195 | "SubnetId": { 196 | "Ref": "netcoreapivpcPublicSubnet2Subnet6A0DFF78" 197 | } 198 | }, 199 | "Metadata": { 200 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/RouteTableAssociation" 201 | } 202 | }, 203 | "netcoreapivpcPublicSubnet2DefaultRouteF9E77C45": { 204 | "Type": "AWS::EC2::Route", 205 | "Properties": { 206 | "RouteTableId": { 207 | "Ref": "netcoreapivpcPublicSubnet2RouteTable2B2C9D99" 208 | }, 209 | "DestinationCidrBlock": "0.0.0.0/0", 210 | "GatewayId": { 211 | "Ref": "netcoreapivpcIGW71123C43" 212 | } 213 | }, 214 | "DependsOn": [ 215 | "netcoreapivpcVPCGW590013C5" 216 | ], 217 | "Metadata": { 218 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/DefaultRoute" 219 | } 220 | }, 221 | "netcoreapivpcPublicSubnet2EIPDF8C6DF1": { 222 | "Type": "AWS::EC2::EIP", 223 | "Properties": { 224 | "Domain": "vpc" 225 | }, 226 | "Metadata": { 227 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/EIP" 228 | } 229 | }, 230 | "netcoreapivpcPublicSubnet2NATGatewayD5B13FEC": { 231 | "Type": "AWS::EC2::NatGateway", 232 | "Properties": { 233 | "AllocationId": { 234 | "Fn::GetAtt": [ 235 | "netcoreapivpcPublicSubnet2EIPDF8C6DF1", 236 | "AllocationId" 237 | ] 238 | }, 239 | "SubnetId": { 240 | "Ref": "netcoreapivpcPublicSubnet2Subnet6A0DFF78" 241 | }, 242 | "Tags": [ 243 | { 244 | "Key": "Name", 245 | "Value": "TodoInfraStack/netcore-api-vpc/PublicSubnet2" 246 | } 247 | ] 248 | }, 249 | "Metadata": { 250 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/NATGateway" 251 | } 252 | }, 253 | "netcoreapivpcPrivateSubnet1Subnet7F795326": { 254 | "Type": "AWS::EC2::Subnet", 255 | "Properties": { 256 | "CidrBlock": "10.0.128.0/18", 257 | "VpcId": { 258 | "Ref": "netcoreapivpc96E2D1AB" 259 | }, 260 | "AvailabilityZone": { 261 | "Fn::Select": [ 262 | 0, 263 | { 264 | "Fn::GetAZs": "" 265 | } 266 | ] 267 | }, 268 | "MapPublicIpOnLaunch": false, 269 | "Tags": [ 270 | { 271 | "Key": "Name", 272 | "Value": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1" 273 | }, 274 | { 275 | "Key": "aws-cdk:subnet-name", 276 | "Value": "Private" 277 | }, 278 | { 279 | "Key": "aws-cdk:subnet-type", 280 | "Value": "Private" 281 | } 282 | ] 283 | }, 284 | "Metadata": { 285 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/Subnet" 286 | } 287 | }, 288 | "netcoreapivpcPrivateSubnet1RouteTable847C4ACE": { 289 | "Type": "AWS::EC2::RouteTable", 290 | "Properties": { 291 | "VpcId": { 292 | "Ref": "netcoreapivpc96E2D1AB" 293 | }, 294 | "Tags": [ 295 | { 296 | "Key": "Name", 297 | "Value": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1" 298 | } 299 | ] 300 | }, 301 | "Metadata": { 302 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/RouteTable" 303 | } 304 | }, 305 | "netcoreapivpcPrivateSubnet1RouteTableAssociation51BC7D7D": { 306 | "Type": "AWS::EC2::SubnetRouteTableAssociation", 307 | "Properties": { 308 | "RouteTableId": { 309 | "Ref": "netcoreapivpcPrivateSubnet1RouteTable847C4ACE" 310 | }, 311 | "SubnetId": { 312 | "Ref": "netcoreapivpcPrivateSubnet1Subnet7F795326" 313 | } 314 | }, 315 | "Metadata": { 316 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/RouteTableAssociation" 317 | } 318 | }, 319 | "netcoreapivpcPrivateSubnet1DefaultRoute608C251A": { 320 | "Type": "AWS::EC2::Route", 321 | "Properties": { 322 | "RouteTableId": { 323 | "Ref": "netcoreapivpcPrivateSubnet1RouteTable847C4ACE" 324 | }, 325 | "DestinationCidrBlock": "0.0.0.0/0", 326 | "NatGatewayId": { 327 | "Ref": "netcoreapivpcPublicSubnet1NATGateway3491A159" 328 | } 329 | }, 330 | "Metadata": { 331 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/DefaultRoute" 332 | } 333 | }, 334 | "netcoreapivpcPrivateSubnet2Subnet7EC38565": { 335 | "Type": "AWS::EC2::Subnet", 336 | "Properties": { 337 | "CidrBlock": "10.0.192.0/18", 338 | "VpcId": { 339 | "Ref": "netcoreapivpc96E2D1AB" 340 | }, 341 | "AvailabilityZone": { 342 | "Fn::Select": [ 343 | 1, 344 | { 345 | "Fn::GetAZs": "" 346 | } 347 | ] 348 | }, 349 | "MapPublicIpOnLaunch": false, 350 | "Tags": [ 351 | { 352 | "Key": "Name", 353 | "Value": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2" 354 | }, 355 | { 356 | "Key": "aws-cdk:subnet-name", 357 | "Value": "Private" 358 | }, 359 | { 360 | "Key": "aws-cdk:subnet-type", 361 | "Value": "Private" 362 | } 363 | ] 364 | }, 365 | "Metadata": { 366 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/Subnet" 367 | } 368 | }, 369 | "netcoreapivpcPrivateSubnet2RouteTable7FAA81A9": { 370 | "Type": "AWS::EC2::RouteTable", 371 | "Properties": { 372 | "VpcId": { 373 | "Ref": "netcoreapivpc96E2D1AB" 374 | }, 375 | "Tags": [ 376 | { 377 | "Key": "Name", 378 | "Value": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2" 379 | } 380 | ] 381 | }, 382 | "Metadata": { 383 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/RouteTable" 384 | } 385 | }, 386 | "netcoreapivpcPrivateSubnet2RouteTableAssociation7556C53A": { 387 | "Type": "AWS::EC2::SubnetRouteTableAssociation", 388 | "Properties": { 389 | "RouteTableId": { 390 | "Ref": "netcoreapivpcPrivateSubnet2RouteTable7FAA81A9" 391 | }, 392 | "SubnetId": { 393 | "Ref": "netcoreapivpcPrivateSubnet2Subnet7EC38565" 394 | } 395 | }, 396 | "Metadata": { 397 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/RouteTableAssociation" 398 | } 399 | }, 400 | "netcoreapivpcPrivateSubnet2DefaultRoute51D96B76": { 401 | "Type": "AWS::EC2::Route", 402 | "Properties": { 403 | "RouteTableId": { 404 | "Ref": "netcoreapivpcPrivateSubnet2RouteTable7FAA81A9" 405 | }, 406 | "DestinationCidrBlock": "0.0.0.0/0", 407 | "NatGatewayId": { 408 | "Ref": "netcoreapivpcPublicSubnet2NATGatewayD5B13FEC" 409 | } 410 | }, 411 | "Metadata": { 412 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/DefaultRoute" 413 | } 414 | }, 415 | "netcoreapivpcIGW71123C43": { 416 | "Type": "AWS::EC2::InternetGateway", 417 | "Properties": { 418 | "Tags": [ 419 | { 420 | "Key": "Name", 421 | "Value": "TodoInfraStack/netcore-api-vpc" 422 | } 423 | ] 424 | }, 425 | "Metadata": { 426 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/IGW" 427 | } 428 | }, 429 | "netcoreapivpcVPCGW590013C5": { 430 | "Type": "AWS::EC2::VPCGatewayAttachment", 431 | "Properties": { 432 | "VpcId": { 433 | "Ref": "netcoreapivpc96E2D1AB" 434 | }, 435 | "InternetGatewayId": { 436 | "Ref": "netcoreapivpcIGW71123C43" 437 | } 438 | }, 439 | "Metadata": { 440 | "aws:cdk:path": "TodoInfraStack/netcore-api-vpc/VPCGW" 441 | } 442 | }, 443 | "netcoreecsclusterCB5C3F5B": { 444 | "Type": "AWS::ECS::Cluster", 445 | "Properties": { 446 | "ClusterName": "netcore-cluster", 447 | "Tags": [ 448 | { 449 | "Key": "Name", 450 | "Value": "netcore-cdk-app" 451 | } 452 | ] 453 | }, 454 | "Metadata": { 455 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-cluster/Resource" 456 | } 457 | }, 458 | "netcoretaskdefinitionexecroleidnetcoretaskdefinitionexecroleidrole897DD9B1": { 459 | "Type": "AWS::IAM::Role", 460 | "Properties": { 461 | "AssumeRolePolicyDocument": { 462 | "Statement": [ 463 | { 464 | "Action": "sts:AssumeRole", 465 | "Effect": "Allow", 466 | "Principal": { 467 | "Service": "ecs-tasks.amazonaws.com" 468 | } 469 | } 470 | ], 471 | "Version": "2012-10-17" 472 | }, 473 | "Path": "/", 474 | "Tags": [ 475 | { 476 | "Key": "Name", 477 | "Value": "netcore-cdk-app" 478 | } 479 | ] 480 | }, 481 | "Metadata": { 482 | "aws:cdk:path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role/Resource" 483 | } 484 | }, 485 | "netcoretaskdefinitionexecroleidnetcoretaskdefinitionexecroleidroleDefaultPolicyBF82838D": { 486 | "Type": "AWS::IAM::Policy", 487 | "Properties": { 488 | "PolicyDocument": { 489 | "Statement": [ 490 | { 491 | "Action": [ 492 | "ecr:GetAuthorizationToken", 493 | "ecr:BatchCheckLayerAvailability", 494 | "ecr:GetDownloadUrlForLayer", 495 | "ecr:BatchGetImage", 496 | "logs:CreateLogStream", 497 | "logs:PutLogEvents" 498 | ], 499 | "Effect": "Allow", 500 | "Resource": "*" 501 | }, 502 | { 503 | "Action": [ 504 | "ecr:BatchCheckLayerAvailability", 505 | "ecr:GetDownloadUrlForLayer", 506 | "ecr:BatchGetImage" 507 | ], 508 | "Effect": "Allow", 509 | "Resource": { 510 | "Fn::Join": [ 511 | "", 512 | [ 513 | "arn:", 514 | { 515 | "Ref": "AWS::Partition" 516 | }, 517 | ":ecr:", 518 | { 519 | "Ref": "AWS::Region" 520 | }, 521 | ":", 522 | { 523 | "Ref": "AWS::AccountId" 524 | }, 525 | ":repository/", 526 | { 527 | "Fn::GetAtt": [ 528 | "netcorecontainerdefinitionidAssetImageAdoptRepository80A5F73F", 529 | "RepositoryName" 530 | ] 531 | } 532 | ] 533 | ] 534 | } 535 | }, 536 | { 537 | "Action": "ecr:GetAuthorizationToken", 538 | "Effect": "Allow", 539 | "Resource": "*" 540 | }, 541 | { 542 | "Action": [ 543 | "logs:CreateLogStream", 544 | "logs:PutLogEvents" 545 | ], 546 | "Effect": "Allow", 547 | "Resource": { 548 | "Fn::GetAtt": [ 549 | "netcorecontainerdefinitionidLogGroupD97407CE", 550 | "Arn" 551 | ] 552 | } 553 | } 554 | ], 555 | "Version": "2012-10-17" 556 | }, 557 | "PolicyName": "netcoretaskdefinitionexecroleidnetcoretaskdefinitionexecroleidroleDefaultPolicyBF82838D", 558 | "Roles": [ 559 | { 560 | "Ref": "netcoretaskdefinitionexecroleidnetcoretaskdefinitionexecroleidrole897DD9B1" 561 | } 562 | ] 563 | }, 564 | "Metadata": { 565 | "aws:cdk:path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role/DefaultPolicy/Resource" 566 | } 567 | }, 568 | "netcoretaskdefinitiontaskroleidnetcoretaskdefinitiontaskroleidrole229DC336": { 569 | "Type": "AWS::IAM::Role", 570 | "Properties": { 571 | "AssumeRolePolicyDocument": { 572 | "Statement": [ 573 | { 574 | "Action": "sts:AssumeRole", 575 | "Effect": "Allow", 576 | "Principal": { 577 | "Service": [ 578 | "ecs.amazonaws.com", 579 | "ecs-tasks.amazonaws.com" 580 | ] 581 | } 582 | } 583 | ], 584 | "Version": "2012-10-17" 585 | }, 586 | "ManagedPolicyArns": [ 587 | { 588 | "Fn::Join": [ 589 | "", 590 | [ 591 | "arn:", 592 | { 593 | "Ref": "AWS::Partition" 594 | }, 595 | ":iam::aws:policy/AmazonRDSFullAccess" 596 | ] 597 | ] 598 | }, 599 | { 600 | "Fn::Join": [ 601 | "", 602 | [ 603 | "arn:", 604 | { 605 | "Ref": "AWS::Partition" 606 | }, 607 | ":iam::aws:policy/AmazonSSMFullAccess" 608 | ] 609 | ] 610 | }, 611 | { 612 | "Fn::Join": [ 613 | "", 614 | [ 615 | "arn:", 616 | { 617 | "Ref": "AWS::Partition" 618 | }, 619 | ":iam::aws:policy/AmazonEC2ContainerServiceFullAccess" 620 | ] 621 | ] 622 | }, 623 | { 624 | "Fn::Join": [ 625 | "", 626 | [ 627 | "arn:", 628 | { 629 | "Ref": "AWS::Partition" 630 | }, 631 | ":iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role" 632 | ] 633 | ] 634 | } 635 | ], 636 | "Path": "/", 637 | "Tags": [ 638 | { 639 | "Key": "Name", 640 | "Value": "netcore-cdk-app" 641 | } 642 | ] 643 | }, 644 | "Metadata": { 645 | "aws:cdk:path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role/Resource" 646 | } 647 | }, 648 | "netcoretaskdefinitiontaskroleidnetcoretaskdefinitiontaskroleidroleDefaultPolicyAF0A827E": { 649 | "Type": "AWS::IAM::Policy", 650 | "Properties": { 651 | "PolicyDocument": { 652 | "Statement": [ 653 | { 654 | "Action": [ 655 | "ec2:AttachNetworkInterface", 656 | "ec2:CreateNetworkInterface", 657 | "ec2:CreateNetworkInterfacePermission", 658 | "ec2:DeleteNetworkInterface", 659 | "ec2:DeleteNetworkInterfacePermission", 660 | "ec2:Describe*", 661 | "ec2:DetachNetworkInterface", 662 | "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", 663 | "elasticloadbalancing:DeregisterTargets", 664 | "elasticloadbalancing:Describe*", 665 | "elasticloadbalancing:RegisterInstancesWithLoadBalancer", 666 | "elasticloadbalancing:RegisterTargets" 667 | ], 668 | "Effect": "Allow", 669 | "Resource": "*" 670 | } 671 | ], 672 | "Version": "2012-10-17" 673 | }, 674 | "PolicyName": "netcoretaskdefinitiontaskroleidnetcoretaskdefinitiontaskroleidroleDefaultPolicyAF0A827E", 675 | "Roles": [ 676 | { 677 | "Ref": "netcoretaskdefinitiontaskroleidnetcoretaskdefinitiontaskroleidrole229DC336" 678 | } 679 | ] 680 | }, 681 | "Metadata": { 682 | "aws:cdk:path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role/DefaultPolicy/Resource" 683 | } 684 | }, 685 | "netcoreecsdefinitionid50E1B9C5": { 686 | "Type": "AWS::ECS::TaskDefinition", 687 | "Properties": { 688 | "ContainerDefinitions": [ 689 | { 690 | "Cpu": 256, 691 | "Essential": true, 692 | "Image": { 693 | "Fn::Join": [ 694 | "", 695 | [ 696 | { 697 | "Ref": "AWS::AccountId" 698 | }, 699 | ".dkr.ecr.", 700 | { 701 | "Ref": "AWS::Region" 702 | }, 703 | ".", 704 | { 705 | "Ref": "AWS::URLSuffix" 706 | }, 707 | "/", 708 | { 709 | "Fn::Select": [ 710 | 0, 711 | { 712 | "Fn::Split": [ 713 | "@sha256:", 714 | { 715 | "Ref": "AssetParameters9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcbImageNameD328B1E2" 716 | } 717 | ] 718 | } 719 | ] 720 | }, 721 | "@sha256:", 722 | { 723 | "Fn::Select": [ 724 | 1, 725 | { 726 | "Fn::Split": [ 727 | "@sha256:", 728 | { 729 | "Ref": "AssetParameters9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcbImageNameD328B1E2" 730 | } 731 | ] 732 | } 733 | ] 734 | } 735 | ] 736 | ] 737 | }, 738 | "LogConfiguration": { 739 | "LogDriver": "awslogs", 740 | "Options": { 741 | "awslogs-group": { 742 | "Ref": "netcorecontainerdefinitionidLogGroupD97407CE" 743 | }, 744 | "awslogs-stream-prefix": "netcore-app-logs", 745 | "awslogs-region": { 746 | "Ref": "AWS::Region" 747 | } 748 | } 749 | }, 750 | "Memory": 512, 751 | "Name": "netcore-container-definition-id", 752 | "PortMappings": [ 753 | { 754 | "ContainerPort": 80, 755 | "Protocol": "tcp" 756 | } 757 | ] 758 | } 759 | ], 760 | "Cpu": "256", 761 | "ExecutionRoleArn": { 762 | "Fn::GetAtt": [ 763 | "netcoretaskdefinitionexecroleidnetcoretaskdefinitionexecroleidrole897DD9B1", 764 | "Arn" 765 | ] 766 | }, 767 | "Family": "netcore-taskdefinition", 768 | "Memory": "512", 769 | "NetworkMode": "awsvpc", 770 | "RequiresCompatibilities": [ 771 | "FARGATE" 772 | ], 773 | "Tags": [ 774 | { 775 | "Key": "Name", 776 | "Value": "netcore-cdk-app" 777 | } 778 | ], 779 | "TaskRoleArn": { 780 | "Fn::GetAtt": [ 781 | "netcoretaskdefinitiontaskroleidnetcoretaskdefinitiontaskroleidrole229DC336", 782 | "Arn" 783 | ] 784 | } 785 | }, 786 | "Metadata": { 787 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-definition-id/Resource" 788 | } 789 | }, 790 | "netcorecontainerdefinitionidAssetImageAdoptRepository80A5F73F": { 791 | "Type": "Custom::ECRAdoptedRepository", 792 | "Properties": { 793 | "ServiceToken": { 794 | "Fn::GetAtt": [ 795 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c52BE89E9", 796 | "Arn" 797 | ] 798 | }, 799 | "RepositoryName": { 800 | "Fn::Select": [ 801 | 0, 802 | { 803 | "Fn::Split": [ 804 | "@sha256:", 805 | { 806 | "Ref": "AssetParameters9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcbImageNameD328B1E2" 807 | } 808 | ] 809 | } 810 | ] 811 | } 812 | }, 813 | "DependsOn": [ 814 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C", 815 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17" 816 | ], 817 | "UpdateReplacePolicy": "Delete", 818 | "DeletionPolicy": "Delete", 819 | "Metadata": { 820 | "aws:cdk:path": "TodoInfraStack/netcore-container-definition-id/AssetImage/AdoptRepository/Resource/Default" 821 | } 822 | }, 823 | "netcorecontainerdefinitionidLogGroupD97407CE": { 824 | "Type": "AWS::Logs::LogGroup", 825 | "UpdateReplacePolicy": "Retain", 826 | "DeletionPolicy": "Retain", 827 | "Metadata": { 828 | "aws:cdk:path": "TodoInfraStack/netcore-container-definition-id/LogGroup/Resource" 829 | } 830 | }, 831 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17": { 832 | "Type": "AWS::IAM::Role", 833 | "Properties": { 834 | "AssumeRolePolicyDocument": { 835 | "Statement": [ 836 | { 837 | "Action": "sts:AssumeRole", 838 | "Effect": "Allow", 839 | "Principal": { 840 | "Service": "lambda.amazonaws.com" 841 | } 842 | } 843 | ], 844 | "Version": "2012-10-17" 845 | }, 846 | "ManagedPolicyArns": [ 847 | { 848 | "Fn::Join": [ 849 | "", 850 | [ 851 | "arn:", 852 | { 853 | "Ref": "AWS::Partition" 854 | }, 855 | ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" 856 | ] 857 | ] 858 | } 859 | ], 860 | "Tags": [ 861 | { 862 | "Key": "Name", 863 | "Value": "netcore-cdk-app" 864 | } 865 | ] 866 | }, 867 | "Metadata": { 868 | "aws:cdk:path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole/Resource" 869 | } 870 | }, 871 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C": { 872 | "Type": "AWS::IAM::Policy", 873 | "Properties": { 874 | "PolicyDocument": { 875 | "Statement": [ 876 | { 877 | "Action": [ 878 | "ecr:GetRepositoryPolicy", 879 | "ecr:SetRepositoryPolicy", 880 | "ecr:DeleteRepository", 881 | "ecr:ListImages", 882 | "ecr:BatchDeleteImage" 883 | ], 884 | "Effect": "Allow", 885 | "Resource": { 886 | "Fn::Join": [ 887 | "", 888 | [ 889 | "arn:", 890 | { 891 | "Ref": "AWS::Partition" 892 | }, 893 | ":ecr:", 894 | { 895 | "Ref": "AWS::Region" 896 | }, 897 | ":", 898 | { 899 | "Ref": "AWS::AccountId" 900 | }, 901 | ":repository/", 902 | { 903 | "Fn::Select": [ 904 | 0, 905 | { 906 | "Fn::Split": [ 907 | "@sha256:", 908 | { 909 | "Ref": "AssetParameters9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcbImageNameD328B1E2" 910 | } 911 | ] 912 | } 913 | ] 914 | } 915 | ] 916 | ] 917 | } 918 | } 919 | ], 920 | "Version": "2012-10-17" 921 | }, 922 | "PolicyName": "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C", 923 | "Roles": [ 924 | { 925 | "Ref": "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17" 926 | } 927 | ] 928 | }, 929 | "Metadata": { 930 | "aws:cdk:path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole/DefaultPolicy/Resource" 931 | } 932 | }, 933 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c52BE89E9": { 934 | "Type": "AWS::Lambda::Function", 935 | "Properties": { 936 | "Code": { 937 | "S3Bucket": { 938 | "Ref": "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7S3Bucket7CBBD48C" 939 | }, 940 | "S3Key": { 941 | "Fn::Join": [ 942 | "", 943 | [ 944 | { 945 | "Fn::Select": [ 946 | 0, 947 | { 948 | "Fn::Split": [ 949 | "||", 950 | { 951 | "Ref": "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7S3VersionKey87E3D057" 952 | } 953 | ] 954 | } 955 | ] 956 | }, 957 | { 958 | "Fn::Select": [ 959 | 1, 960 | { 961 | "Fn::Split": [ 962 | "||", 963 | { 964 | "Ref": "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7S3VersionKey87E3D057" 965 | } 966 | ] 967 | } 968 | ] 969 | } 970 | ] 971 | ] 972 | } 973 | }, 974 | "Handler": "handler.handler", 975 | "Role": { 976 | "Fn::GetAtt": [ 977 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17", 978 | "Arn" 979 | ] 980 | }, 981 | "Runtime": "nodejs10.x", 982 | "Tags": [ 983 | { 984 | "Key": "Name", 985 | "Value": "netcore-cdk-app" 986 | } 987 | ], 988 | "Timeout": 300 989 | }, 990 | "DependsOn": [ 991 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleDefaultPolicy6BC8737C", 992 | "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62cServiceRoleD788AA17" 993 | ], 994 | "Metadata": { 995 | "aws:cdk:path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/Resource", 996 | "aws:asset:path": "asset.a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7", 997 | "aws:asset:property": "Code" 998 | } 999 | }, 1000 | "netcoreecsserviceidLBFB29F4A3": { 1001 | "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", 1002 | "Properties": { 1003 | "Scheme": "internet-facing", 1004 | "SecurityGroups": [ 1005 | { 1006 | "Fn::GetAtt": [ 1007 | "netcoreecsserviceidLBSecurityGroup30B61BDC", 1008 | "GroupId" 1009 | ] 1010 | } 1011 | ], 1012 | "Subnets": [ 1013 | { 1014 | "Ref": "netcoreapivpcPublicSubnet1SubnetB51A3C53" 1015 | }, 1016 | { 1017 | "Ref": "netcoreapivpcPublicSubnet2Subnet6A0DFF78" 1018 | } 1019 | ], 1020 | "Tags": [ 1021 | { 1022 | "Key": "Name", 1023 | "Value": "netcore-cdk-app" 1024 | } 1025 | ], 1026 | "Type": "application" 1027 | }, 1028 | "DependsOn": [ 1029 | "netcoreapivpcPublicSubnet1DefaultRoute68A2BA90", 1030 | "netcoreapivpcPublicSubnet2DefaultRouteF9E77C45" 1031 | ], 1032 | "Metadata": { 1033 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/LB/Resource" 1034 | } 1035 | }, 1036 | "netcoreecsserviceidLBSecurityGroup30B61BDC": { 1037 | "Type": "AWS::EC2::SecurityGroup", 1038 | "Properties": { 1039 | "GroupDescription": "Automatically created Security Group for ELB TodoInfraStacknetcoreecsserviceidLBEB9E4F0E", 1040 | "SecurityGroupIngress": [ 1041 | { 1042 | "CidrIp": "0.0.0.0/0", 1043 | "Description": "Allow from anyone on port 80", 1044 | "FromPort": 80, 1045 | "IpProtocol": "tcp", 1046 | "ToPort": 80 1047 | } 1048 | ], 1049 | "Tags": [ 1050 | { 1051 | "Key": "Name", 1052 | "Value": "netcore-cdk-app" 1053 | } 1054 | ], 1055 | "VpcId": { 1056 | "Ref": "netcoreapivpc96E2D1AB" 1057 | } 1058 | }, 1059 | "Metadata": { 1060 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/LB/SecurityGroup/Resource" 1061 | } 1062 | }, 1063 | "netcoreecsserviceidLBSecurityGrouptoTodoInfraStacknetcoreecsserviceidServiceSecurityGroup5480329B80D81312DF": { 1064 | "Type": "AWS::EC2::SecurityGroupEgress", 1065 | "Properties": { 1066 | "GroupId": { 1067 | "Fn::GetAtt": [ 1068 | "netcoreecsserviceidLBSecurityGroup30B61BDC", 1069 | "GroupId" 1070 | ] 1071 | }, 1072 | "IpProtocol": "tcp", 1073 | "Description": "Load balancer to target", 1074 | "DestinationSecurityGroupId": { 1075 | "Fn::GetAtt": [ 1076 | "netcoreecsserviceidServiceSecurityGroup7B4FAA89", 1077 | "GroupId" 1078 | ] 1079 | }, 1080 | "FromPort": 80, 1081 | "ToPort": 80 1082 | }, 1083 | "Metadata": { 1084 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/LB/SecurityGroup/to TodoInfraStacknetcoreecsserviceidServiceSecurityGroup5480329B:80" 1085 | } 1086 | }, 1087 | "netcoreecsserviceidLBPublicListener16BCE565": { 1088 | "Type": "AWS::ElasticLoadBalancingV2::Listener", 1089 | "Properties": { 1090 | "DefaultActions": [ 1091 | { 1092 | "TargetGroupArn": { 1093 | "Ref": "netcoreecsserviceidLBPublicListenerECSGroupCA86918C" 1094 | }, 1095 | "Type": "forward" 1096 | } 1097 | ], 1098 | "LoadBalancerArn": { 1099 | "Ref": "netcoreecsserviceidLBFB29F4A3" 1100 | }, 1101 | "Port": 80, 1102 | "Protocol": "HTTP" 1103 | }, 1104 | "Metadata": { 1105 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener/Resource" 1106 | } 1107 | }, 1108 | "netcoreecsserviceidLBPublicListenerECSGroupCA86918C": { 1109 | "Type": "AWS::ElasticLoadBalancingV2::TargetGroup", 1110 | "Properties": { 1111 | "Port": 80, 1112 | "Protocol": "HTTP", 1113 | "Tags": [ 1114 | { 1115 | "Key": "Name", 1116 | "Value": "netcore-cdk-app" 1117 | } 1118 | ], 1119 | "TargetType": "ip", 1120 | "VpcId": { 1121 | "Ref": "netcoreapivpc96E2D1AB" 1122 | } 1123 | }, 1124 | "Metadata": { 1125 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener/ECSGroup/Resource" 1126 | } 1127 | }, 1128 | "netcoreecsserviceidService0D7C17EB": { 1129 | "Type": "AWS::ECS::Service", 1130 | "Properties": { 1131 | "TaskDefinition": { 1132 | "Ref": "netcoreecsdefinitionid50E1B9C5" 1133 | }, 1134 | "Cluster": { 1135 | "Ref": "netcoreecsclusterCB5C3F5B" 1136 | }, 1137 | "DeploymentConfiguration": { 1138 | "MaximumPercent": 200, 1139 | "MinimumHealthyPercent": 50 1140 | }, 1141 | "DesiredCount": 1, 1142 | "EnableECSManagedTags": false, 1143 | "HealthCheckGracePeriodSeconds": 60, 1144 | "LaunchType": "FARGATE", 1145 | "LoadBalancers": [ 1146 | { 1147 | "ContainerName": "netcore-container-definition-id", 1148 | "ContainerPort": 80, 1149 | "TargetGroupArn": { 1150 | "Ref": "netcoreecsserviceidLBPublicListenerECSGroupCA86918C" 1151 | } 1152 | } 1153 | ], 1154 | "NetworkConfiguration": { 1155 | "AwsvpcConfiguration": { 1156 | "AssignPublicIp": "DISABLED", 1157 | "SecurityGroups": [ 1158 | { 1159 | "Fn::GetAtt": [ 1160 | "netcoreecsserviceidServiceSecurityGroup7B4FAA89", 1161 | "GroupId" 1162 | ] 1163 | } 1164 | ], 1165 | "Subnets": [ 1166 | { 1167 | "Ref": "netcoreapivpcPrivateSubnet1Subnet7F795326" 1168 | }, 1169 | { 1170 | "Ref": "netcoreapivpcPrivateSubnet2Subnet7EC38565" 1171 | } 1172 | ] 1173 | } 1174 | }, 1175 | "ServiceName": "netcore-ecs-service", 1176 | "Tags": [ 1177 | { 1178 | "Key": "Name", 1179 | "Value": "netcore-cdk-app" 1180 | } 1181 | ] 1182 | }, 1183 | "DependsOn": [ 1184 | "netcoreecsserviceidLBPublicListenerECSGroupCA86918C", 1185 | "netcoreecsserviceidLBPublicListener16BCE565" 1186 | ], 1187 | "Metadata": { 1188 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/Service/Service" 1189 | } 1190 | }, 1191 | "netcoreecsserviceidServiceSecurityGroup7B4FAA89": { 1192 | "Type": "AWS::EC2::SecurityGroup", 1193 | "Properties": { 1194 | "GroupDescription": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup", 1195 | "SecurityGroupEgress": [ 1196 | { 1197 | "CidrIp": "0.0.0.0/0", 1198 | "Description": "Allow all outbound traffic by default", 1199 | "IpProtocol": "-1" 1200 | } 1201 | ], 1202 | "Tags": [ 1203 | { 1204 | "Key": "Name", 1205 | "Value": "netcore-cdk-app" 1206 | } 1207 | ], 1208 | "VpcId": { 1209 | "Ref": "netcoreapivpc96E2D1AB" 1210 | } 1211 | }, 1212 | "Metadata": { 1213 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup/Resource" 1214 | } 1215 | }, 1216 | "netcoreecsserviceidServiceSecurityGroupfromTodoInfraStacknetcoreecsserviceidLBSecurityGroup3CB6898D8072168EF7": { 1217 | "Type": "AWS::EC2::SecurityGroupIngress", 1218 | "Properties": { 1219 | "IpProtocol": "tcp", 1220 | "Description": "Load balancer to target", 1221 | "FromPort": 80, 1222 | "GroupId": { 1223 | "Fn::GetAtt": [ 1224 | "netcoreecsserviceidServiceSecurityGroup7B4FAA89", 1225 | "GroupId" 1226 | ] 1227 | }, 1228 | "SourceSecurityGroupId": { 1229 | "Fn::GetAtt": [ 1230 | "netcoreecsserviceidLBSecurityGroup30B61BDC", 1231 | "GroupId" 1232 | ] 1233 | }, 1234 | "ToPort": 80 1235 | }, 1236 | "Metadata": { 1237 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup/from TodoInfraStacknetcoreecsserviceidLBSecurityGroup3CB6898D:80" 1238 | } 1239 | }, 1240 | "netcoreecsserviceidServiceTaskCountTargetA1922E33": { 1241 | "Type": "AWS::ApplicationAutoScaling::ScalableTarget", 1242 | "Properties": { 1243 | "MaxCapacity": 2, 1244 | "MinCapacity": 1, 1245 | "ResourceId": { 1246 | "Fn::Join": [ 1247 | "", 1248 | [ 1249 | "service/", 1250 | { 1251 | "Ref": "netcoreecsclusterCB5C3F5B" 1252 | }, 1253 | "/", 1254 | { 1255 | "Fn::GetAtt": [ 1256 | "netcoreecsserviceidService0D7C17EB", 1257 | "Name" 1258 | ] 1259 | } 1260 | ] 1261 | ] 1262 | }, 1263 | "RoleARN": { 1264 | "Fn::Join": [ 1265 | "", 1266 | [ 1267 | "arn:", 1268 | { 1269 | "Ref": "AWS::Partition" 1270 | }, 1271 | ":iam::", 1272 | { 1273 | "Ref": "AWS::AccountId" 1274 | }, 1275 | ":role/aws-service-role/ecs.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_ECSService" 1276 | ] 1277 | ] 1278 | }, 1279 | "ScalableDimension": "ecs:service:DesiredCount", 1280 | "ServiceNamespace": "ecs" 1281 | }, 1282 | "Metadata": { 1283 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target/Resource" 1284 | } 1285 | }, 1286 | "netcoreecsserviceidServiceTaskCountTargetscaleoncpuidB009736B": { 1287 | "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", 1288 | "Properties": { 1289 | "PolicyName": "TodoInfraStacknetcoreecsserviceidServiceTaskCountTargetscaleoncpuidBBF4F4A7", 1290 | "PolicyType": "TargetTrackingScaling", 1291 | "ScalingTargetId": { 1292 | "Ref": "netcoreecsserviceidServiceTaskCountTargetA1922E33" 1293 | }, 1294 | "TargetTrackingScalingPolicyConfiguration": { 1295 | "PredefinedMetricSpecification": { 1296 | "PredefinedMetricType": "ECSServiceAverageCPUUtilization" 1297 | }, 1298 | "ScaleInCooldown": 60, 1299 | "ScaleOutCooldown": 60, 1300 | "TargetValue": 50 1301 | } 1302 | }, 1303 | "Metadata": { 1304 | "aws:cdk:path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target/scale_on_cpu_id/Resource" 1305 | } 1306 | }, 1307 | "netcoresubnetid": { 1308 | "Type": "AWS::RDS::DBSubnetGroup", 1309 | "Properties": { 1310 | "DBSubnetGroupDescription": "netcore-subnet-desc", 1311 | "SubnetIds": [ 1312 | { 1313 | "Ref": "netcoreapivpcPrivateSubnet1Subnet7F795326" 1314 | }, 1315 | { 1316 | "Ref": "netcoreapivpcPrivateSubnet2Subnet7EC38565" 1317 | } 1318 | ], 1319 | "DBSubnetGroupName": "netcore-subnet-grp", 1320 | "Tags": [ 1321 | { 1322 | "Key": "Name", 1323 | "Value": "netcore-cdk-app" 1324 | } 1325 | ] 1326 | }, 1327 | "Metadata": { 1328 | "aws:cdk:path": "TodoInfraStack/netcore-subnet-id" 1329 | } 1330 | }, 1331 | "cfndbsg": { 1332 | "Type": "AWS::EC2::SecurityGroup", 1333 | "Properties": { 1334 | "GroupDescription": "Access to the RDS", 1335 | "GroupName": "netcore-cdk-app-ecs-db-sg", 1336 | "Tags": [ 1337 | { 1338 | "Key": "Name", 1339 | "Value": "netcore-cdk-app" 1340 | } 1341 | ], 1342 | "VpcId": { 1343 | "Ref": "netcoreapivpc96E2D1AB" 1344 | } 1345 | }, 1346 | "Metadata": { 1347 | "aws:cdk:path": "TodoInfraStack/cfn-db-sg" 1348 | } 1349 | }, 1350 | "cfndbsgingress": { 1351 | "Type": "AWS::EC2::SecurityGroupIngress", 1352 | "Properties": { 1353 | "IpProtocol": "tcp", 1354 | "Description": "Ingress 3306", 1355 | "FromPort": 3306, 1356 | "GroupId": { 1357 | "Fn::GetAtt": [ 1358 | "cfndbsg", 1359 | "GroupId" 1360 | ] 1361 | }, 1362 | "SourceSecurityGroupId": { 1363 | "Fn::GetAtt": [ 1364 | "netcoreecsserviceidServiceSecurityGroup7B4FAA89", 1365 | "GroupId" 1366 | ] 1367 | }, 1368 | "ToPort": 3306 1369 | }, 1370 | "Metadata": { 1371 | "aws:cdk:path": "TodoInfraStack/cfn-db-sg-ingress" 1372 | } 1373 | }, 1374 | "netcoreauroradatabase": { 1375 | "Type": "AWS::RDS::DBCluster", 1376 | "Properties": { 1377 | "Engine": "aurora", 1378 | "DatabaseName": "todo", 1379 | "DBSubnetGroupName": "netcore-subnet-grp", 1380 | "EngineMode": "serverless", 1381 | "MasterUsername": "master", 1382 | "MasterUserPassword": "netc0re123", 1383 | "Port": 3306, 1384 | "Tags": [ 1385 | { 1386 | "Key": "Name", 1387 | "Value": "netcore-cdk-app" 1388 | } 1389 | ], 1390 | "VpcSecurityGroupIds": [ 1391 | { 1392 | "Fn::GetAtt": [ 1393 | "cfndbsg", 1394 | "GroupId" 1395 | ] 1396 | } 1397 | ] 1398 | }, 1399 | "DependsOn": [ 1400 | "netcoresubnetid" 1401 | ], 1402 | "Metadata": { 1403 | "aws:cdk:path": "TodoInfraStack/netcore-aurora-database" 1404 | } 1405 | }, 1406 | "netcoreimagerepodbconnstringid": { 1407 | "Type": "AWS::SSM::Parameter", 1408 | "Properties": { 1409 | "Type": "String", 1410 | "Value": { 1411 | "Fn::Join": [ 1412 | "", 1413 | [ 1414 | "server=", 1415 | { 1416 | "Fn::GetAtt": [ 1417 | "netcoreauroradatabase", 1418 | "Endpoint.Address" 1419 | ] 1420 | }, 1421 | ";port=3306;database=todo;user=master;password=netc0re123" 1422 | ] 1423 | ] 1424 | }, 1425 | "Description": "Maintains the Aurora Database Connection String", 1426 | "Name": "/Database/Config/AuroraConnectionString", 1427 | "Tags": { 1428 | "Name": "netcore-cdk-app" 1429 | } 1430 | }, 1431 | "DependsOn": [ 1432 | "netcoreauroradatabase" 1433 | ], 1434 | "Metadata": { 1435 | "aws:cdk:path": "TodoInfraStack/netcore-image-repo-db-conn-string-id" 1436 | } 1437 | } 1438 | }, 1439 | "Parameters": { 1440 | "AssetParameters9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcbImageNameD328B1E2": { 1441 | "Type": "String", 1442 | "Description": "ECR repository name and tag for asset \"9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcb\"" 1443 | }, 1444 | "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7S3Bucket7CBBD48C": { 1445 | "Type": "String", 1446 | "Description": "S3 bucket for asset \"a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7\"" 1447 | }, 1448 | "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7S3VersionKey87E3D057": { 1449 | "Type": "String", 1450 | "Description": "S3 key for asset version \"a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7\"" 1451 | }, 1452 | "AssetParametersa65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7ArtifactHash3E217B68": { 1453 | "Type": "String", 1454 | "Description": "Artifact hash for asset \"a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7\"" 1455 | } 1456 | }, 1457 | "Outputs": { 1458 | "netcoreecsserviceidLoadBalancerDNS15BDF84A": { 1459 | "Value": { 1460 | "Fn::GetAtt": [ 1461 | "netcoreecsserviceidLBFB29F4A3", 1462 | "DNSName" 1463 | ] 1464 | } 1465 | }, 1466 | "netcoreecsserviceidServiceURLF1D5D5BD": { 1467 | "Value": { 1468 | "Fn::Join": [ 1469 | "", 1470 | [ 1471 | "http://", 1472 | { 1473 | "Fn::GetAtt": [ 1474 | "netcoreecsserviceidLBFB29F4A3", 1475 | "DNSName" 1476 | ] 1477 | } 1478 | ] 1479 | ] 1480 | } 1481 | }, 1482 | "LoadBalancerDNS": { 1483 | "Value": { 1484 | "Fn::GetAtt": [ 1485 | "netcoreecsserviceidLBFB29F4A3", 1486 | "DNSName" 1487 | ] 1488 | } 1489 | }, 1490 | "apivalues": { 1491 | "Value": { 1492 | "Fn::Join": [ 1493 | "", 1494 | [ 1495 | "http://", 1496 | { 1497 | "Fn::GetAtt": [ 1498 | "netcoreecsserviceidLBFB29F4A3", 1499 | "DNSName" 1500 | ] 1501 | }, 1502 | "/api/values" 1503 | ] 1504 | ] 1505 | } 1506 | }, 1507 | "apitodo": { 1508 | "Value": { 1509 | "Fn::Join": [ 1510 | "", 1511 | [ 1512 | "http://", 1513 | { 1514 | "Fn::GetAtt": [ 1515 | "netcoreecsserviceidLBFB29F4A3", 1516 | "DNSName" 1517 | ] 1518 | }, 1519 | "/api/todo" 1520 | ] 1521 | ] 1522 | } 1523 | } 1524 | } 1525 | } 1526 | -------------------------------------------------------------------------------- /cdk/cdk.out/cdk.out: -------------------------------------------------------------------------------- 1 | {"version":"1.10.0"} -------------------------------------------------------------------------------- /cdk/cdk.out/tree.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "tree-0.1", 3 | "tree": { 4 | "id": "App", 5 | "path": "", 6 | "children": [ 7 | { 8 | "id": "Tree", 9 | "path": "Tree" 10 | }, 11 | { 12 | "id": "TodoInfraStack", 13 | "path": "TodoInfraStack", 14 | "children": [ 15 | { 16 | "id": "netcore-api-vpc", 17 | "path": "TodoInfraStack/netcore-api-vpc", 18 | "children": [ 19 | { 20 | "id": "Resource", 21 | "path": "TodoInfraStack/netcore-api-vpc/Resource" 22 | }, 23 | { 24 | "id": "PublicSubnet1", 25 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1", 26 | "children": [ 27 | { 28 | "id": "Subnet", 29 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/Subnet" 30 | }, 31 | { 32 | "id": "Acl", 33 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/Acl" 34 | }, 35 | { 36 | "id": "RouteTable", 37 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/RouteTable" 38 | }, 39 | { 40 | "id": "RouteTableAssociation", 41 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/RouteTableAssociation" 42 | }, 43 | { 44 | "id": "DefaultRoute", 45 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/DefaultRoute" 46 | }, 47 | { 48 | "id": "EIP", 49 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/EIP" 50 | }, 51 | { 52 | "id": "NATGateway", 53 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet1/NATGateway" 54 | } 55 | ] 56 | }, 57 | { 58 | "id": "PublicSubnet2", 59 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2", 60 | "children": [ 61 | { 62 | "id": "Subnet", 63 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/Subnet" 64 | }, 65 | { 66 | "id": "Acl", 67 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/Acl" 68 | }, 69 | { 70 | "id": "RouteTable", 71 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/RouteTable" 72 | }, 73 | { 74 | "id": "RouteTableAssociation", 75 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/RouteTableAssociation" 76 | }, 77 | { 78 | "id": "DefaultRoute", 79 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/DefaultRoute" 80 | }, 81 | { 82 | "id": "EIP", 83 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/EIP" 84 | }, 85 | { 86 | "id": "NATGateway", 87 | "path": "TodoInfraStack/netcore-api-vpc/PublicSubnet2/NATGateway" 88 | } 89 | ] 90 | }, 91 | { 92 | "id": "PrivateSubnet1", 93 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1", 94 | "children": [ 95 | { 96 | "id": "Subnet", 97 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/Subnet" 98 | }, 99 | { 100 | "id": "Acl", 101 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/Acl" 102 | }, 103 | { 104 | "id": "RouteTable", 105 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/RouteTable" 106 | }, 107 | { 108 | "id": "RouteTableAssociation", 109 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/RouteTableAssociation" 110 | }, 111 | { 112 | "id": "DefaultRoute", 113 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet1/DefaultRoute" 114 | } 115 | ] 116 | }, 117 | { 118 | "id": "PrivateSubnet2", 119 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2", 120 | "children": [ 121 | { 122 | "id": "Subnet", 123 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/Subnet" 124 | }, 125 | { 126 | "id": "Acl", 127 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/Acl" 128 | }, 129 | { 130 | "id": "RouteTable", 131 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/RouteTable" 132 | }, 133 | { 134 | "id": "RouteTableAssociation", 135 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/RouteTableAssociation" 136 | }, 137 | { 138 | "id": "DefaultRoute", 139 | "path": "TodoInfraStack/netcore-api-vpc/PrivateSubnet2/DefaultRoute" 140 | } 141 | ] 142 | }, 143 | { 144 | "id": "IGW", 145 | "path": "TodoInfraStack/netcore-api-vpc/IGW" 146 | }, 147 | { 148 | "id": "VPCGW", 149 | "path": "TodoInfraStack/netcore-api-vpc/VPCGW" 150 | } 151 | ] 152 | }, 153 | { 154 | "id": "netcore-ecs-cluster", 155 | "path": "TodoInfraStack/netcore-ecs-cluster", 156 | "children": [ 157 | { 158 | "id": "Resource", 159 | "path": "TodoInfraStack/netcore-ecs-cluster/Resource" 160 | } 161 | ] 162 | }, 163 | { 164 | "id": "netcore-task-definition-exec-role-id", 165 | "path": "TodoInfraStack/netcore-task-definition-exec-role-id", 166 | "children": [ 167 | { 168 | "id": "netcore-task-definition-exec-role-id-role", 169 | "path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role", 170 | "children": [ 171 | { 172 | "id": "Resource", 173 | "path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role/Resource" 174 | }, 175 | { 176 | "id": "DefaultPolicy", 177 | "path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role/DefaultPolicy", 178 | "children": [ 179 | { 180 | "id": "Resource", 181 | "path": "TodoInfraStack/netcore-task-definition-exec-role-id/netcore-task-definition-exec-role-id-role/DefaultPolicy/Resource" 182 | } 183 | ] 184 | } 185 | ] 186 | } 187 | ] 188 | }, 189 | { 190 | "id": "netcore-task-definition-task-role-id", 191 | "path": "TodoInfraStack/netcore-task-definition-task-role-id", 192 | "children": [ 193 | { 194 | "id": "netcore-task-definition-task-role-id-role", 195 | "path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role", 196 | "children": [ 197 | { 198 | "id": "Resource", 199 | "path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role/Resource" 200 | }, 201 | { 202 | "id": "DefaultPolicy", 203 | "path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role/DefaultPolicy", 204 | "children": [ 205 | { 206 | "id": "Resource", 207 | "path": "TodoInfraStack/netcore-task-definition-task-role-id/netcore-task-definition-task-role-id-role/DefaultPolicy/Resource" 208 | } 209 | ] 210 | } 211 | ] 212 | } 213 | ] 214 | }, 215 | { 216 | "id": "netcore-ecs-definition-id", 217 | "path": "TodoInfraStack/netcore-ecs-definition-id", 218 | "children": [ 219 | { 220 | "id": "Resource", 221 | "path": "TodoInfraStack/netcore-ecs-definition-id/Resource" 222 | } 223 | ] 224 | }, 225 | { 226 | "id": "netcore-container-definition-id", 227 | "path": "TodoInfraStack/netcore-container-definition-id", 228 | "children": [ 229 | { 230 | "id": "AssetImage", 231 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage", 232 | "children": [ 233 | { 234 | "id": "Staging", 235 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage/Staging" 236 | }, 237 | { 238 | "id": "AdoptRepository", 239 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage/AdoptRepository", 240 | "children": [ 241 | { 242 | "id": "Function", 243 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage/AdoptRepository/Function" 244 | }, 245 | { 246 | "id": "Resource", 247 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage/AdoptRepository/Resource", 248 | "children": [ 249 | { 250 | "id": "Default", 251 | "path": "TodoInfraStack/netcore-container-definition-id/AssetImage/AdoptRepository/Resource/Default" 252 | } 253 | ] 254 | } 255 | ] 256 | } 257 | ] 258 | }, 259 | { 260 | "id": "LogGroup", 261 | "path": "TodoInfraStack/netcore-container-definition-id/LogGroup", 262 | "children": [ 263 | { 264 | "id": "Resource", 265 | "path": "TodoInfraStack/netcore-container-definition-id/LogGroup/Resource" 266 | } 267 | ] 268 | } 269 | ] 270 | }, 271 | { 272 | "id": "AssetParameters", 273 | "path": "TodoInfraStack/AssetParameters", 274 | "children": [ 275 | { 276 | "id": "9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcb", 277 | "path": "TodoInfraStack/AssetParameters/9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcb", 278 | "children": [ 279 | { 280 | "id": "ImageName", 281 | "path": "TodoInfraStack/AssetParameters/9a609948af623081ea981b32a6ffb95c3103826706fafd31ab627e624c5f7bcb/ImageName" 282 | } 283 | ] 284 | }, 285 | { 286 | "id": "a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7", 287 | "path": "TodoInfraStack/AssetParameters/a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7", 288 | "children": [ 289 | { 290 | "id": "S3Bucket", 291 | "path": "TodoInfraStack/AssetParameters/a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7/S3Bucket" 292 | }, 293 | { 294 | "id": "S3VersionKey", 295 | "path": "TodoInfraStack/AssetParameters/a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7/S3VersionKey" 296 | }, 297 | { 298 | "id": "ArtifactHash", 299 | "path": "TodoInfraStack/AssetParameters/a65ac4beaa2b5a7b20eebf3b7c5c1c886b71428afa377e02dab0d10ab3be57e7/ArtifactHash" 300 | } 301 | ] 302 | } 303 | ] 304 | }, 305 | { 306 | "id": "AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c", 307 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c", 308 | "children": [ 309 | { 310 | "id": "ServiceRole", 311 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole", 312 | "children": [ 313 | { 314 | "id": "Resource", 315 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole/Resource" 316 | }, 317 | { 318 | "id": "DefaultPolicy", 319 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole/DefaultPolicy", 320 | "children": [ 321 | { 322 | "id": "Resource", 323 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/ServiceRole/DefaultPolicy/Resource" 324 | } 325 | ] 326 | } 327 | ] 328 | }, 329 | { 330 | "id": "Code", 331 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/Code", 332 | "children": [ 333 | { 334 | "id": "Stage", 335 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/Code/Stage" 336 | }, 337 | { 338 | "id": "AssetBucket", 339 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/Code/AssetBucket" 340 | } 341 | ] 342 | }, 343 | { 344 | "id": "Resource", 345 | "path": "TodoInfraStack/AdoptEcrRepositorydbc60defc59544bcaa5c28c95d68f62c/Resource" 346 | } 347 | ] 348 | }, 349 | { 350 | "id": "netcore-ecs-service-id", 351 | "path": "TodoInfraStack/netcore-ecs-service-id", 352 | "children": [ 353 | { 354 | "id": "LB", 355 | "path": "TodoInfraStack/netcore-ecs-service-id/LB", 356 | "children": [ 357 | { 358 | "id": "Resource", 359 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/Resource" 360 | }, 361 | { 362 | "id": "SecurityGroup", 363 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/SecurityGroup", 364 | "children": [ 365 | { 366 | "id": "Resource", 367 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/SecurityGroup/Resource" 368 | }, 369 | { 370 | "id": "to TodoInfraStacknetcoreecsserviceidServiceSecurityGroup5480329B:80", 371 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/SecurityGroup/to TodoInfraStacknetcoreecsserviceidServiceSecurityGroup5480329B:80" 372 | } 373 | ] 374 | }, 375 | { 376 | "id": "PublicListener", 377 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener", 378 | "children": [ 379 | { 380 | "id": "Resource", 381 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener/Resource" 382 | }, 383 | { 384 | "id": "ECSGroup", 385 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener/ECSGroup", 386 | "children": [ 387 | { 388 | "id": "Resource", 389 | "path": "TodoInfraStack/netcore-ecs-service-id/LB/PublicListener/ECSGroup/Resource" 390 | } 391 | ] 392 | } 393 | ] 394 | } 395 | ] 396 | }, 397 | { 398 | "id": "LoadBalancerDNS", 399 | "path": "TodoInfraStack/netcore-ecs-service-id/LoadBalancerDNS" 400 | }, 401 | { 402 | "id": "ServiceURL", 403 | "path": "TodoInfraStack/netcore-ecs-service-id/ServiceURL" 404 | }, 405 | { 406 | "id": "Service", 407 | "path": "TodoInfraStack/netcore-ecs-service-id/Service", 408 | "children": [ 409 | { 410 | "id": "Service", 411 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/Service" 412 | }, 413 | { 414 | "id": "SecurityGroup", 415 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup", 416 | "children": [ 417 | { 418 | "id": "Resource", 419 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup/Resource" 420 | }, 421 | { 422 | "id": "from TodoInfraStacknetcoreecsserviceidLBSecurityGroup3CB6898D:80", 423 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/SecurityGroup/from TodoInfraStacknetcoreecsserviceidLBSecurityGroup3CB6898D:80" 424 | } 425 | ] 426 | }, 427 | { 428 | "id": "ScalingRole", 429 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/ScalingRole" 430 | }, 431 | { 432 | "id": "TaskCount", 433 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount", 434 | "children": [ 435 | { 436 | "id": "Target", 437 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target", 438 | "children": [ 439 | { 440 | "id": "Resource", 441 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target/Resource" 442 | }, 443 | { 444 | "id": "scale_on_cpu_id", 445 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target/scale_on_cpu_id", 446 | "children": [ 447 | { 448 | "id": "Resource", 449 | "path": "TodoInfraStack/netcore-ecs-service-id/Service/TaskCount/Target/scale_on_cpu_id/Resource" 450 | } 451 | ] 452 | } 453 | ] 454 | } 455 | ] 456 | } 457 | ] 458 | } 459 | ] 460 | }, 461 | { 462 | "id": "LoadBalancerDNS", 463 | "path": "TodoInfraStack/LoadBalancerDNS" 464 | }, 465 | { 466 | "id": "api_values", 467 | "path": "TodoInfraStack/api_values" 468 | }, 469 | { 470 | "id": "api_todo", 471 | "path": "TodoInfraStack/api_todo" 472 | }, 473 | { 474 | "id": "netcore-subnet-id", 475 | "path": "TodoInfraStack/netcore-subnet-id" 476 | }, 477 | { 478 | "id": "cfn-db-sg", 479 | "path": "TodoInfraStack/cfn-db-sg" 480 | }, 481 | { 482 | "id": "cfn-db-sg-ingress", 483 | "path": "TodoInfraStack/cfn-db-sg-ingress" 484 | }, 485 | { 486 | "id": "netcore-aurora-database", 487 | "path": "TodoInfraStack/netcore-aurora-database" 488 | }, 489 | { 490 | "id": "netcore-image-repo-db-conn-string-id", 491 | "path": "TodoInfraStack/netcore-image-repo-db-conn-string-id" 492 | } 493 | ] 494 | } 495 | ] 496 | } 497 | } -------------------------------------------------------------------------------- /cdk/config/buildspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.2 2 | 3 | phases: 4 | install: 5 | runtime-versions: 6 | dotnet: 2.2 7 | pre_build: 8 | commands: 9 | - aws --version 10 | # Cloudformation will set this application environment variables for CodeBuild 11 | # REPOSITORY_URI=.dkr.ecr..amazonaws.com/todo-repository 12 | # AWS_DEFAULT_REGION=region ex: us-east-1 13 | - echo 'region - ' - $AWS_DEFAULT_REGION 14 | - echo 'repository - ' $REPOSITORY_URI 15 | - cd webapi/ 16 | - echo Logging in to Amazon ECR 17 | - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) 18 | build: 19 | commands: 20 | - echo Build started on `date` 21 | - echo Building the Docker image... 22 | - docker build -t $REPOSITORY_URI:latest . 23 | - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:latest 24 | post_build: 25 | commands: 26 | - echo Build completed on `date` 27 | - echo Push the latest Docker Image... 28 | - docker push $REPOSITORY_URI:latest -------------------------------------------------------------------------------- /cdk/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | dotnet build src 4 | cdk bootstrap 5 | cdk deploy --require-approval never -------------------------------------------------------------------------------- /cdk/src/Todo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26124.0 5 | MinimumVisualStudioVersion = 15.0.26124.0 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo", "Todo\Todo.csproj", "{9A419585-2151-4527-B168-681840CFB915}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|Any CPU = Release|Any CPU 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 21 | {9A419585-2151-4527-B168-681840CFB915}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 22 | {9A419585-2151-4527-B168-681840CFB915}.Debug|Any CPU.Build.0 = Debug|Any CPU 23 | {9A419585-2151-4527-B168-681840CFB915}.Debug|x64.ActiveCfg = Debug|Any CPU 24 | {9A419585-2151-4527-B168-681840CFB915}.Debug|x64.Build.0 = Debug|Any CPU 25 | {9A419585-2151-4527-B168-681840CFB915}.Debug|x86.ActiveCfg = Debug|Any CPU 26 | {9A419585-2151-4527-B168-681840CFB915}.Debug|x86.Build.0 = Debug|Any CPU 27 | {9A419585-2151-4527-B168-681840CFB915}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {9A419585-2151-4527-B168-681840CFB915}.Release|Any CPU.Build.0 = Release|Any CPU 29 | {9A419585-2151-4527-B168-681840CFB915}.Release|x64.ActiveCfg = Release|Any CPU 30 | {9A419585-2151-4527-B168-681840CFB915}.Release|x64.Build.0 = Release|Any CPU 31 | {9A419585-2151-4527-B168-681840CFB915}.Release|x86.ActiveCfg = Release|Any CPU 32 | {9A419585-2151-4527-B168-681840CFB915}.Release|x86.Build.0 = Release|Any CPU 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /cdk/src/Todo/Constants.cs: -------------------------------------------------------------------------------- 1 | namespace Todo 2 | { 3 | public static class Constants 4 | { 5 | public static string STACK_PREFIX = "netcore-"; 6 | public static string APP_NAME = STACK_PREFIX + "cdk-app"; 7 | public static string VPC_NAME = STACK_PREFIX+ "api-vpc"; 8 | public static string CIDR_RANGE = "10.0.0.0/16"; 9 | public static string ECS_ID = STACK_PREFIX+ "ecs-cluster"; 10 | public static string ECS_CLUSTER_NAME = STACK_PREFIX+ "cluster"; 11 | public static string TASK_DEFINITION_ID = STACK_PREFIX+ "ecs-definition-id"; 12 | public static string CODE_TASK_DEFINITION_EXECUTION_ROLE_ID = STACK_PREFIX+ "task-definition-exec-role-id"; 13 | public static string CODE_TASK_DEFINITION_TASK_POLICY_NAME = "ecs-service"; 14 | public static string CODE_TASK_DEFINITION_TASK_ROLE_ID = STACK_PREFIX+ "task-definition-task-role-id"; 15 | public static string CODE_TASK_DEFINITION_TASK_ROLE_SERVICE = "ecs.amazonaws.com"; 16 | 17 | // ECSTaskExecutionRole 18 | public static string CODE_TASK_DEFINITION_EXECUTION_SERVICE = "ecs-tasks.amazonaws.com"; 19 | public static string CODE_TASK_DEFINITION_EXECUTION_ROLE_POLICY_NAME = "AmazonECSTaskExecutionRolePolicy"; 20 | 21 | public static string TASK_FAMILY = STACK_PREFIX+ "taskdefinition"; 22 | public static string TASK_CPU = "256"; 23 | public static string TASK_MEMORY = "512"; 24 | public static string CONTAINER_DEFINITION_ID = STACK_PREFIX+ "container-definition-id"; 25 | public static double CONTAINER_PORT = 80; 26 | public static string CONTAINER_PROTOCOL = "tcp"; 27 | public static double CONTAINER_CPU = 256; 28 | public static double CONTAINER_MEMORY = 512; 29 | public static string SCALE_ONCPU_ID = "scale_on_cpu_id"; 30 | public static string LOADBALANCER_DNS = "LoadBalancerDNS"; 31 | public static string LOADBALANCER_DNS_HC = "api_values"; 32 | public static string LOADBALANCER_DNS_API = "api_todo"; 33 | public static string REPOSITORY_TAG = STACK_PREFIX+ "repo-tag"; 34 | public static string CONTAINER_REPOSITORY_IMAGE_ID = STACK_PREFIX+ "container-image-id"; 35 | public static string CONTAINER_NAME = STACK_PREFIX+ "ecs-container"; 36 | public static string CONTAINER_LOG_PREFIX = STACK_PREFIX+ "app-logs"; 37 | public static string CONTAINER_LOG_GROUP_ID = STACK_PREFIX+ "app-logs-id"; 38 | public static string CONTAINER_LOG_GROUP_NAME = STACK_PREFIX+ "app-logs"; 39 | public static string FARGATE_SERVICE_ID = STACK_PREFIX+ "ecs-service-id"; 40 | public static string FARGATE_SERVICE_NAME = STACK_PREFIX+ "ecs-service"; 41 | public static string SSM_DB_CONN_STRING_ID = STACK_PREFIX+ "image-repo-db-conn-string-id"; 42 | public static string SSM_DB_CONN_STRING = "/Database/Config/AuroraConnectionString"; 43 | public static string DB_NAME_ID = STACK_PREFIX+ "db-name-id"; 44 | public static string DB_NAME = "/Database/Config/DBName"; 45 | public static string DB_NAME_VALUE = "todo"; 46 | public static string DB_USER_VALUE = "master"; 47 | public static string DB_PASSWORD_VALUE = "netc0re123"; 48 | public static string AURORA_DB_ID = STACK_PREFIX+ "aurora-db-id"; 49 | public static string AURORA_TODO_DATABASE = STACK_PREFIX+ "aurora-database"; 50 | public static string AURORA_DB_INSTANCE_IDENTIFIER = "r5.large"; 51 | public static string AURORA_DB_ENGINE_VERSION = "5.6.10a"; 52 | public static string AURORA_DB_ENGINE = "aurora"; 53 | public static string AURORA_ENGINE_MODE = "serverless"; 54 | public static double AURORA_PORT = 3306; 55 | public static string AURORA_DB_SUBNET_ID = STACK_PREFIX+ "subnet-id"; 56 | public static string AURORA_DB_SUBNET_DESCRIPTION = STACK_PREFIX+ "subnet-desc"; 57 | public static string AURORA_DB_SUBNET_GROUP_NAME = STACK_PREFIX+ "subnet-grp"; 58 | } 59 | 60 | } -------------------------------------------------------------------------------- /cdk/src/Todo/Modules/EnvironmentVariable.cs: -------------------------------------------------------------------------------- 1 | namespace Todo 2 | { 3 | public class EnvironmentVariable 4 | { 5 | public string Name {get;set;} 6 | public string Type {get;set;} 7 | public string Value {get;set;} 8 | 9 | } 10 | } -------------------------------------------------------------------------------- /cdk/src/Todo/Modules/FargateExecutionRole.cs: -------------------------------------------------------------------------------- 1 | using Amazon.CDK; 2 | using Amazon.CDK.AWS.IAM; 3 | using System.Collections.Generic; 4 | 5 | namespace Todo.Modules 6 | { 7 | public sealed class FargateExecutionRole: Construct 8 | { 9 | Construct scope = null; 10 | string id = ""; 11 | 12 | public Role Role {get;set;} 13 | public FargateExecutionRole(Construct scope, string id): base(scope, id) 14 | { 15 | this.scope = scope; 16 | this.id = id; 17 | 18 | this.Role = GetRole( 19 | this, id+"-role", 20 | new string[]{}, 21 | new string[]{ 22 | Constants.CODE_TASK_DEFINITION_EXECUTION_SERVICE 23 | }, 24 | Constants.CODE_TASK_DEFINITION_EXECUTION_ROLE_POLICY_NAME, 25 | Utilities.ServiceBuilder.GetTaskDefinitionExecutionRoleActions(), 26 | "*" 27 | ); 28 | } 29 | 30 | public Role GetRole(Construct scope, string roleId, 31 | string[] ManagedPolicyArns, 32 | string[] PrincipalServices, 33 | string PolicyName, string[] Actions, string resources){ 34 | 35 | 36 | var roleProps = new RoleProps{ 37 | Path = "/", 38 | AssumedBy = new ServicePrincipal(PrincipalServices[0]) 39 | }; 40 | 41 | if(PrincipalServices.Length > 0){ 42 | List principalBases = new List(); 43 | foreach(string service in PrincipalServices){ 44 | PrincipalBase principalBase = new ServicePrincipal(service); 45 | principalBases.Add(principalBase); 46 | } 47 | var compositePrincipal = new CompositePrincipal(principalBases.ToArray()); 48 | roleProps = new RoleProps{ 49 | Path = "/", 50 | AssumedBy = compositePrincipal 51 | }; 52 | } 53 | 54 | var iamRole = new Role(scope, roleId, roleProps); 55 | 56 | foreach(string arn in ManagedPolicyArns){ 57 | iamRole.AddManagedPolicy(ManagedPolicy.FromAwsManagedPolicyName(arn)); 58 | } 59 | 60 | PolicyStatement policyStatement = new PolicyStatement(new PolicyStatementProps{ 61 | Actions = Actions, 62 | Resources = new string[]{resources}, 63 | Effect = Effect.ALLOW 64 | }); 65 | 66 | iamRole.AddToPolicy(policyStatement); 67 | return iamRole; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /cdk/src/Todo/Modules/FargateTaskRole.cs: -------------------------------------------------------------------------------- 1 | using Amazon.CDK; 2 | using Amazon.CDK.AWS.IAM; 3 | using System.Collections.Generic; 4 | 5 | namespace Todo.Modules 6 | { 7 | public sealed class FargateTaskRole: Construct 8 | { 9 | Construct scope = null; 10 | string id = ""; 11 | 12 | public Role Role {get;set;} 13 | public FargateTaskRole(Construct scope, string id): base(scope, id) 14 | { 15 | this.scope = scope; 16 | this.id = id; 17 | 18 | this.Role = GetRole( 19 | this, id+"-role", 20 | Utilities.ServiceBuilder.GetTaskDefinitionTaskRoleManagedPolicyARNs(), 21 | new string[]{ 22 | Constants.CODE_TASK_DEFINITION_TASK_ROLE_SERVICE, 23 | Constants.CODE_TASK_DEFINITION_EXECUTION_SERVICE 24 | }, 25 | "ecsTaskExecutionRole", 26 | Utilities.ServiceBuilder.GetTaskDefinitionTaskRoleActions(), 27 | "*" 28 | ); 29 | } 30 | 31 | public Role GetRole(Construct scope, string roleId, 32 | string[] ManagedPolicyArns, 33 | string[] PrincipalServices, 34 | string PolicyName, string[] Actions, string resources){ 35 | 36 | 37 | var roleProps = new RoleProps{ 38 | Path = "/", 39 | AssumedBy = new ServicePrincipal(PrincipalServices[0]) 40 | }; 41 | 42 | if(PrincipalServices.Length > 0){ 43 | List principalBases = new List(); 44 | foreach(string service in PrincipalServices){ 45 | PrincipalBase principalBase = new ServicePrincipal(service); 46 | principalBases.Add(principalBase); 47 | } 48 | var compositePrincipal = new CompositePrincipal(principalBases.ToArray()); 49 | roleProps = new RoleProps{ 50 | Path = "/", 51 | AssumedBy = compositePrincipal 52 | }; 53 | } 54 | 55 | var iamRole = new Role(scope, roleId, roleProps); 56 | 57 | foreach(string arn in ManagedPolicyArns){ 58 | iamRole.AddManagedPolicy(ManagedPolicy.FromAwsManagedPolicyName(arn)); 59 | } 60 | 61 | PolicyStatement policyStatement = new PolicyStatement(new PolicyStatementProps{ 62 | Actions = Actions, 63 | Resources = new string[]{resources}, 64 | Effect = Effect.ALLOW 65 | }); 66 | 67 | iamRole.AddToPolicy(policyStatement); 68 | return iamRole; 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /cdk/src/Todo/Program.cs: -------------------------------------------------------------------------------- 1 | using Amazon.CDK; 2 | 3 | namespace Todo 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | var app = new App(null); 10 | new TodoInfraStack(app, "TodoInfraStack", new StackProps()); 11 | app.Synth(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /cdk/src/Todo/Todo.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /cdk/src/Todo/TodoInfraStack.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | using System.Collections.Generic; 3 | 4 | using Amazon.CDK; 5 | using Amazon.CDK.AWS.EC2; 6 | using Amazon.CDK.AWS.ECS; 7 | using Amazon.CDK.AWS.ECS.Patterns; 8 | using Amazon.CDK.AWS.ApplicationAutoScaling; 9 | using Amazon.CDK.AWS.RDS; 10 | 11 | using cdkstack = Amazon.CDK; 12 | using ec2 = Amazon.CDK.AWS.EC2; 13 | using ssm = Amazon.CDK.AWS.SSM; 14 | 15 | using Todo.Modules; 16 | 17 | namespace Todo 18 | { 19 | public class TodoInfraStack : cdkstack.Stack 20 | { 21 | public TodoInfraStack(Construct parent, string id, IStackProps props) : base(parent, id, props) 22 | { 23 | IVpc todoVpc = new Vpc(this, Constants.VPC_NAME, new VpcProps{ 24 | Cidr = Constants.CIDR_RANGE, 25 | MaxAzs = 4 26 | }); 27 | 28 | # region ECS-taskdefinition-service 29 | 30 | var todoCluster = new Cluster(this, Constants.ECS_ID, new ClusterProps{ 31 | ClusterName = Constants.ECS_CLUSTER_NAME, 32 | Vpc = todoVpc 33 | }); 34 | 35 | List portMappings = new List(); 36 | PortMapping containerPortMapping = new PortMapping(){ 37 | ContainerPort = Constants.CONTAINER_PORT, 38 | Protocol = Amazon.CDK.AWS.ECS.Protocol.TCP 39 | }; 40 | portMappings.Add(containerPortMapping); 41 | 42 | // Get Fargate Roles 43 | var todoFargateExecutionRoleProvider = new FargateExecutionRole(this, Constants.CODE_TASK_DEFINITION_EXECUTION_ROLE_ID); 44 | var todoFargateTaskRoleProvider = new FargateTaskRole(this, Constants.CODE_TASK_DEFINITION_TASK_ROLE_ID); 45 | 46 | var fargateTaskDefinitionProps = new FargateTaskDefinitionProps{ 47 | Family = Constants.TASK_FAMILY, 48 | Cpu = Constants.CONTAINER_CPU, 49 | MemoryLimitMiB = Constants.CONTAINER_MEMORY, 50 | TaskRole = todoFargateTaskRoleProvider.Role, 51 | ExecutionRole = todoFargateExecutionRoleProvider.Role 52 | }; 53 | 54 | var todoFargateTaskDefinition = new FargateTaskDefinition( 55 | this, Constants.TASK_DEFINITION_ID, fargateTaskDefinitionProps 56 | ); 57 | 58 | string[] command = new string[]{"dotnet", "todo-app.dll"}; 59 | var containerDefinition = new ContainerDefinition(this, Constants.CONTAINER_DEFINITION_ID, 60 | new ContainerDefinitionProps{ 61 | Cpu = Constants.CONTAINER_CPU, 62 | MemoryLimitMiB = Constants.CONTAINER_MEMORY, 63 | TaskDefinition = todoFargateTaskDefinition, 64 | Logging = LogDriver.AwsLogs(new AwsLogDriverProps{ 65 | StreamPrefix = Constants.CONTAINER_LOG_PREFIX 66 | }), 67 | Image = ContainerImage.FromAsset("../webapi") 68 | }); 69 | 70 | containerDefinition.AddPortMappings(containerPortMapping); 71 | 72 | var fargateService = new ApplicationLoadBalancedFargateService( 73 | this, Constants.FARGATE_SERVICE_ID, 74 | new ApplicationLoadBalancedFargateServiceProps{ 75 | Cluster = todoCluster, 76 | ServiceName = Constants.FARGATE_SERVICE_NAME, 77 | TaskDefinition = todoFargateTaskDefinition, 78 | Cpu = Constants.CONTAINER_CPU, 79 | MemoryLimitMiB = Constants.CONTAINER_MEMORY, 80 | PublicLoadBalancer = true 81 | }); 82 | 83 | var fargateScaling = fargateService.Service.AutoScaleTaskCount(new EnableScalingProps{ 84 | MinCapacity = 1, 85 | MaxCapacity = 2 86 | }); 87 | 88 | fargateScaling.ScaleOnCpuUtilization(Constants.SCALE_ONCPU_ID, 89 | new CpuUtilizationScalingProps{ 90 | TargetUtilizationPercent = 50, 91 | ScaleInCooldown = Duration.Seconds(60), 92 | ScaleOutCooldown = Duration.Seconds(60) 93 | } 94 | ); 95 | 96 | var cfnOutput = new CfnOutput(this, Constants.LOADBALANCER_DNS, 97 | new CfnOutputProps{ 98 | Value = fargateService.LoadBalancer.LoadBalancerDnsName 99 | } 100 | ); 101 | 102 | var cfnHealthCheckUrl = new CfnOutput(this, Constants.LOADBALANCER_DNS_HC, 103 | new CfnOutputProps{ 104 | Value = "http://" + fargateService.LoadBalancer.LoadBalancerDnsName + "/api/values" 105 | } 106 | ); 107 | var cfnTodoAPIUrl = new CfnOutput(this, Constants.LOADBALANCER_DNS_API, 108 | new CfnOutputProps{ 109 | Value = "http://" + fargateService.LoadBalancer.LoadBalancerDnsName + "/api/todo" 110 | } 111 | ); 112 | 113 | #endregion 114 | 115 | #region Aurora Database 116 | 117 | var privateSubnets = new List(); 118 | foreach(Subnet subnet in todoVpc.PrivateSubnets){ 119 | privateSubnets.Add(subnet.SubnetId); 120 | } 121 | 122 | var dbsubnetGroup = new CfnDBSubnetGroup(this, Constants.AURORA_DB_SUBNET_ID, new CfnDBSubnetGroupProps{ 123 | DbSubnetGroupDescription = Constants.AURORA_DB_SUBNET_DESCRIPTION, 124 | DbSubnetGroupName = Constants.AURORA_DB_SUBNET_GROUP_NAME, 125 | SubnetIds = privateSubnets.ToArray() 126 | }); 127 | 128 | List cfnDbSecurityGroupTag = new List(); 129 | CfnTag tagName = new CfnTag(){ 130 | Key = "Name", Value = Constants.APP_NAME 131 | }; 132 | cfnDbSecurityGroupTag.Add(tagName); 133 | 134 | var dbSecurityGroup = new CfnSecurityGroup(this, "cfn-db-sg", 135 | new CfnSecurityGroupProps{ 136 | VpcId = todoVpc.VpcId, 137 | GroupName = Constants.APP_NAME + "-ecs-db-sg", 138 | GroupDescription = "Access to the RDS", 139 | Tags = cfnDbSecurityGroupTag.ToArray() 140 | } 141 | ); 142 | 143 | var cfnSecurityGroupIngress = new ec2.CfnSecurityGroupIngress( 144 | this, "cfn-db-sg-ingress", new ec2.CfnSecurityGroupIngressProps{ 145 | Description = "Ingress 3306", 146 | FromPort = Constants.AURORA_PORT, 147 | ToPort = Constants.AURORA_PORT, 148 | IpProtocol = Constants.CONTAINER_PROTOCOL, 149 | SourceSecurityGroupId = fargateService.Service.Connections.SecurityGroups[0].SecurityGroupId, 150 | GroupId = dbSecurityGroup.AttrGroupId 151 | }); 152 | 153 | var dbCluster = new CfnDBCluster(this, Constants.AURORA_TODO_DATABASE, new CfnDBClusterProps{ 154 | Engine = Constants.AURORA_DB_ENGINE, 155 | EngineMode = Constants.AURORA_ENGINE_MODE, 156 | Port = Constants.AURORA_PORT, 157 | MasterUsername = Constants.DB_USER_VALUE, 158 | MasterUserPassword = Constants.DB_PASSWORD_VALUE, 159 | DbSubnetGroupName = Constants.AURORA_DB_SUBNET_GROUP_NAME, //"todo-subnet-grp", 160 | DatabaseName = Constants.DB_NAME_VALUE, 161 | VpcSecurityGroupIds = new string[]{ 162 | dbSecurityGroup.AttrGroupId 163 | } 164 | }); 165 | dbCluster.AddDependsOn(dbsubnetGroup); 166 | 167 | #endregion 168 | 169 | #region SSM 170 | 171 | StringBuilder connString = new StringBuilder(); 172 | connString.AppendFormat("server={0}", dbCluster.AttrEndpointAddress); 173 | connString.AppendFormat(";port={0}", Constants.AURORA_PORT); 174 | connString.AppendFormat(";database={0}", Constants.DB_NAME_VALUE); 175 | connString.AppendFormat(";user={0}", Constants.DB_USER_VALUE); 176 | connString.AppendFormat(";password={0}", Constants.DB_PASSWORD_VALUE); 177 | 178 | var todoConnectionStringSSMParameter = new ssm.CfnParameter(this, Constants.SSM_DB_CONN_STRING_ID, new ssm.CfnParameterProps{ 179 | Name = Constants.SSM_DB_CONN_STRING, 180 | Type = "String", 181 | Description = "Maintains the Aurora Database Connection String", 182 | Value = connString.ToString() 183 | }); 184 | todoConnectionStringSSMParameter.AddDependsOn(dbCluster); 185 | 186 | #endregion 187 | 188 | Tag.Add(this, "Name", Constants.APP_NAME); 189 | } 190 | } 191 | } 192 | -------------------------------------------------------------------------------- /cdk/src/Todo/Utilities/ServiceBuilder.cs: -------------------------------------------------------------------------------- 1 | namespace Todo.Utilities 2 | { 3 | public static class ServiceBuilder 4 | { 5 | # region CODEBUILD, CODECOMMIT, Static helper 6 | public static string[] GetTaskDefinitionExecutionRoleActions(){ 7 | string[] taskDefinitionExecutionRoles = new string[]{ 8 | "ecr:GetAuthorizationToken", 9 | "ecr:BatchCheckLayerAvailability", 10 | "ecr:GetDownloadUrlForLayer", 11 | "ecr:BatchGetImage", 12 | "logs:CreateLogStream", 13 | "logs:PutLogEvents" 14 | }; 15 | return taskDefinitionExecutionRoles; 16 | } 17 | 18 | public static string[] GetTaskDefinitionTaskRoleManagedPolicyARNs(){ 19 | string[] taskDefinitionManagedRoleActions = new string[]{ 20 | "AmazonRDSFullAccess", 21 | "AmazonSSMFullAccess", 22 | "AmazonEC2ContainerServiceFullAccess", 23 | "service-role/AmazonEC2ContainerServiceforEC2Role" 24 | }; 25 | return taskDefinitionManagedRoleActions; 26 | } 27 | 28 | public static string[] GetTaskDefinitionTaskRoleActions(){ 29 | string[] taskDefinitionTaskRoleActions = new string[]{ 30 | "ec2:AttachNetworkInterface", 31 | "ec2:CreateNetworkInterface", 32 | "ec2:CreateNetworkInterfacePermission", 33 | "ec2:DeleteNetworkInterface", 34 | "ec2:DeleteNetworkInterfacePermission", 35 | "ec2:Describe*", 36 | "ec2:DetachNetworkInterface", 37 | "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", 38 | "elasticloadbalancing:DeregisterTargets", 39 | "elasticloadbalancing:Describe*", 40 | "elasticloadbalancing:RegisterInstancesWithLoadBalancer", 41 | "elasticloadbalancing:RegisterTargets" 42 | }; 43 | return taskDefinitionTaskRoleActions; 44 | } 45 | 46 | #endregion 47 | } 48 | } -------------------------------------------------------------------------------- /cdk/src/Todo/Utilities/ServiceProvider.cs: -------------------------------------------------------------------------------- 1 | 2 | using Amazon.CDK.AWS.IAM; 3 | using System.Collections.Generic; 4 | 5 | namespace Todo.Utilities 6 | { 7 | public static class ServiceProvider 8 | { 9 | 10 | public static Role GetRole(TodoInfraStack stack, string roleId, 11 | string[] ManagedPolicyArns, 12 | string[] PrincipalServices, 13 | string PolicyName, string[] Actions, string resources){ 14 | 15 | 16 | var roleProps = new RoleProps{ 17 | Path = "/", 18 | AssumedBy = new ServicePrincipal(PrincipalServices[0]) 19 | }; 20 | 21 | if(PrincipalServices.Length > 0){ 22 | List principalBases = new List(); 23 | foreach(string service in PrincipalServices){ 24 | PrincipalBase principalBase = new ServicePrincipal(service); 25 | principalBases.Add(principalBase); 26 | } 27 | var compositePrincipal = new CompositePrincipal(principalBases.ToArray()); 28 | roleProps = new RoleProps{ 29 | Path = "/", 30 | AssumedBy = compositePrincipal 31 | }; 32 | } 33 | 34 | var iamRole = new Role(stack, roleId, roleProps); 35 | 36 | foreach(string arn in ManagedPolicyArns){ 37 | iamRole.AddManagedPolicy(ManagedPolicy.FromAwsManagedPolicyName(arn)); 38 | } 39 | 40 | PolicyStatement policyStatement = new PolicyStatement(new PolicyStatementProps{ 41 | Actions = Actions, 42 | Resources = new string[]{resources}, 43 | Effect = Effect.ALLOW 44 | }); 45 | 46 | iamRole.AddToPolicy(policyStatement); 47 | return iamRole; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | using System; 12 | using System.Reflection; 13 | 14 | [assembly: System.Reflection.AssemblyCompanyAttribute("Todo")] 15 | [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 16 | [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 17 | [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] 18 | [assembly: System.Reflection.AssemblyProductAttribute("Todo")] 19 | [assembly: System.Reflection.AssemblyTitleAttribute("Todo")] 20 | [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] 21 | 22 | // Generated by the MSBuild WriteCodeFragment class. 23 | 24 | -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfoInputs.cache: -------------------------------------------------------------------------------- 1 | df5d1c2be44807a79cba8a5c890c16b38b11c86e 2 | -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.assets.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-netcoreapi-aurora-cdk/31f2727297cf9e665f3553fbbd4c61c43959b9a9/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.assets.cache -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.csprojAssemblyReference.cache 2 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfoInputs.cache 3 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfo.cs 4 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.deps.json 5 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.runtimeconfig.json 6 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.runtimeconfig.dev.json 7 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.dll 8 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.pdb 9 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.dll 10 | /Users/ramansiv/Documents/Code/AWS/cdk/dotnet/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.pdb 11 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.deps.json 12 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.runtimeconfig.json 13 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.runtimeconfig.dev.json 14 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.dll 15 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/bin/Debug/netcoreapp2.1/Todo.pdb 16 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.csprojAssemblyReference.cache 17 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfoInputs.cache 18 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.AssemblyInfo.cs 19 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.dll 20 | /Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.pdb 21 | -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-netcoreapi-aurora-cdk/31f2727297cf9e665f3553fbbd4c61c43959b9a9/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-netcoreapi-aurora-cdk/31f2727297cf9e665f3553fbbd4c61c43959b9a9/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.dll -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aws-samples/aws-netcoreapi-aurora-cdk/31f2727297cf9e665f3553fbbd4c61c43959b9a9/cdk/src/Todo/obj/Debug/netcoreapp2.1/Todo.pdb -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Todo.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "TPee0QfDpQ5YAk2NStpdYfFyw1w1tBay+6xRcZpc87p2oHJX6Aydd47LphMkbUC42VbVpg89zZPh4uCGyQnixA==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Todo.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": 1, 3 | "restore": { 4 | "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj": {} 5 | }, 6 | "projects": { 7 | "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj", 11 | "projectName": "Todo", 12 | "projectPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj", 13 | "packagesPath": "/Users/ramansiv/.nuget/packages/", 14 | "outputPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/", 15 | "projectStyle": "PackageReference", 16 | "fallbackFolders": [ 17 | "/usr/local/share/dotnet/sdk/NuGetFallbackFolder" 18 | ], 19 | "configFilePaths": [ 20 | "/Users/ramansiv/.nuget/NuGet/NuGet.Config" 21 | ], 22 | "originalTargetFrameworks": [ 23 | "netcoreapp3.0" 24 | ], 25 | "sources": { 26 | "https://api.nuget.org/v3/index.json": {} 27 | }, 28 | "frameworks": { 29 | "netcoreapp3.0": { 30 | "projectReferences": {} 31 | } 32 | }, 33 | "warningProperties": { 34 | "warnAsError": [ 35 | "NU1605" 36 | ] 37 | } 38 | }, 39 | "frameworks": { 40 | "netcoreapp3.0": { 41 | "dependencies": { 42 | "Amazon.CDK": { 43 | "target": "Package", 44 | "version": "[1.17.1-devpreview, )" 45 | }, 46 | "Amazon.CDK.AWS.ApplicationAutoScaling": { 47 | "target": "Package", 48 | "version": "[1.17.1-devpreview, )" 49 | }, 50 | "Amazon.CDK.AWS.ECR": { 51 | "target": "Package", 52 | "version": "[1.17.1-devpreview, )" 53 | }, 54 | "Amazon.CDK.AWS.ECS": { 55 | "target": "Package", 56 | "version": "[1.17.1-devpreview, )" 57 | }, 58 | "Amazon.CDK.AWS.ECS.Patterns": { 59 | "target": "Package", 60 | "version": "[1.17.1-devpreview, )" 61 | }, 62 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": { 63 | "target": "Package", 64 | "version": "[1.17.1-devpreview, )" 65 | }, 66 | "Amazon.CDK.AWS.IAM": { 67 | "target": "Package", 68 | "version": "[1.17.1-devpreview, )" 69 | }, 70 | "Amazon.CDK.AWS.RDS": { 71 | "target": "Package", 72 | "version": "[1.17.1-devpreview, )" 73 | }, 74 | "Amazon.CDK.AWS.S3": { 75 | "target": "Package", 76 | "version": "[1.17.1-devpreview, )" 77 | }, 78 | "Amazon.CDK.AWS.SSM": { 79 | "target": "Package", 80 | "version": "[1.17.1-devpreview, )" 81 | } 82 | }, 83 | "imports": [ 84 | "net461", 85 | "net462", 86 | "net47", 87 | "net471", 88 | "net472", 89 | "net48" 90 | ], 91 | "assetTargetFallback": true, 92 | "warn": true, 93 | "frameworkReferences": { 94 | "Microsoft.NETCore.App": { 95 | "privateAssets": "all" 96 | } 97 | }, 98 | "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.0.100/RuntimeIdentifierGraph.json" 99 | } 100 | } 101 | } 102 | } 103 | } -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Todo.csproj.nuget.g.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | NuGet 6 | $(MSBuildThisFileDirectory)project.assets.json 7 | /Users/ramansiv/.nuget/packages/ 8 | /Users/ramansiv/.nuget/packages/;/usr/local/share/dotnet/sdk/NuGetFallbackFolder 9 | PackageReference 10 | 5.3.0 11 | 12 | 13 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 14 | 15 | -------------------------------------------------------------------------------- /cdk/src/Todo/obj/Todo.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | 6 | -------------------------------------------------------------------------------- /cdk/src/Todo/obj/project.assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "targets": { 4 | ".NETCoreApp,Version=v3.0": { 5 | "Amazon.CDK/1.17.1-devpreview": { 6 | "type": "package", 7 | "dependencies": { 8 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 9 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 10 | }, 11 | "compile": { 12 | "lib/netcoreapp3.0/Amazon.CDK.dll": {} 13 | }, 14 | "runtime": { 15 | "lib/netcoreapp3.0/Amazon.CDK.dll": {} 16 | } 17 | }, 18 | "Amazon.CDK.Assets/1.17.1-devpreview": { 19 | "type": "package", 20 | "dependencies": { 21 | "Amazon.CDK": "1.17.1-devpreview", 22 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 23 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 24 | }, 25 | "compile": { 26 | "lib/netcoreapp3.0/Amazon.CDK.Assets.dll": {} 27 | }, 28 | "runtime": { 29 | "lib/netcoreapp3.0/Amazon.CDK.Assets.dll": {} 30 | } 31 | }, 32 | "Amazon.CDK.AWS.APIGateway/1.17.1-devpreview": { 33 | "type": "package", 34 | "dependencies": { 35 | "Amazon.CDK": "1.17.1-devpreview", 36 | "Amazon.CDK.AWS.CertificateManager": "1.17.1-devpreview", 37 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 38 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 39 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 40 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 41 | }, 42 | "compile": { 43 | "lib/netcoreapp3.0/Amazon.CDK.AWS.APIGateway.dll": {} 44 | }, 45 | "runtime": { 46 | "lib/netcoreapp3.0/Amazon.CDK.AWS.APIGateway.dll": {} 47 | } 48 | }, 49 | "Amazon.CDK.AWS.ApplicationAutoScaling/1.17.1-devpreview": { 50 | "type": "package", 51 | "dependencies": { 52 | "Amazon.CDK": "1.17.1-devpreview", 53 | "Amazon.CDK.AWS.AutoScaling.Common": "1.17.1-devpreview", 54 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 55 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 56 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 57 | }, 58 | "compile": { 59 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ApplicationAutoScaling.dll": {} 60 | }, 61 | "runtime": { 62 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ApplicationAutoScaling.dll": {} 63 | } 64 | }, 65 | "Amazon.CDK.AWS.AutoScaling/1.17.1-devpreview": { 66 | "type": "package", 67 | "dependencies": { 68 | "Amazon.CDK": "1.17.1-devpreview", 69 | "Amazon.CDK.AWS.AutoScaling.Common": "1.17.1-devpreview", 70 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 71 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 72 | "Amazon.CDK.AWS.ElasticLoadBalancing": "1.17.1-devpreview", 73 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 74 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 75 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 76 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 77 | }, 78 | "compile": { 79 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.dll": {} 80 | }, 81 | "runtime": { 82 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.dll": {} 83 | } 84 | }, 85 | "Amazon.CDK.AWS.AutoScaling.Common/1.17.1-devpreview": { 86 | "type": "package", 87 | "dependencies": { 88 | "Amazon.CDK": "1.17.1-devpreview", 89 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 90 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 91 | }, 92 | "compile": { 93 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.Common.dll": {} 94 | }, 95 | "runtime": { 96 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.Common.dll": {} 97 | } 98 | }, 99 | "Amazon.CDK.AWS.AutoScaling.HookTargets/1.17.1-devpreview": { 100 | "type": "package", 101 | "dependencies": { 102 | "Amazon.CDK": "1.17.1-devpreview", 103 | "Amazon.CDK.AWS.AutoScaling": "1.17.1-devpreview", 104 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 105 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 106 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 107 | "Amazon.CDK.AWS.SNS.Subscriptions": "1.17.1-devpreview", 108 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 109 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 110 | }, 111 | "compile": { 112 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.HookTargets.dll": {} 113 | }, 114 | "runtime": { 115 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.HookTargets.dll": {} 116 | } 117 | }, 118 | "Amazon.CDK.AWS.CertificateManager/1.17.1-devpreview": { 119 | "type": "package", 120 | "dependencies": { 121 | "Amazon.CDK": "1.17.1-devpreview", 122 | "Amazon.CDK.AWS.CloudFormation": "1.17.1-devpreview", 123 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 124 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 125 | "Amazon.CDK.AWS.Route53": "1.17.1-devpreview", 126 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 127 | }, 128 | "compile": { 129 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CertificateManager.dll": {} 130 | }, 131 | "runtime": { 132 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CertificateManager.dll": {} 133 | } 134 | }, 135 | "Amazon.CDK.AWS.CloudFormation/1.17.1-devpreview": { 136 | "type": "package", 137 | "dependencies": { 138 | "Amazon.CDK": "1.17.1-devpreview", 139 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 140 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 141 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 142 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 143 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 144 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 145 | }, 146 | "compile": { 147 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFormation.dll": {} 148 | }, 149 | "runtime": { 150 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFormation.dll": {} 151 | } 152 | }, 153 | "Amazon.CDK.AWS.CloudFront/1.17.1-devpreview": { 154 | "type": "package", 155 | "dependencies": { 156 | "Amazon.CDK": "1.17.1-devpreview", 157 | "Amazon.CDK.AWS.CertificateManager": "1.17.1-devpreview", 158 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 159 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 160 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 161 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 162 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 163 | }, 164 | "compile": { 165 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFront.dll": {} 166 | }, 167 | "runtime": { 168 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFront.dll": {} 169 | } 170 | }, 171 | "Amazon.CDK.AWS.CloudWatch/1.17.1-devpreview": { 172 | "type": "package", 173 | "dependencies": { 174 | "Amazon.CDK": "1.17.1-devpreview", 175 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 176 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 177 | }, 178 | "compile": { 179 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudWatch.dll": {} 180 | }, 181 | "runtime": { 182 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudWatch.dll": {} 183 | } 184 | }, 185 | "Amazon.CDK.AWS.CodeBuild/1.17.1-devpreview": { 186 | "type": "package", 187 | "dependencies": { 188 | "Amazon.CDK": "1.17.1-devpreview", 189 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 190 | "Amazon.CDK.AWS.CodeCommit": "1.17.1-devpreview", 191 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 192 | "Amazon.CDK.AWS.ECR": "1.17.1-devpreview", 193 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 194 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 195 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 196 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 197 | "Amazon.CDK.AWS.S3.Assets": "1.17.1-devpreview", 198 | "Amazon.CDK.AWS.SecretsManager": "1.17.1-devpreview", 199 | "Amazon.CDK.Assets": "1.17.1-devpreview", 200 | "Amazon.CDK.ECR.Assets": "1.17.1-devpreview", 201 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 202 | }, 203 | "compile": { 204 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeBuild.dll": {} 205 | }, 206 | "runtime": { 207 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeBuild.dll": {} 208 | } 209 | }, 210 | "Amazon.CDK.AWS.CodeCommit/1.17.1-devpreview": { 211 | "type": "package", 212 | "dependencies": { 213 | "Amazon.CDK": "1.17.1-devpreview", 214 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 215 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 216 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 217 | }, 218 | "compile": { 219 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeCommit.dll": {} 220 | }, 221 | "runtime": { 222 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeCommit.dll": {} 223 | } 224 | }, 225 | "Amazon.CDK.AWS.CodePipeline/1.17.1-devpreview": { 226 | "type": "package", 227 | "dependencies": { 228 | "Amazon.CDK": "1.17.1-devpreview", 229 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 230 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 231 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 232 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 233 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 234 | }, 235 | "compile": { 236 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodePipeline.dll": {} 237 | }, 238 | "runtime": { 239 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodePipeline.dll": {} 240 | } 241 | }, 242 | "Amazon.CDK.AWS.EC2/1.17.1-devpreview": { 243 | "type": "package", 244 | "dependencies": { 245 | "Amazon.CDK": "1.17.1-devpreview", 246 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 247 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 248 | "Amazon.CDK.AWS.SSM": "1.17.1-devpreview", 249 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 250 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 251 | }, 252 | "compile": { 253 | "lib/netcoreapp3.0/Amazon.CDK.AWS.EC2.dll": {} 254 | }, 255 | "runtime": { 256 | "lib/netcoreapp3.0/Amazon.CDK.AWS.EC2.dll": {} 257 | } 258 | }, 259 | "Amazon.CDK.AWS.ECR/1.17.1-devpreview": { 260 | "type": "package", 261 | "dependencies": { 262 | "Amazon.CDK": "1.17.1-devpreview", 263 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 264 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 265 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 266 | }, 267 | "compile": { 268 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECR.dll": {} 269 | }, 270 | "runtime": { 271 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECR.dll": {} 272 | } 273 | }, 274 | "Amazon.CDK.AWS.ECS/1.17.1-devpreview": { 275 | "type": "package", 276 | "dependencies": { 277 | "Amazon.CDK": "1.17.1-devpreview", 278 | "Amazon.CDK.AWS.ApplicationAutoScaling": "1.17.1-devpreview", 279 | "Amazon.CDK.AWS.AutoScaling": "1.17.1-devpreview", 280 | "Amazon.CDK.AWS.AutoScaling.HookTargets": "1.17.1-devpreview", 281 | "Amazon.CDK.AWS.CertificateManager": "1.17.1-devpreview", 282 | "Amazon.CDK.AWS.CloudFormation": "1.17.1-devpreview", 283 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 284 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 285 | "Amazon.CDK.AWS.ECR": "1.17.1-devpreview", 286 | "Amazon.CDK.AWS.ElasticLoadBalancing": "1.17.1-devpreview", 287 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 288 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 289 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 290 | "Amazon.CDK.AWS.Logs": "1.17.1-devpreview", 291 | "Amazon.CDK.AWS.Route53": "1.17.1-devpreview", 292 | "Amazon.CDK.AWS.Route53.Targets": "1.17.1-devpreview", 293 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 294 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 295 | "Amazon.CDK.AWS.SSM": "1.17.1-devpreview", 296 | "Amazon.CDK.AWS.SecretsManager": "1.17.1-devpreview", 297 | "Amazon.CDK.AWS.ServiceDiscovery": "1.17.1-devpreview", 298 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 299 | "Amazon.CDK.ECR.Assets": "1.17.1-devpreview", 300 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 301 | }, 302 | "compile": { 303 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.dll": {} 304 | }, 305 | "runtime": { 306 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.dll": {} 307 | } 308 | }, 309 | "Amazon.CDK.AWS.ECS.Patterns/1.17.1-devpreview": { 310 | "type": "package", 311 | "dependencies": { 312 | "Amazon.CDK": "1.17.1-devpreview", 313 | "Amazon.CDK.AWS.ApplicationAutoScaling": "1.17.1-devpreview", 314 | "Amazon.CDK.AWS.CertificateManager": "1.17.1-devpreview", 315 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 316 | "Amazon.CDK.AWS.ECS": "1.17.1-devpreview", 317 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 318 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 319 | "Amazon.CDK.AWS.Events.Targets": "1.17.1-devpreview", 320 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 321 | "Amazon.CDK.AWS.Route53": "1.17.1-devpreview", 322 | "Amazon.CDK.AWS.Route53.Targets": "1.17.1-devpreview", 323 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 324 | "Amazon.CDK.AWS.ServiceDiscovery": "1.17.1-devpreview", 325 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 326 | }, 327 | "compile": { 328 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.Patterns.dll": {} 329 | }, 330 | "runtime": { 331 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.Patterns.dll": {} 332 | } 333 | }, 334 | "Amazon.CDK.AWS.ElasticLoadBalancing/1.17.1-devpreview": { 335 | "type": "package", 336 | "dependencies": { 337 | "Amazon.CDK": "1.17.1-devpreview", 338 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 339 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 340 | }, 341 | "compile": { 342 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancing.dll": {} 343 | }, 344 | "runtime": { 345 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancing.dll": {} 346 | } 347 | }, 348 | "Amazon.CDK.AWS.ElasticLoadBalancingV2/1.17.1-devpreview": { 349 | "type": "package", 350 | "dependencies": { 351 | "Amazon.CDK": "1.17.1-devpreview", 352 | "Amazon.CDK.AWS.CertificateManager": "1.17.1-devpreview", 353 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 354 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 355 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 356 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 357 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 358 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 359 | }, 360 | "compile": { 361 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancingV2.dll": {} 362 | }, 363 | "runtime": { 364 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancingV2.dll": {} 365 | } 366 | }, 367 | "Amazon.CDK.AWS.Events/1.17.1-devpreview": { 368 | "type": "package", 369 | "dependencies": { 370 | "Amazon.CDK": "1.17.1-devpreview", 371 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 372 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 373 | }, 374 | "compile": { 375 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.dll": {} 376 | }, 377 | "runtime": { 378 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.dll": {} 379 | } 380 | }, 381 | "Amazon.CDK.AWS.Events.Targets/1.17.1-devpreview": { 382 | "type": "package", 383 | "dependencies": { 384 | "Amazon.CDK": "1.17.1-devpreview", 385 | "Amazon.CDK.AWS.CloudFormation": "1.17.1-devpreview", 386 | "Amazon.CDK.AWS.CodeBuild": "1.17.1-devpreview", 387 | "Amazon.CDK.AWS.CodePipeline": "1.17.1-devpreview", 388 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 389 | "Amazon.CDK.AWS.ECS": "1.17.1-devpreview", 390 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 391 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 392 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 393 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 394 | "Amazon.CDK.AWS.SNS.Subscriptions": "1.17.1-devpreview", 395 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 396 | "Amazon.CDK.AWS.StepFunctions": "1.17.1-devpreview", 397 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 398 | }, 399 | "compile": { 400 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.Targets.dll": {} 401 | }, 402 | "runtime": { 403 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.Targets.dll": {} 404 | } 405 | }, 406 | "Amazon.CDK.AWS.IAM/1.17.1-devpreview": { 407 | "type": "package", 408 | "dependencies": { 409 | "Amazon.CDK": "1.17.1-devpreview", 410 | "Amazon.CDK.RegionInfo": "1.17.1-devpreview", 411 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 412 | }, 413 | "compile": { 414 | "lib/netcoreapp3.0/Amazon.CDK.AWS.IAM.dll": {} 415 | }, 416 | "runtime": { 417 | "lib/netcoreapp3.0/Amazon.CDK.AWS.IAM.dll": {} 418 | } 419 | }, 420 | "Amazon.CDK.AWS.KMS/1.17.1-devpreview": { 421 | "type": "package", 422 | "dependencies": { 423 | "Amazon.CDK": "1.17.1-devpreview", 424 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 425 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 426 | }, 427 | "compile": { 428 | "lib/netcoreapp3.0/Amazon.CDK.AWS.KMS.dll": {} 429 | }, 430 | "runtime": { 431 | "lib/netcoreapp3.0/Amazon.CDK.AWS.KMS.dll": {} 432 | } 433 | }, 434 | "Amazon.CDK.AWS.Lambda/1.17.1-devpreview": { 435 | "type": "package", 436 | "dependencies": { 437 | "Amazon.CDK": "1.17.1-devpreview", 438 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 439 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 440 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 441 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 442 | "Amazon.CDK.AWS.Logs": "1.17.1-devpreview", 443 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 444 | "Amazon.CDK.AWS.S3.Assets": "1.17.1-devpreview", 445 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 446 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 447 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 448 | }, 449 | "compile": { 450 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Lambda.dll": {} 451 | }, 452 | "runtime": { 453 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Lambda.dll": {} 454 | } 455 | }, 456 | "Amazon.CDK.AWS.Logs/1.17.1-devpreview": { 457 | "type": "package", 458 | "dependencies": { 459 | "Amazon.CDK": "1.17.1-devpreview", 460 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 461 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 462 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 463 | }, 464 | "compile": { 465 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Logs.dll": {} 466 | }, 467 | "runtime": { 468 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Logs.dll": {} 469 | } 470 | }, 471 | "Amazon.CDK.AWS.RDS/1.17.1-devpreview": { 472 | "type": "package", 473 | "dependencies": { 474 | "Amazon.CDK": "1.17.1-devpreview", 475 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 476 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 477 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 478 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 479 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 480 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 481 | "Amazon.CDK.AWS.Logs": "1.17.1-devpreview", 482 | "Amazon.CDK.AWS.SAM": "1.17.1-devpreview", 483 | "Amazon.CDK.AWS.SecretsManager": "1.17.1-devpreview", 484 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 485 | }, 486 | "compile": { 487 | "lib/netcoreapp3.0/Amazon.CDK.AWS.RDS.dll": {} 488 | }, 489 | "runtime": { 490 | "lib/netcoreapp3.0/Amazon.CDK.AWS.RDS.dll": {} 491 | } 492 | }, 493 | "Amazon.CDK.AWS.Route53/1.17.1-devpreview": { 494 | "type": "package", 495 | "dependencies": { 496 | "Amazon.CDK": "1.17.1-devpreview", 497 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 498 | "Amazon.CDK.AWS.Logs": "1.17.1-devpreview", 499 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 500 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 501 | }, 502 | "compile": { 503 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.dll": {} 504 | }, 505 | "runtime": { 506 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.dll": {} 507 | } 508 | }, 509 | "Amazon.CDK.AWS.Route53.Targets/1.17.1-devpreview": { 510 | "type": "package", 511 | "dependencies": { 512 | "Amazon.CDK": "1.17.1-devpreview", 513 | "Amazon.CDK.AWS.APIGateway": "1.17.1-devpreview", 514 | "Amazon.CDK.AWS.CloudFront": "1.17.1-devpreview", 515 | "Amazon.CDK.AWS.ElasticLoadBalancing": "1.17.1-devpreview", 516 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 517 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 518 | "Amazon.CDK.AWS.Route53": "1.17.1-devpreview", 519 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 520 | "Amazon.CDK.RegionInfo": "1.17.1-devpreview", 521 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 522 | }, 523 | "compile": { 524 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.Targets.dll": {} 525 | }, 526 | "runtime": { 527 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.Targets.dll": {} 528 | } 529 | }, 530 | "Amazon.CDK.AWS.S3/1.17.1-devpreview": { 531 | "type": "package", 532 | "dependencies": { 533 | "Amazon.CDK": "1.17.1-devpreview", 534 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 535 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 536 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 537 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 538 | }, 539 | "compile": { 540 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.dll": {} 541 | }, 542 | "runtime": { 543 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.dll": {} 544 | } 545 | }, 546 | "Amazon.CDK.AWS.S3.Assets/1.17.1-devpreview": { 547 | "type": "package", 548 | "dependencies": { 549 | "Amazon.CDK": "1.17.1-devpreview", 550 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 551 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 552 | "Amazon.CDK.Assets": "1.17.1-devpreview", 553 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 554 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 555 | }, 556 | "compile": { 557 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.Assets.dll": {} 558 | }, 559 | "runtime": { 560 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.Assets.dll": {} 561 | } 562 | }, 563 | "Amazon.CDK.AWS.SAM/1.17.1-devpreview": { 564 | "type": "package", 565 | "dependencies": { 566 | "Amazon.CDK": "1.17.1-devpreview", 567 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 568 | }, 569 | "compile": { 570 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SAM.dll": {} 571 | }, 572 | "runtime": { 573 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SAM.dll": {} 574 | } 575 | }, 576 | "Amazon.CDK.AWS.SecretsManager/1.17.1-devpreview": { 577 | "type": "package", 578 | "dependencies": { 579 | "Amazon.CDK": "1.17.1-devpreview", 580 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 581 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 582 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 583 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 584 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 585 | }, 586 | "compile": { 587 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SecretsManager.dll": {} 588 | }, 589 | "runtime": { 590 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SecretsManager.dll": {} 591 | } 592 | }, 593 | "Amazon.CDK.AWS.ServiceDiscovery/1.17.1-devpreview": { 594 | "type": "package", 595 | "dependencies": { 596 | "Amazon.CDK": "1.17.1-devpreview", 597 | "Amazon.CDK.AWS.EC2": "1.17.1-devpreview", 598 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": "1.17.1-devpreview", 599 | "Amazon.CDK.AWS.Route53": "1.17.1-devpreview", 600 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 601 | }, 602 | "compile": { 603 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ServiceDiscovery.dll": {} 604 | }, 605 | "runtime": { 606 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ServiceDiscovery.dll": {} 607 | } 608 | }, 609 | "Amazon.CDK.AWS.SNS/1.17.1-devpreview": { 610 | "type": "package", 611 | "dependencies": { 612 | "Amazon.CDK": "1.17.1-devpreview", 613 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 614 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 615 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 616 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 617 | }, 618 | "compile": { 619 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.dll": {} 620 | }, 621 | "runtime": { 622 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.dll": {} 623 | } 624 | }, 625 | "Amazon.CDK.AWS.SNS.Subscriptions/1.17.1-devpreview": { 626 | "type": "package", 627 | "dependencies": { 628 | "Amazon.CDK": "1.17.1-devpreview", 629 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 630 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 631 | "Amazon.CDK.AWS.SNS": "1.17.1-devpreview", 632 | "Amazon.CDK.AWS.SQS": "1.17.1-devpreview", 633 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 634 | }, 635 | "compile": { 636 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.Subscriptions.dll": {} 637 | }, 638 | "runtime": { 639 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.Subscriptions.dll": {} 640 | } 641 | }, 642 | "Amazon.CDK.AWS.SQS/1.17.1-devpreview": { 643 | "type": "package", 644 | "dependencies": { 645 | "Amazon.CDK": "1.17.1-devpreview", 646 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 647 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 648 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 649 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 650 | }, 651 | "compile": { 652 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SQS.dll": {} 653 | }, 654 | "runtime": { 655 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SQS.dll": {} 656 | } 657 | }, 658 | "Amazon.CDK.AWS.SSM/1.17.1-devpreview": { 659 | "type": "package", 660 | "dependencies": { 661 | "Amazon.CDK": "1.17.1-devpreview", 662 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 663 | "Amazon.CDK.AWS.KMS": "1.17.1-devpreview", 664 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 665 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 666 | }, 667 | "compile": { 668 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SSM.dll": {} 669 | }, 670 | "runtime": { 671 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SSM.dll": {} 672 | } 673 | }, 674 | "Amazon.CDK.AWS.StepFunctions/1.17.1-devpreview": { 675 | "type": "package", 676 | "dependencies": { 677 | "Amazon.CDK": "1.17.1-devpreview", 678 | "Amazon.CDK.AWS.CloudWatch": "1.17.1-devpreview", 679 | "Amazon.CDK.AWS.Events": "1.17.1-devpreview", 680 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 681 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 682 | }, 683 | "compile": { 684 | "lib/netcoreapp3.0/Amazon.CDK.AWS.StepFunctions.dll": {} 685 | }, 686 | "runtime": { 687 | "lib/netcoreapp3.0/Amazon.CDK.AWS.StepFunctions.dll": {} 688 | } 689 | }, 690 | "Amazon.CDK.CXAPI/1.17.1-devpreview": { 691 | "type": "package", 692 | "dependencies": { 693 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 694 | }, 695 | "compile": { 696 | "lib/netcoreapp3.0/Amazon.CDK.CXAPI.dll": {} 697 | }, 698 | "runtime": { 699 | "lib/netcoreapp3.0/Amazon.CDK.CXAPI.dll": {} 700 | } 701 | }, 702 | "Amazon.CDK.ECR.Assets/1.17.1-devpreview": { 703 | "type": "package", 704 | "dependencies": { 705 | "Amazon.CDK": "1.17.1-devpreview", 706 | "Amazon.CDK.AWS.CloudFormation": "1.17.1-devpreview", 707 | "Amazon.CDK.AWS.ECR": "1.17.1-devpreview", 708 | "Amazon.CDK.AWS.IAM": "1.17.1-devpreview", 709 | "Amazon.CDK.AWS.Lambda": "1.17.1-devpreview", 710 | "Amazon.CDK.AWS.S3": "1.17.1-devpreview", 711 | "Amazon.CDK.Assets": "1.17.1-devpreview", 712 | "Amazon.CDK.CXAPI": "1.17.1-devpreview", 713 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 714 | }, 715 | "compile": { 716 | "lib/netcoreapp3.0/Amazon.CDK.ECR.Assets.dll": {} 717 | }, 718 | "runtime": { 719 | "lib/netcoreapp3.0/Amazon.CDK.ECR.Assets.dll": {} 720 | } 721 | }, 722 | "Amazon.CDK.RegionInfo/1.17.1-devpreview": { 723 | "type": "package", 724 | "dependencies": { 725 | "Amazon.JSII.Runtime": "[0.20.7, 0.21.0)" 726 | }, 727 | "compile": { 728 | "lib/netcoreapp3.0/Amazon.CDK.RegionInfo.dll": {} 729 | }, 730 | "runtime": { 731 | "lib/netcoreapp3.0/Amazon.CDK.RegionInfo.dll": {} 732 | } 733 | }, 734 | "Amazon.JSII.JsonModel/0.20.7": { 735 | "type": "package", 736 | "dependencies": { 737 | "Newtonsoft.Json": "12.0.3" 738 | }, 739 | "compile": { 740 | "lib/netcoreapp3.0/Amazon.JSII.JsonModel.dll": {} 741 | }, 742 | "runtime": { 743 | "lib/netcoreapp3.0/Amazon.JSII.JsonModel.dll": {} 744 | } 745 | }, 746 | "Amazon.JSII.Runtime/0.20.7": { 747 | "type": "package", 748 | "dependencies": { 749 | "Amazon.JSII.JsonModel": "[0.20.7, 1.0.0)", 750 | "Microsoft.Extensions.DependencyInjection": "3.0.0", 751 | "Microsoft.Extensions.Logging": "3.0.0", 752 | "Microsoft.Extensions.Logging.Console": "3.0.0", 753 | "Newtonsoft.Json": "12.0.3" 754 | }, 755 | "compile": { 756 | "lib/netcoreapp3.0/Amazon.JSII.Runtime.dll": {} 757 | }, 758 | "runtime": { 759 | "lib/netcoreapp3.0/Amazon.JSII.Runtime.dll": {} 760 | } 761 | }, 762 | "Microsoft.Extensions.Configuration/3.0.0": { 763 | "type": "package", 764 | "dependencies": { 765 | "Microsoft.Extensions.Configuration.Abstractions": "3.0.0" 766 | }, 767 | "compile": { 768 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.dll": {} 769 | }, 770 | "runtime": { 771 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.dll": {} 772 | } 773 | }, 774 | "Microsoft.Extensions.Configuration.Abstractions/3.0.0": { 775 | "type": "package", 776 | "dependencies": { 777 | "Microsoft.Extensions.Primitives": "3.0.0" 778 | }, 779 | "compile": { 780 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} 781 | }, 782 | "runtime": { 783 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} 784 | } 785 | }, 786 | "Microsoft.Extensions.Configuration.Binder/3.0.0": { 787 | "type": "package", 788 | "dependencies": { 789 | "Microsoft.Extensions.Configuration": "3.0.0" 790 | }, 791 | "compile": { 792 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Binder.dll": {} 793 | }, 794 | "runtime": { 795 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Binder.dll": {} 796 | } 797 | }, 798 | "Microsoft.Extensions.DependencyInjection/3.0.0": { 799 | "type": "package", 800 | "dependencies": { 801 | "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0" 802 | }, 803 | "compile": { 804 | "lib/netcoreapp3.0/Microsoft.Extensions.DependencyInjection.dll": {} 805 | }, 806 | "runtime": { 807 | "lib/netcoreapp3.0/Microsoft.Extensions.DependencyInjection.dll": {} 808 | } 809 | }, 810 | "Microsoft.Extensions.DependencyInjection.Abstractions/3.0.0": { 811 | "type": "package", 812 | "compile": { 813 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} 814 | }, 815 | "runtime": { 816 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} 817 | } 818 | }, 819 | "Microsoft.Extensions.Logging/3.0.0": { 820 | "type": "package", 821 | "dependencies": { 822 | "Microsoft.Extensions.Configuration.Binder": "3.0.0", 823 | "Microsoft.Extensions.DependencyInjection": "3.0.0", 824 | "Microsoft.Extensions.Logging.Abstractions": "3.0.0", 825 | "Microsoft.Extensions.Options": "3.0.0" 826 | }, 827 | "compile": { 828 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.dll": {} 829 | }, 830 | "runtime": { 831 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.dll": {} 832 | } 833 | }, 834 | "Microsoft.Extensions.Logging.Abstractions/3.0.0": { 835 | "type": "package", 836 | "compile": { 837 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} 838 | }, 839 | "runtime": { 840 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} 841 | } 842 | }, 843 | "Microsoft.Extensions.Logging.Configuration/3.0.0": { 844 | "type": "package", 845 | "dependencies": { 846 | "Microsoft.Extensions.Logging": "3.0.0", 847 | "Microsoft.Extensions.Options.ConfigurationExtensions": "3.0.0" 848 | }, 849 | "compile": { 850 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Configuration.dll": {} 851 | }, 852 | "runtime": { 853 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Configuration.dll": {} 854 | } 855 | }, 856 | "Microsoft.Extensions.Logging.Console/3.0.0": { 857 | "type": "package", 858 | "dependencies": { 859 | "Microsoft.Extensions.Configuration.Abstractions": "3.0.0", 860 | "Microsoft.Extensions.Logging": "3.0.0", 861 | "Microsoft.Extensions.Logging.Configuration": "3.0.0" 862 | }, 863 | "compile": { 864 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Console.dll": {} 865 | }, 866 | "runtime": { 867 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Console.dll": {} 868 | } 869 | }, 870 | "Microsoft.Extensions.Options/3.0.0": { 871 | "type": "package", 872 | "dependencies": { 873 | "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0", 874 | "Microsoft.Extensions.Primitives": "3.0.0" 875 | }, 876 | "compile": { 877 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.dll": {} 878 | }, 879 | "runtime": { 880 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.dll": {} 881 | } 882 | }, 883 | "Microsoft.Extensions.Options.ConfigurationExtensions/3.0.0": { 884 | "type": "package", 885 | "dependencies": { 886 | "Microsoft.Extensions.Configuration.Abstractions": "3.0.0", 887 | "Microsoft.Extensions.Configuration.Binder": "3.0.0", 888 | "Microsoft.Extensions.DependencyInjection.Abstractions": "3.0.0", 889 | "Microsoft.Extensions.Options": "3.0.0" 890 | }, 891 | "compile": { 892 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} 893 | }, 894 | "runtime": { 895 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} 896 | } 897 | }, 898 | "Microsoft.Extensions.Primitives/3.0.0": { 899 | "type": "package", 900 | "compile": { 901 | "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {} 902 | }, 903 | "runtime": { 904 | "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll": {} 905 | } 906 | }, 907 | "Newtonsoft.Json/12.0.3": { 908 | "type": "package", 909 | "compile": { 910 | "lib/netstandard2.0/Newtonsoft.Json.dll": {} 911 | }, 912 | "runtime": { 913 | "lib/netstandard2.0/Newtonsoft.Json.dll": {} 914 | } 915 | } 916 | } 917 | }, 918 | "libraries": { 919 | "Amazon.CDK/1.17.1-devpreview": { 920 | "sha512": "QUVJBHLrzAJS8oGSaWRlwxVmS3uF7f5ZpTpFUsHVOf8FYBI+USv9uANKu02ZhN+mUtNBPIGchl170Dlkv6WnMw==", 921 | "type": "package", 922 | "path": "amazon.cdk/1.17.1-devpreview", 923 | "files": [ 924 | ".nupkg.metadata", 925 | ".signature.p7s", 926 | "amazon.cdk.1.17.1-devpreview.nupkg.sha512", 927 | "amazon.cdk.nuspec", 928 | "lib/netcoreapp3.0/Amazon.CDK.dll", 929 | "lib/netcoreapp3.0/Amazon.CDK.xml" 930 | ] 931 | }, 932 | "Amazon.CDK.Assets/1.17.1-devpreview": { 933 | "sha512": "ydbDSDcuMh3KsvAJTE5ykNrEMQ7J97Jqf1OWVP9VbUTp2PHvGTFP3axyb3Yq9KwiJBWQWWYFIkGcLHSBcWUpJQ==", 934 | "type": "package", 935 | "path": "amazon.cdk.assets/1.17.1-devpreview", 936 | "files": [ 937 | ".nupkg.metadata", 938 | ".signature.p7s", 939 | "amazon.cdk.assets.1.17.1-devpreview.nupkg.sha512", 940 | "amazon.cdk.assets.nuspec", 941 | "lib/netcoreapp3.0/Amazon.CDK.Assets.dll", 942 | "lib/netcoreapp3.0/Amazon.CDK.Assets.xml" 943 | ] 944 | }, 945 | "Amazon.CDK.AWS.APIGateway/1.17.1-devpreview": { 946 | "sha512": "KwDSxSe7d8bBSJ4cRCTypEKMA6Ig22OiJHfHjiKKcAR6HgVeMDvvv/dc+Kj2Edita796eoRxF9RNl4zVRVJxDA==", 947 | "type": "package", 948 | "path": "amazon.cdk.aws.apigateway/1.17.1-devpreview", 949 | "files": [ 950 | ".nupkg.metadata", 951 | ".signature.p7s", 952 | "amazon.cdk.aws.apigateway.1.17.1-devpreview.nupkg.sha512", 953 | "amazon.cdk.aws.apigateway.nuspec", 954 | "lib/netcoreapp3.0/Amazon.CDK.AWS.APIGateway.dll", 955 | "lib/netcoreapp3.0/Amazon.CDK.AWS.APIGateway.xml" 956 | ] 957 | }, 958 | "Amazon.CDK.AWS.ApplicationAutoScaling/1.17.1-devpreview": { 959 | "sha512": "O0K7P0oSz6Rsu0527647v3+oCNyWN7Jvlc6LOj5ukjxqiHSIbZgeeCdNu4oiu6WcG17r1bvidXAYpGvAjCGh4Q==", 960 | "type": "package", 961 | "path": "amazon.cdk.aws.applicationautoscaling/1.17.1-devpreview", 962 | "files": [ 963 | ".nupkg.metadata", 964 | ".signature.p7s", 965 | "amazon.cdk.aws.applicationautoscaling.1.17.1-devpreview.nupkg.sha512", 966 | "amazon.cdk.aws.applicationautoscaling.nuspec", 967 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ApplicationAutoScaling.dll", 968 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ApplicationAutoScaling.xml" 969 | ] 970 | }, 971 | "Amazon.CDK.AWS.AutoScaling/1.17.1-devpreview": { 972 | "sha512": "cT4FiAo8SZ8XWewH6kiM7RL2ywbBEx4BsYLZc0+Lb/VkT3DxhTLTXj3WnhPpTCQtCsRkgLnkRWIa3SaCEBhXLg==", 973 | "type": "package", 974 | "path": "amazon.cdk.aws.autoscaling/1.17.1-devpreview", 975 | "files": [ 976 | ".nupkg.metadata", 977 | ".signature.p7s", 978 | "amazon.cdk.aws.autoscaling.1.17.1-devpreview.nupkg.sha512", 979 | "amazon.cdk.aws.autoscaling.nuspec", 980 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.dll", 981 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.xml" 982 | ] 983 | }, 984 | "Amazon.CDK.AWS.AutoScaling.Common/1.17.1-devpreview": { 985 | "sha512": "gqOAUK3ZHXn0v0j4z9NuMqQVPXHdtG+MI14GUdpE1iSLUAYIvNuIiQ+5hGPRDPucUXSJOFdvZg82IhpyowvIBQ==", 986 | "type": "package", 987 | "path": "amazon.cdk.aws.autoscaling.common/1.17.1-devpreview", 988 | "files": [ 989 | ".nupkg.metadata", 990 | ".signature.p7s", 991 | "amazon.cdk.aws.autoscaling.common.1.17.1-devpreview.nupkg.sha512", 992 | "amazon.cdk.aws.autoscaling.common.nuspec", 993 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.Common.dll", 994 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.Common.xml" 995 | ] 996 | }, 997 | "Amazon.CDK.AWS.AutoScaling.HookTargets/1.17.1-devpreview": { 998 | "sha512": "ybjBe9qw00JPNW2JhhjmI3o1CxjEscvJ6Gsn4/joBcoRpxCwcR9JFNBcbbGFogsZwdAVn4PRJ1ZJy42mj1jrAg==", 999 | "type": "package", 1000 | "path": "amazon.cdk.aws.autoscaling.hooktargets/1.17.1-devpreview", 1001 | "files": [ 1002 | ".nupkg.metadata", 1003 | ".signature.p7s", 1004 | "amazon.cdk.aws.autoscaling.hooktargets.1.17.1-devpreview.nupkg.sha512", 1005 | "amazon.cdk.aws.autoscaling.hooktargets.nuspec", 1006 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.HookTargets.dll", 1007 | "lib/netcoreapp3.0/Amazon.CDK.AWS.AutoScaling.HookTargets.xml" 1008 | ] 1009 | }, 1010 | "Amazon.CDK.AWS.CertificateManager/1.17.1-devpreview": { 1011 | "sha512": "NJDpxSfhYlPdzUTaKG0Yno5fJj4Ar+LtDRHVKL+jGrxi4BbxzZd24Wxhc15Xn7AGgIrgjmGipmov2UALAz2ihQ==", 1012 | "type": "package", 1013 | "path": "amazon.cdk.aws.certificatemanager/1.17.1-devpreview", 1014 | "files": [ 1015 | ".nupkg.metadata", 1016 | ".signature.p7s", 1017 | "amazon.cdk.aws.certificatemanager.1.17.1-devpreview.nupkg.sha512", 1018 | "amazon.cdk.aws.certificatemanager.nuspec", 1019 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CertificateManager.dll", 1020 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CertificateManager.xml" 1021 | ] 1022 | }, 1023 | "Amazon.CDK.AWS.CloudFormation/1.17.1-devpreview": { 1024 | "sha512": "2cX40U+UXyDFbsTr4QJUeiEiEuBaPn4RibeA9wmYbykSuY9lVYcZCiggxql3H6SGCgx9I4svhzcO0VIgjSbrWA==", 1025 | "type": "package", 1026 | "path": "amazon.cdk.aws.cloudformation/1.17.1-devpreview", 1027 | "files": [ 1028 | ".nupkg.metadata", 1029 | ".signature.p7s", 1030 | "amazon.cdk.aws.cloudformation.1.17.1-devpreview.nupkg.sha512", 1031 | "amazon.cdk.aws.cloudformation.nuspec", 1032 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFormation.dll", 1033 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFormation.xml" 1034 | ] 1035 | }, 1036 | "Amazon.CDK.AWS.CloudFront/1.17.1-devpreview": { 1037 | "sha512": "MsSkkf3FWRSYsecZhEzzZj6Z16mBbkyhAtKdNyu7IBZBRBZnpv3AcOTyBoguVm9Jk1g93rESpmvZb7rVwxRHhg==", 1038 | "type": "package", 1039 | "path": "amazon.cdk.aws.cloudfront/1.17.1-devpreview", 1040 | "files": [ 1041 | ".nupkg.metadata", 1042 | ".signature.p7s", 1043 | "amazon.cdk.aws.cloudfront.1.17.1-devpreview.nupkg.sha512", 1044 | "amazon.cdk.aws.cloudfront.nuspec", 1045 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFront.dll", 1046 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudFront.xml" 1047 | ] 1048 | }, 1049 | "Amazon.CDK.AWS.CloudWatch/1.17.1-devpreview": { 1050 | "sha512": "2+L5wJGPBHKBg1szrFgPvo6+N1I+Hjf7HoMy/QH5gr7zgIVzOOE8I7MvIBuwBfZAkT7JyTGgt08a/A7Ch9DSJw==", 1051 | "type": "package", 1052 | "path": "amazon.cdk.aws.cloudwatch/1.17.1-devpreview", 1053 | "files": [ 1054 | ".nupkg.metadata", 1055 | ".signature.p7s", 1056 | "amazon.cdk.aws.cloudwatch.1.17.1-devpreview.nupkg.sha512", 1057 | "amazon.cdk.aws.cloudwatch.nuspec", 1058 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudWatch.dll", 1059 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CloudWatch.xml" 1060 | ] 1061 | }, 1062 | "Amazon.CDK.AWS.CodeBuild/1.17.1-devpreview": { 1063 | "sha512": "l3+nczeSxmTDUk0cGlcRqpP1XPiVN6L0+x1f8OdypuddTCTjLLEpsOjbNaQHHnopr0wxR8RA+OPAUw0sQzmPtg==", 1064 | "type": "package", 1065 | "path": "amazon.cdk.aws.codebuild/1.17.1-devpreview", 1066 | "files": [ 1067 | ".nupkg.metadata", 1068 | ".signature.p7s", 1069 | "amazon.cdk.aws.codebuild.1.17.1-devpreview.nupkg.sha512", 1070 | "amazon.cdk.aws.codebuild.nuspec", 1071 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeBuild.dll", 1072 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeBuild.xml" 1073 | ] 1074 | }, 1075 | "Amazon.CDK.AWS.CodeCommit/1.17.1-devpreview": { 1076 | "sha512": "rU9BhouUsF13mw3jPv5JtR2FIVI3GAmBqbL2G6NuxXd7r561/YruMKuM+RHTk3KKPL7liKcGKPIsYxvIPBZDfw==", 1077 | "type": "package", 1078 | "path": "amazon.cdk.aws.codecommit/1.17.1-devpreview", 1079 | "files": [ 1080 | ".nupkg.metadata", 1081 | ".signature.p7s", 1082 | "amazon.cdk.aws.codecommit.1.17.1-devpreview.nupkg.sha512", 1083 | "amazon.cdk.aws.codecommit.nuspec", 1084 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeCommit.dll", 1085 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodeCommit.xml" 1086 | ] 1087 | }, 1088 | "Amazon.CDK.AWS.CodePipeline/1.17.1-devpreview": { 1089 | "sha512": "PuZxdQXnsOUmy9KWTF3i7ServkSjH0DPCNmdOODEqPGavw51mrr6PnL+cvJtxxB+KD2YOlMOZ4Ce+9Ss9bZ3MA==", 1090 | "type": "package", 1091 | "path": "amazon.cdk.aws.codepipeline/1.17.1-devpreview", 1092 | "files": [ 1093 | ".nupkg.metadata", 1094 | ".signature.p7s", 1095 | "amazon.cdk.aws.codepipeline.1.17.1-devpreview.nupkg.sha512", 1096 | "amazon.cdk.aws.codepipeline.nuspec", 1097 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodePipeline.dll", 1098 | "lib/netcoreapp3.0/Amazon.CDK.AWS.CodePipeline.xml" 1099 | ] 1100 | }, 1101 | "Amazon.CDK.AWS.EC2/1.17.1-devpreview": { 1102 | "sha512": "gYksl0xDixsv3m5WYxFMChkOg4GrqKk/Z3U30BSF9bRMkaMEAU7lZKiOYRmy9fEwQvyJ1hDwi1nq68a6AyoFZw==", 1103 | "type": "package", 1104 | "path": "amazon.cdk.aws.ec2/1.17.1-devpreview", 1105 | "files": [ 1106 | ".nupkg.metadata", 1107 | ".signature.p7s", 1108 | "amazon.cdk.aws.ec2.1.17.1-devpreview.nupkg.sha512", 1109 | "amazon.cdk.aws.ec2.nuspec", 1110 | "lib/netcoreapp3.0/Amazon.CDK.AWS.EC2.dll", 1111 | "lib/netcoreapp3.0/Amazon.CDK.AWS.EC2.xml" 1112 | ] 1113 | }, 1114 | "Amazon.CDK.AWS.ECR/1.17.1-devpreview": { 1115 | "sha512": "Bj7Me/n7thoQrDWEq+UX2Ciot6jQG7OAF2OaQl92ckpyZzTvPFVCFAv+nhXHs4cliweM8JZxtOjIzv7BTOAA+w==", 1116 | "type": "package", 1117 | "path": "amazon.cdk.aws.ecr/1.17.1-devpreview", 1118 | "files": [ 1119 | ".nupkg.metadata", 1120 | ".signature.p7s", 1121 | "amazon.cdk.aws.ecr.1.17.1-devpreview.nupkg.sha512", 1122 | "amazon.cdk.aws.ecr.nuspec", 1123 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECR.dll", 1124 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECR.xml" 1125 | ] 1126 | }, 1127 | "Amazon.CDK.AWS.ECS/1.17.1-devpreview": { 1128 | "sha512": "ZQfNcBqHeeajaBVWyfPK3+Fpr2w5tRwxEe1/Y4MjO58eDs7CkwPjeAJhHVU1JY5dLYUGspOLuPTKjY9hv44V4Q==", 1129 | "type": "package", 1130 | "path": "amazon.cdk.aws.ecs/1.17.1-devpreview", 1131 | "files": [ 1132 | ".nupkg.metadata", 1133 | ".signature.p7s", 1134 | "amazon.cdk.aws.ecs.1.17.1-devpreview.nupkg.sha512", 1135 | "amazon.cdk.aws.ecs.nuspec", 1136 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.dll", 1137 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.xml" 1138 | ] 1139 | }, 1140 | "Amazon.CDK.AWS.ECS.Patterns/1.17.1-devpreview": { 1141 | "sha512": "yosj+ATcbNMVvTcmlmLxdlDvNY6AuAE8aBG7xKcr85v2McInPBxCFA5nXXvsv4HAnWH5GxyezoJl2zKuV4ogNA==", 1142 | "type": "package", 1143 | "path": "amazon.cdk.aws.ecs.patterns/1.17.1-devpreview", 1144 | "files": [ 1145 | ".nupkg.metadata", 1146 | ".signature.p7s", 1147 | "amazon.cdk.aws.ecs.patterns.1.17.1-devpreview.nupkg.sha512", 1148 | "amazon.cdk.aws.ecs.patterns.nuspec", 1149 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.Patterns.dll", 1150 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ECS.Patterns.xml" 1151 | ] 1152 | }, 1153 | "Amazon.CDK.AWS.ElasticLoadBalancing/1.17.1-devpreview": { 1154 | "sha512": "Oe/T+HvW2aH4ib7RJil1j5OivQ8rIRaQAbHbibXReG1gFVpWXNkqWSwem+p0QbKXEsHn3EuixNX/tzfMImAOow==", 1155 | "type": "package", 1156 | "path": "amazon.cdk.aws.elasticloadbalancing/1.17.1-devpreview", 1157 | "files": [ 1158 | ".nupkg.metadata", 1159 | ".signature.p7s", 1160 | "amazon.cdk.aws.elasticloadbalancing.1.17.1-devpreview.nupkg.sha512", 1161 | "amazon.cdk.aws.elasticloadbalancing.nuspec", 1162 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancing.dll", 1163 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancing.xml" 1164 | ] 1165 | }, 1166 | "Amazon.CDK.AWS.ElasticLoadBalancingV2/1.17.1-devpreview": { 1167 | "sha512": "romzsyWuALfsXW9iUQO9sWkdfEg7sFmrXXZ5rgvI0/bNeud2q3QmBwpIcApK2fFLVVOHvGx/+sFsuT1kRSKNSg==", 1168 | "type": "package", 1169 | "path": "amazon.cdk.aws.elasticloadbalancingv2/1.17.1-devpreview", 1170 | "files": [ 1171 | ".nupkg.metadata", 1172 | ".signature.p7s", 1173 | "amazon.cdk.aws.elasticloadbalancingv2.1.17.1-devpreview.nupkg.sha512", 1174 | "amazon.cdk.aws.elasticloadbalancingv2.nuspec", 1175 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancingV2.dll", 1176 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ElasticLoadBalancingV2.xml" 1177 | ] 1178 | }, 1179 | "Amazon.CDK.AWS.Events/1.17.1-devpreview": { 1180 | "sha512": "EqIULUwWzjjkJEZpeRGEjbYzPKe3Iv/SMFm6D4TQr08WVIpSv9UX8zJWMvjq8aTr432ES1wzVuWZeDYDuBBnpw==", 1181 | "type": "package", 1182 | "path": "amazon.cdk.aws.events/1.17.1-devpreview", 1183 | "files": [ 1184 | ".nupkg.metadata", 1185 | ".signature.p7s", 1186 | "amazon.cdk.aws.events.1.17.1-devpreview.nupkg.sha512", 1187 | "amazon.cdk.aws.events.nuspec", 1188 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.dll", 1189 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.xml" 1190 | ] 1191 | }, 1192 | "Amazon.CDK.AWS.Events.Targets/1.17.1-devpreview": { 1193 | "sha512": "NAWKEzsveVa2V/IsysfMYJoC7u0X7sZkJUjgnDcL/X5rZqLGWbfW3M2HUf81NEg6uHDbhkXToOUETc2dMuVaFw==", 1194 | "type": "package", 1195 | "path": "amazon.cdk.aws.events.targets/1.17.1-devpreview", 1196 | "files": [ 1197 | ".nupkg.metadata", 1198 | ".signature.p7s", 1199 | "amazon.cdk.aws.events.targets.1.17.1-devpreview.nupkg.sha512", 1200 | "amazon.cdk.aws.events.targets.nuspec", 1201 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.Targets.dll", 1202 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Events.Targets.xml" 1203 | ] 1204 | }, 1205 | "Amazon.CDK.AWS.IAM/1.17.1-devpreview": { 1206 | "sha512": "S9NzPI9nV9QQ9XanDGUmcV8JpjOoXyroz0llpxPicvYPcv/ELhkTm4PhKXIsoLzfdqKFvghHW07S4BaLaHQZaQ==", 1207 | "type": "package", 1208 | "path": "amazon.cdk.aws.iam/1.17.1-devpreview", 1209 | "files": [ 1210 | ".nupkg.metadata", 1211 | ".signature.p7s", 1212 | "amazon.cdk.aws.iam.1.17.1-devpreview.nupkg.sha512", 1213 | "amazon.cdk.aws.iam.nuspec", 1214 | "lib/netcoreapp3.0/Amazon.CDK.AWS.IAM.dll", 1215 | "lib/netcoreapp3.0/Amazon.CDK.AWS.IAM.xml" 1216 | ] 1217 | }, 1218 | "Amazon.CDK.AWS.KMS/1.17.1-devpreview": { 1219 | "sha512": "7UZRd0TAwjIHuA4a0BdeWYwEfcI9O/sSWLh9i3Vc8vSPPkLCpqm/FalZvgjsdyHpmnSDJtmm/Nu5KhrRxendyA==", 1220 | "type": "package", 1221 | "path": "amazon.cdk.aws.kms/1.17.1-devpreview", 1222 | "files": [ 1223 | ".nupkg.metadata", 1224 | ".signature.p7s", 1225 | "amazon.cdk.aws.kms.1.17.1-devpreview.nupkg.sha512", 1226 | "amazon.cdk.aws.kms.nuspec", 1227 | "lib/netcoreapp3.0/Amazon.CDK.AWS.KMS.dll", 1228 | "lib/netcoreapp3.0/Amazon.CDK.AWS.KMS.xml" 1229 | ] 1230 | }, 1231 | "Amazon.CDK.AWS.Lambda/1.17.1-devpreview": { 1232 | "sha512": "OEujP9ckZBxV08LWkU2VjwNSo3Ahgt+maXHs2pkpCYC2W6w/CLAc+avEnneGwLTOj17UUejDp2bfxVslwa5IKA==", 1233 | "type": "package", 1234 | "path": "amazon.cdk.aws.lambda/1.17.1-devpreview", 1235 | "files": [ 1236 | ".nupkg.metadata", 1237 | ".signature.p7s", 1238 | "amazon.cdk.aws.lambda.1.17.1-devpreview.nupkg.sha512", 1239 | "amazon.cdk.aws.lambda.nuspec", 1240 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Lambda.dll", 1241 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Lambda.xml" 1242 | ] 1243 | }, 1244 | "Amazon.CDK.AWS.Logs/1.17.1-devpreview": { 1245 | "sha512": "6S4Sd9WqYvqgJlrNlj7cYAgdc79fVTH0OK1Mu1QJpc0zAkpR9hTQxG0eDIzsNAykyc9w+9F9iiccq66f2P/bUA==", 1246 | "type": "package", 1247 | "path": "amazon.cdk.aws.logs/1.17.1-devpreview", 1248 | "files": [ 1249 | ".nupkg.metadata", 1250 | ".signature.p7s", 1251 | "amazon.cdk.aws.logs.1.17.1-devpreview.nupkg.sha512", 1252 | "amazon.cdk.aws.logs.nuspec", 1253 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Logs.dll", 1254 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Logs.xml" 1255 | ] 1256 | }, 1257 | "Amazon.CDK.AWS.RDS/1.17.1-devpreview": { 1258 | "sha512": "RRU/bH0sKNkeexRB2JjuyRt8QPjWJRb8fZWqeiNf/BuF8MNZryNfNDxU6xWGEZ0TE2i4Lv6VcVNQB0ALY6fdPQ==", 1259 | "type": "package", 1260 | "path": "amazon.cdk.aws.rds/1.17.1-devpreview", 1261 | "files": [ 1262 | ".nupkg.metadata", 1263 | ".signature.p7s", 1264 | "amazon.cdk.aws.rds.1.17.1-devpreview.nupkg.sha512", 1265 | "amazon.cdk.aws.rds.nuspec", 1266 | "lib/netcoreapp3.0/Amazon.CDK.AWS.RDS.dll", 1267 | "lib/netcoreapp3.0/Amazon.CDK.AWS.RDS.xml" 1268 | ] 1269 | }, 1270 | "Amazon.CDK.AWS.Route53/1.17.1-devpreview": { 1271 | "sha512": "kYwS1Tasj7O5oJ+jUDKSetvu0yduNPvGLUH2qGv6sT3aMgLBCXbXM3vLJoXgYIx/3yy1TVH7r2fRd/2YpLncEw==", 1272 | "type": "package", 1273 | "path": "amazon.cdk.aws.route53/1.17.1-devpreview", 1274 | "files": [ 1275 | ".nupkg.metadata", 1276 | ".signature.p7s", 1277 | "amazon.cdk.aws.route53.1.17.1-devpreview.nupkg.sha512", 1278 | "amazon.cdk.aws.route53.nuspec", 1279 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.dll", 1280 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.xml" 1281 | ] 1282 | }, 1283 | "Amazon.CDK.AWS.Route53.Targets/1.17.1-devpreview": { 1284 | "sha512": "ApXKpvrL9pB53H206Y5RJfIGcfpLThFzg5jr5xoqZ0n1UzLCAcAugCCXyIFJKYRIs1CmVQ5Ttw96sqBEHeGKzw==", 1285 | "type": "package", 1286 | "path": "amazon.cdk.aws.route53.targets/1.17.1-devpreview", 1287 | "files": [ 1288 | ".nupkg.metadata", 1289 | ".signature.p7s", 1290 | "amazon.cdk.aws.route53.targets.1.17.1-devpreview.nupkg.sha512", 1291 | "amazon.cdk.aws.route53.targets.nuspec", 1292 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.Targets.dll", 1293 | "lib/netcoreapp3.0/Amazon.CDK.AWS.Route53.Targets.xml" 1294 | ] 1295 | }, 1296 | "Amazon.CDK.AWS.S3/1.17.1-devpreview": { 1297 | "sha512": "LVHTojmrZZabuuaOYLBIxc0eIqjjhisPK23NvcqwFvVHSK0R5POqRfrYAxdHfMH/t62kzZA+EwN6yR0iFS5ZVw==", 1298 | "type": "package", 1299 | "path": "amazon.cdk.aws.s3/1.17.1-devpreview", 1300 | "files": [ 1301 | ".nupkg.metadata", 1302 | ".signature.p7s", 1303 | "amazon.cdk.aws.s3.1.17.1-devpreview.nupkg.sha512", 1304 | "amazon.cdk.aws.s3.nuspec", 1305 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.dll", 1306 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.xml" 1307 | ] 1308 | }, 1309 | "Amazon.CDK.AWS.S3.Assets/1.17.1-devpreview": { 1310 | "sha512": "3K/jIEw1WIfXs3G9gApd2bKqiEIDckwcg34gCAU16HBjEL+SPplt2CKxuQQ3sUK4ytXnN+e7n1nHVnZXZNXjZg==", 1311 | "type": "package", 1312 | "path": "amazon.cdk.aws.s3.assets/1.17.1-devpreview", 1313 | "files": [ 1314 | ".nupkg.metadata", 1315 | ".signature.p7s", 1316 | "amazon.cdk.aws.s3.assets.1.17.1-devpreview.nupkg.sha512", 1317 | "amazon.cdk.aws.s3.assets.nuspec", 1318 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.Assets.dll", 1319 | "lib/netcoreapp3.0/Amazon.CDK.AWS.S3.Assets.xml" 1320 | ] 1321 | }, 1322 | "Amazon.CDK.AWS.SAM/1.17.1-devpreview": { 1323 | "sha512": "1CgpIGgTRK65Twh0GwWqJC3PaoxuCAqPjfQ/S7ie/MQJ7558GpRE0MTd9B0sO0I8smGdOA911fccrt820nrl9g==", 1324 | "type": "package", 1325 | "path": "amazon.cdk.aws.sam/1.17.1-devpreview", 1326 | "files": [ 1327 | ".nupkg.metadata", 1328 | ".signature.p7s", 1329 | "amazon.cdk.aws.sam.1.17.1-devpreview.nupkg.sha512", 1330 | "amazon.cdk.aws.sam.nuspec", 1331 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SAM.dll", 1332 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SAM.xml" 1333 | ] 1334 | }, 1335 | "Amazon.CDK.AWS.SecretsManager/1.17.1-devpreview": { 1336 | "sha512": "791zzF1ZsstMFHim7m2Zfl5wenbAXQXwPrq7qR7pjESeRiy+B0LyJdNaT8sKuTROxAg8jYKEHSg9gQ/8FrN9uQ==", 1337 | "type": "package", 1338 | "path": "amazon.cdk.aws.secretsmanager/1.17.1-devpreview", 1339 | "files": [ 1340 | ".nupkg.metadata", 1341 | ".signature.p7s", 1342 | "amazon.cdk.aws.secretsmanager.1.17.1-devpreview.nupkg.sha512", 1343 | "amazon.cdk.aws.secretsmanager.nuspec", 1344 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SecretsManager.dll", 1345 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SecretsManager.xml" 1346 | ] 1347 | }, 1348 | "Amazon.CDK.AWS.ServiceDiscovery/1.17.1-devpreview": { 1349 | "sha512": "XMRFewhqC4BLmfuoo+4uNmoiruOQRr4j1Y7/+jeLzmiWLtg+7LfJVbfdgAiKkCZ8IqHbaNMzNKDPwEhPKTRP0g==", 1350 | "type": "package", 1351 | "path": "amazon.cdk.aws.servicediscovery/1.17.1-devpreview", 1352 | "files": [ 1353 | ".nupkg.metadata", 1354 | ".signature.p7s", 1355 | "amazon.cdk.aws.servicediscovery.1.17.1-devpreview.nupkg.sha512", 1356 | "amazon.cdk.aws.servicediscovery.nuspec", 1357 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ServiceDiscovery.dll", 1358 | "lib/netcoreapp3.0/Amazon.CDK.AWS.ServiceDiscovery.xml" 1359 | ] 1360 | }, 1361 | "Amazon.CDK.AWS.SNS/1.17.1-devpreview": { 1362 | "sha512": "/qw2djVnGXt0G2HTKrbIrM0mZHgLcJSwxqAXzVCdnq9dTvcyHK0o5ki2jzokNqxrLC6BFT7MncvmrkINo0mXwA==", 1363 | "type": "package", 1364 | "path": "amazon.cdk.aws.sns/1.17.1-devpreview", 1365 | "files": [ 1366 | ".nupkg.metadata", 1367 | ".signature.p7s", 1368 | "amazon.cdk.aws.sns.1.17.1-devpreview.nupkg.sha512", 1369 | "amazon.cdk.aws.sns.nuspec", 1370 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.dll", 1371 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.xml" 1372 | ] 1373 | }, 1374 | "Amazon.CDK.AWS.SNS.Subscriptions/1.17.1-devpreview": { 1375 | "sha512": "N0UWL/aLQnXzkC2VcBtjI3dvtrVg40Jy2uU6b+1l9TpJ5vVfyy8mcqaycVhI3nlawmxi8GFHFLPwVARlF3blIA==", 1376 | "type": "package", 1377 | "path": "amazon.cdk.aws.sns.subscriptions/1.17.1-devpreview", 1378 | "files": [ 1379 | ".nupkg.metadata", 1380 | ".signature.p7s", 1381 | "amazon.cdk.aws.sns.subscriptions.1.17.1-devpreview.nupkg.sha512", 1382 | "amazon.cdk.aws.sns.subscriptions.nuspec", 1383 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.Subscriptions.dll", 1384 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SNS.Subscriptions.xml" 1385 | ] 1386 | }, 1387 | "Amazon.CDK.AWS.SQS/1.17.1-devpreview": { 1388 | "sha512": "jxB+i/fSrd93Kcd8siOxiwrYmHisk+vV6Exz33udVFdR4mZyKavAMY+/i93imurGBJVzzpw42XMmPdt3UphWMA==", 1389 | "type": "package", 1390 | "path": "amazon.cdk.aws.sqs/1.17.1-devpreview", 1391 | "files": [ 1392 | ".nupkg.metadata", 1393 | ".signature.p7s", 1394 | "amazon.cdk.aws.sqs.1.17.1-devpreview.nupkg.sha512", 1395 | "amazon.cdk.aws.sqs.nuspec", 1396 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SQS.dll", 1397 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SQS.xml" 1398 | ] 1399 | }, 1400 | "Amazon.CDK.AWS.SSM/1.17.1-devpreview": { 1401 | "sha512": "HHSJtgXwHpZoZHmFrXmmX0M+G5ITYFhMSH2pMSwwx6wPFxQt2RvihMbBormUTf3ONaM+2KsWkx2pp29a2jaIcg==", 1402 | "type": "package", 1403 | "path": "amazon.cdk.aws.ssm/1.17.1-devpreview", 1404 | "files": [ 1405 | ".nupkg.metadata", 1406 | ".signature.p7s", 1407 | "amazon.cdk.aws.ssm.1.17.1-devpreview.nupkg.sha512", 1408 | "amazon.cdk.aws.ssm.nuspec", 1409 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SSM.dll", 1410 | "lib/netcoreapp3.0/Amazon.CDK.AWS.SSM.xml" 1411 | ] 1412 | }, 1413 | "Amazon.CDK.AWS.StepFunctions/1.17.1-devpreview": { 1414 | "sha512": "RqkM1x2tGIFVqd4DRqOl1m8U+x6Q9ZzcFQEQRG+iZ/Qtm/k8gHJS3JtoFwRtwMBSRevS7jXt48acJh7DXKVgWg==", 1415 | "type": "package", 1416 | "path": "amazon.cdk.aws.stepfunctions/1.17.1-devpreview", 1417 | "files": [ 1418 | ".nupkg.metadata", 1419 | ".signature.p7s", 1420 | "amazon.cdk.aws.stepfunctions.1.17.1-devpreview.nupkg.sha512", 1421 | "amazon.cdk.aws.stepfunctions.nuspec", 1422 | "lib/netcoreapp3.0/Amazon.CDK.AWS.StepFunctions.dll", 1423 | "lib/netcoreapp3.0/Amazon.CDK.AWS.StepFunctions.xml" 1424 | ] 1425 | }, 1426 | "Amazon.CDK.CXAPI/1.17.1-devpreview": { 1427 | "sha512": "Puau50o3dX7vgZgN5stnec0fktrhIWWnjYo1wlO24nCtT679KASuGAw2estp0THG7IjZCHZt79jxagx10ozuXQ==", 1428 | "type": "package", 1429 | "path": "amazon.cdk.cxapi/1.17.1-devpreview", 1430 | "files": [ 1431 | ".nupkg.metadata", 1432 | ".signature.p7s", 1433 | "amazon.cdk.cxapi.1.17.1-devpreview.nupkg.sha512", 1434 | "amazon.cdk.cxapi.nuspec", 1435 | "lib/netcoreapp3.0/Amazon.CDK.CXAPI.dll", 1436 | "lib/netcoreapp3.0/Amazon.CDK.CXAPI.xml" 1437 | ] 1438 | }, 1439 | "Amazon.CDK.ECR.Assets/1.17.1-devpreview": { 1440 | "sha512": "WJ0Am64L1ntHIss5h9Ah9/qHbdGtRBWAqgfXmD9MnArHf618oZqTokoUp7o4OCclEQXgG9H1wk7eIXprT3aiQg==", 1441 | "type": "package", 1442 | "path": "amazon.cdk.ecr.assets/1.17.1-devpreview", 1443 | "files": [ 1444 | ".nupkg.metadata", 1445 | ".signature.p7s", 1446 | "amazon.cdk.ecr.assets.1.17.1-devpreview.nupkg.sha512", 1447 | "amazon.cdk.ecr.assets.nuspec", 1448 | "lib/netcoreapp3.0/Amazon.CDK.ECR.Assets.dll", 1449 | "lib/netcoreapp3.0/Amazon.CDK.ECR.Assets.xml" 1450 | ] 1451 | }, 1452 | "Amazon.CDK.RegionInfo/1.17.1-devpreview": { 1453 | "sha512": "hqVPK54m86XWgZ55eVo65tWuYFE96oTd0RR7tPPZpshQe5LQhDrZenXG1459CJuBv0JjYY32ljUugy6TIO4jOA==", 1454 | "type": "package", 1455 | "path": "amazon.cdk.regioninfo/1.17.1-devpreview", 1456 | "files": [ 1457 | ".nupkg.metadata", 1458 | ".signature.p7s", 1459 | "amazon.cdk.regioninfo.1.17.1-devpreview.nupkg.sha512", 1460 | "amazon.cdk.regioninfo.nuspec", 1461 | "lib/netcoreapp3.0/Amazon.CDK.RegionInfo.dll", 1462 | "lib/netcoreapp3.0/Amazon.CDK.RegionInfo.xml" 1463 | ] 1464 | }, 1465 | "Amazon.JSII.JsonModel/0.20.7": { 1466 | "sha512": "fFXfvMC8Oje2xK803/69v9RIOUU1R3oSjkoG0sKp1JSO9+ZGupZJNGaAEBHswW03PxL9B66CtrOwohLEJrfAAw==", 1467 | "type": "package", 1468 | "path": "amazon.jsii.jsonmodel/0.20.7", 1469 | "files": [ 1470 | ".nupkg.metadata", 1471 | ".signature.p7s", 1472 | "amazon.jsii.jsonmodel.0.20.7.nupkg.sha512", 1473 | "amazon.jsii.jsonmodel.nuspec", 1474 | "icon.png", 1475 | "lib/netcoreapp3.0/Amazon.JSII.JsonModel.dll" 1476 | ] 1477 | }, 1478 | "Amazon.JSII.Runtime/0.20.7": { 1479 | "sha512": "+Xe1kjm0FbTCf6GoR++j6/kCQCcPspdgqDDUfKt4eiKU3eDRJVCck4z8Bc+dO2YIs95dUZsNxBzHsuic2k+bSg==", 1480 | "type": "package", 1481 | "path": "amazon.jsii.runtime/0.20.7", 1482 | "files": [ 1483 | ".nupkg.metadata", 1484 | ".signature.p7s", 1485 | "amazon.jsii.runtime.0.20.7.nupkg.sha512", 1486 | "amazon.jsii.runtime.nuspec", 1487 | "icon.png", 1488 | "lib/netcoreapp3.0/Amazon.JSII.Runtime.dll" 1489 | ] 1490 | }, 1491 | "Microsoft.Extensions.Configuration/3.0.0": { 1492 | "sha512": "KECbOpM0EySVbKTQDN9o0swdnZpwpdhuYngnnJGzXdcAc+JR1mv7iF4lOyK00KSH8OZjobO0TUeo3mn7J2rdrA==", 1493 | "type": "package", 1494 | "path": "microsoft.extensions.configuration/3.0.0", 1495 | "files": [ 1496 | ".nupkg.metadata", 1497 | ".signature.p7s", 1498 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.dll", 1499 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.xml", 1500 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", 1501 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", 1502 | "microsoft.extensions.configuration.3.0.0.nupkg.sha512", 1503 | "microsoft.extensions.configuration.nuspec" 1504 | ] 1505 | }, 1506 | "Microsoft.Extensions.Configuration.Abstractions/3.0.0": { 1507 | "sha512": "Lge/PbXC53jI1MF2J92X5EZOeKV8Q/rlB1aV3H9I/ZTDyQGOyBcL03IAvnviWpHKj43BDkNy6kU2KKoh8kAS0g==", 1508 | "type": "package", 1509 | "path": "microsoft.extensions.configuration.abstractions/3.0.0", 1510 | "files": [ 1511 | ".nupkg.metadata", 1512 | ".signature.p7s", 1513 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Abstractions.dll", 1514 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Abstractions.xml", 1515 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", 1516 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", 1517 | "microsoft.extensions.configuration.abstractions.3.0.0.nupkg.sha512", 1518 | "microsoft.extensions.configuration.abstractions.nuspec" 1519 | ] 1520 | }, 1521 | "Microsoft.Extensions.Configuration.Binder/3.0.0": { 1522 | "sha512": "iw3UL25Cw9GBILJOs8srwcId2UCz5+BxTu//EN5dO2dOFNtHcNJgnUiqIlmcGi0orIco0pDuDXuIDvhkrY/sGQ==", 1523 | "type": "package", 1524 | "path": "microsoft.extensions.configuration.binder/3.0.0", 1525 | "files": [ 1526 | ".nupkg.metadata", 1527 | ".signature.p7s", 1528 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Binder.dll", 1529 | "lib/netcoreapp3.0/Microsoft.Extensions.Configuration.Binder.xml", 1530 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", 1531 | "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", 1532 | "microsoft.extensions.configuration.binder.3.0.0.nupkg.sha512", 1533 | "microsoft.extensions.configuration.binder.nuspec" 1534 | ] 1535 | }, 1536 | "Microsoft.Extensions.DependencyInjection/3.0.0": { 1537 | "sha512": "yDsuNA/BT4j9qrcRs0NUNHQAJfywFWX18ZZ+shxXJL+/nIfz3vhuRTfnYgvFeQlNBlgmgdSjOcs4ajgoS6Q/Ng==", 1538 | "type": "package", 1539 | "path": "microsoft.extensions.dependencyinjection/3.0.0", 1540 | "files": [ 1541 | ".nupkg.metadata", 1542 | ".signature.p7s", 1543 | "lib/net461/Microsoft.Extensions.DependencyInjection.dll", 1544 | "lib/net461/Microsoft.Extensions.DependencyInjection.xml", 1545 | "lib/netcoreapp3.0/Microsoft.Extensions.DependencyInjection.dll", 1546 | "lib/netcoreapp3.0/Microsoft.Extensions.DependencyInjection.xml", 1547 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", 1548 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", 1549 | "microsoft.extensions.dependencyinjection.3.0.0.nupkg.sha512", 1550 | "microsoft.extensions.dependencyinjection.nuspec" 1551 | ] 1552 | }, 1553 | "Microsoft.Extensions.DependencyInjection.Abstractions/3.0.0": { 1554 | "sha512": "ofQRroDlzJ0xKOtzNuaVt6QKNImFkhkG0lIMpGl7PtXnIf5SuLWBeiQZAP8DNSxDBJJdcsPkiJiMYK2WA5H8dQ==", 1555 | "type": "package", 1556 | "path": "microsoft.extensions.dependencyinjection.abstractions/3.0.0", 1557 | "files": [ 1558 | ".nupkg.metadata", 1559 | ".signature.p7s", 1560 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", 1561 | "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", 1562 | "microsoft.extensions.dependencyinjection.abstractions.3.0.0.nupkg.sha512", 1563 | "microsoft.extensions.dependencyinjection.abstractions.nuspec" 1564 | ] 1565 | }, 1566 | "Microsoft.Extensions.Logging/3.0.0": { 1567 | "sha512": "rxs1i2denq0Sv0XMvAeISK7AskV5x7aihvlIlepJKFfkbE6PgbeXfPOElD0kf3Wr2Roo57ASQa5xUL9LTHWChA==", 1568 | "type": "package", 1569 | "path": "microsoft.extensions.logging/3.0.0", 1570 | "files": [ 1571 | ".nupkg.metadata", 1572 | ".signature.p7s", 1573 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.dll", 1574 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.xml", 1575 | "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", 1576 | "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", 1577 | "microsoft.extensions.logging.3.0.0.nupkg.sha512", 1578 | "microsoft.extensions.logging.nuspec" 1579 | ] 1580 | }, 1581 | "Microsoft.Extensions.Logging.Abstractions/3.0.0": { 1582 | "sha512": "+PsosTYZn+omucI0ff9eywo9QcPLwcbIWf7dz7ZLM1zGR8gVZXJ3wo6+tkuIedUNW5iWENlVJPEvrGjiVeoNNQ==", 1583 | "type": "package", 1584 | "path": "microsoft.extensions.logging.abstractions/3.0.0", 1585 | "files": [ 1586 | ".nupkg.metadata", 1587 | ".signature.p7s", 1588 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", 1589 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", 1590 | "microsoft.extensions.logging.abstractions.3.0.0.nupkg.sha512", 1591 | "microsoft.extensions.logging.abstractions.nuspec" 1592 | ] 1593 | }, 1594 | "Microsoft.Extensions.Logging.Configuration/3.0.0": { 1595 | "sha512": "Z+3mqptSt3pCo0Nl4pmwK+nTpBpRxNe2lFaBCCtsT0bb88GeFKvw6Mg+0IeEgDrfj7h4qzMYRbL5cSFMpENQZA==", 1596 | "type": "package", 1597 | "path": "microsoft.extensions.logging.configuration/3.0.0", 1598 | "files": [ 1599 | ".nupkg.metadata", 1600 | ".signature.p7s", 1601 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Configuration.dll", 1602 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Configuration.xml", 1603 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", 1604 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", 1605 | "microsoft.extensions.logging.configuration.3.0.0.nupkg.sha512", 1606 | "microsoft.extensions.logging.configuration.nuspec" 1607 | ] 1608 | }, 1609 | "Microsoft.Extensions.Logging.Console/3.0.0": { 1610 | "sha512": "0BGjmCi0tES5lYVxd+kXvr7rsnvbeNjTLi5cmgIjvGJkTAcU0qIeJq/E04eCMdjICH1Quo7R/iSc1SIqa2km1g==", 1611 | "type": "package", 1612 | "path": "microsoft.extensions.logging.console/3.0.0", 1613 | "files": [ 1614 | ".nupkg.metadata", 1615 | ".signature.p7s", 1616 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Console.dll", 1617 | "lib/netcoreapp3.0/Microsoft.Extensions.Logging.Console.xml", 1618 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", 1619 | "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", 1620 | "microsoft.extensions.logging.console.3.0.0.nupkg.sha512", 1621 | "microsoft.extensions.logging.console.nuspec" 1622 | ] 1623 | }, 1624 | "Microsoft.Extensions.Options/3.0.0": { 1625 | "sha512": "aZuVhN/TC872Yb55nrb7an82sfSAdNYxIyzu3zbYHOnhwal5hdkBUxzuoYj1khI2sw0tWq6i82i624zEFmiJhg==", 1626 | "type": "package", 1627 | "path": "microsoft.extensions.options/3.0.0", 1628 | "files": [ 1629 | ".nupkg.metadata", 1630 | ".signature.p7s", 1631 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.dll", 1632 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.xml", 1633 | "lib/netstandard2.0/Microsoft.Extensions.Options.dll", 1634 | "lib/netstandard2.0/Microsoft.Extensions.Options.xml", 1635 | "microsoft.extensions.options.3.0.0.nupkg.sha512", 1636 | "microsoft.extensions.options.nuspec" 1637 | ] 1638 | }, 1639 | "Microsoft.Extensions.Options.ConfigurationExtensions/3.0.0": { 1640 | "sha512": "g4V1TXEKUDgOnp1ZKREKSvITYxcUsTqfxNlOaCG7/xlCurLLzFupm+ULkGqIBUIBK+q3kHmt42pVyHwGIcCBmg==", 1641 | "type": "package", 1642 | "path": "microsoft.extensions.options.configurationextensions/3.0.0", 1643 | "files": [ 1644 | ".nupkg.metadata", 1645 | ".signature.p7s", 1646 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", 1647 | "lib/netcoreapp3.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", 1648 | "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", 1649 | "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", 1650 | "microsoft.extensions.options.configurationextensions.3.0.0.nupkg.sha512", 1651 | "microsoft.extensions.options.configurationextensions.nuspec" 1652 | ] 1653 | }, 1654 | "Microsoft.Extensions.Primitives/3.0.0": { 1655 | "sha512": "6gwewTbmOh+ZVBicVkL1XRp79sx4O7BVY6Yy+7OYZdwn3pyOKe9lOam+3gXJ3TZMjhJZdV0Ub8hxHt2vkrmN5Q==", 1656 | "type": "package", 1657 | "path": "microsoft.extensions.primitives/3.0.0", 1658 | "files": [ 1659 | ".nupkg.metadata", 1660 | ".signature.p7s", 1661 | "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.dll", 1662 | "lib/netcoreapp3.0/Microsoft.Extensions.Primitives.xml", 1663 | "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", 1664 | "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", 1665 | "microsoft.extensions.primitives.3.0.0.nupkg.sha512", 1666 | "microsoft.extensions.primitives.nuspec" 1667 | ] 1668 | }, 1669 | "Newtonsoft.Json/12.0.3": { 1670 | "sha512": "6mgjfnRB4jKMlzHSl+VD+oUc1IebOZabkbyWj2RiTgWwYPPuaK1H97G1sHqGwPlS5npiF5Q0OrxN1wni2n5QWg==", 1671 | "type": "package", 1672 | "path": "newtonsoft.json/12.0.3", 1673 | "files": [ 1674 | ".nupkg.metadata", 1675 | ".signature.p7s", 1676 | "LICENSE.md", 1677 | "lib/net20/Newtonsoft.Json.dll", 1678 | "lib/net20/Newtonsoft.Json.xml", 1679 | "lib/net35/Newtonsoft.Json.dll", 1680 | "lib/net35/Newtonsoft.Json.xml", 1681 | "lib/net40/Newtonsoft.Json.dll", 1682 | "lib/net40/Newtonsoft.Json.xml", 1683 | "lib/net45/Newtonsoft.Json.dll", 1684 | "lib/net45/Newtonsoft.Json.xml", 1685 | "lib/netstandard1.0/Newtonsoft.Json.dll", 1686 | "lib/netstandard1.0/Newtonsoft.Json.xml", 1687 | "lib/netstandard1.3/Newtonsoft.Json.dll", 1688 | "lib/netstandard1.3/Newtonsoft.Json.xml", 1689 | "lib/netstandard2.0/Newtonsoft.Json.dll", 1690 | "lib/netstandard2.0/Newtonsoft.Json.xml", 1691 | "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.dll", 1692 | "lib/portable-net40+sl5+win8+wp8+wpa81/Newtonsoft.Json.xml", 1693 | "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.dll", 1694 | "lib/portable-net45+win8+wp8+wpa81/Newtonsoft.Json.xml", 1695 | "newtonsoft.json.12.0.3.nupkg.sha512", 1696 | "newtonsoft.json.nuspec", 1697 | "packageIcon.png" 1698 | ] 1699 | } 1700 | }, 1701 | "projectFileDependencyGroups": { 1702 | ".NETCoreApp,Version=v3.0": [ 1703 | "Amazon.CDK >= 1.17.1-devpreview", 1704 | "Amazon.CDK.AWS.ApplicationAutoScaling >= 1.17.1-devpreview", 1705 | "Amazon.CDK.AWS.ECR >= 1.17.1-devpreview", 1706 | "Amazon.CDK.AWS.ECS >= 1.17.1-devpreview", 1707 | "Amazon.CDK.AWS.ECS.Patterns >= 1.17.1-devpreview", 1708 | "Amazon.CDK.AWS.ElasticLoadBalancingV2 >= 1.17.1-devpreview", 1709 | "Amazon.CDK.AWS.IAM >= 1.17.1-devpreview", 1710 | "Amazon.CDK.AWS.RDS >= 1.17.1-devpreview", 1711 | "Amazon.CDK.AWS.S3 >= 1.17.1-devpreview", 1712 | "Amazon.CDK.AWS.SSM >= 1.17.1-devpreview" 1713 | ] 1714 | }, 1715 | "packageFolders": { 1716 | "/Users/ramansiv/.nuget/packages/": {}, 1717 | "/usr/local/share/dotnet/sdk/NuGetFallbackFolder": {} 1718 | }, 1719 | "project": { 1720 | "version": "1.0.0", 1721 | "restore": { 1722 | "projectUniqueName": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj", 1723 | "projectName": "Todo", 1724 | "projectPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/Todo.csproj", 1725 | "packagesPath": "/Users/ramansiv/.nuget/packages/", 1726 | "outputPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/cdk/src/Todo/obj/", 1727 | "projectStyle": "PackageReference", 1728 | "fallbackFolders": [ 1729 | "/usr/local/share/dotnet/sdk/NuGetFallbackFolder" 1730 | ], 1731 | "configFilePaths": [ 1732 | "/Users/ramansiv/.nuget/NuGet/NuGet.Config" 1733 | ], 1734 | "originalTargetFrameworks": [ 1735 | "netcoreapp3.0" 1736 | ], 1737 | "sources": { 1738 | "https://api.nuget.org/v3/index.json": {} 1739 | }, 1740 | "frameworks": { 1741 | "netcoreapp3.0": { 1742 | "projectReferences": {} 1743 | } 1744 | }, 1745 | "warningProperties": { 1746 | "warnAsError": [ 1747 | "NU1605" 1748 | ] 1749 | } 1750 | }, 1751 | "frameworks": { 1752 | "netcoreapp3.0": { 1753 | "dependencies": { 1754 | "Amazon.CDK": { 1755 | "target": "Package", 1756 | "version": "[1.17.1-devpreview, )" 1757 | }, 1758 | "Amazon.CDK.AWS.ApplicationAutoScaling": { 1759 | "target": "Package", 1760 | "version": "[1.17.1-devpreview, )" 1761 | }, 1762 | "Amazon.CDK.AWS.ECR": { 1763 | "target": "Package", 1764 | "version": "[1.17.1-devpreview, )" 1765 | }, 1766 | "Amazon.CDK.AWS.ECS": { 1767 | "target": "Package", 1768 | "version": "[1.17.1-devpreview, )" 1769 | }, 1770 | "Amazon.CDK.AWS.ECS.Patterns": { 1771 | "target": "Package", 1772 | "version": "[1.17.1-devpreview, )" 1773 | }, 1774 | "Amazon.CDK.AWS.ElasticLoadBalancingV2": { 1775 | "target": "Package", 1776 | "version": "[1.17.1-devpreview, )" 1777 | }, 1778 | "Amazon.CDK.AWS.IAM": { 1779 | "target": "Package", 1780 | "version": "[1.17.1-devpreview, )" 1781 | }, 1782 | "Amazon.CDK.AWS.RDS": { 1783 | "target": "Package", 1784 | "version": "[1.17.1-devpreview, )" 1785 | }, 1786 | "Amazon.CDK.AWS.S3": { 1787 | "target": "Package", 1788 | "version": "[1.17.1-devpreview, )" 1789 | }, 1790 | "Amazon.CDK.AWS.SSM": { 1791 | "target": "Package", 1792 | "version": "[1.17.1-devpreview, )" 1793 | } 1794 | }, 1795 | "imports": [ 1796 | "net461", 1797 | "net462", 1798 | "net47", 1799 | "net471", 1800 | "net472", 1801 | "net48" 1802 | ], 1803 | "assetTargetFallback": true, 1804 | "warn": true, 1805 | "frameworkReferences": { 1806 | "Microsoft.NETCore.App": { 1807 | "privateAssets": "all" 1808 | } 1809 | }, 1810 | "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.0.100/RuntimeIdentifierGraph.json" 1811 | } 1812 | } 1813 | } 1814 | } -------------------------------------------------------------------------------- /webapi/Controllers/Parameters.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace todo_app 4 | { 5 | public class Parameters 6 | { 7 | public string AuroraConnectionString {get;set;} 8 | } 9 | } -------------------------------------------------------------------------------- /webapi/Controllers/TodoController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Microsoft.AspNetCore.Mvc; 4 | using todo_app.Models; 5 | using Newtonsoft.Json; 6 | using Microsoft.Extensions.Options; 7 | 8 | 9 | namespace todo_app.Controllers 10 | { 11 | [Route("api/[controller]")] 12 | public class TodoController : Controller 13 | { 14 | private TodoContext _todoContext; 15 | 16 | public TodoController(IOptions options) 17 | { 18 | Console.WriteLine("ToDo Controller!"); 19 | _todoContext = new TodoContext(options); 20 | } 21 | 22 | // GET: api/values 23 | [HttpGet] 24 | public List Get() 25 | { 26 | return _todoContext.GetAllTodos(); 27 | } 28 | 29 | // GET api/values/5 30 | [HttpGet("{id}")] 31 | public string Get(int id) 32 | { 33 | return "value"; 34 | } 35 | 36 | // POST api/values 37 | [HttpPost] 38 | public void Post([FromBody]Todo todoVal) 39 | { 40 | Console.WriteLine("Entering ToDo Put - " + JsonConvert.SerializeObject(todoVal, Formatting.Indented)); 41 | 42 | if (todoVal != null && !string.IsNullOrEmpty(todoVal.Status) && 43 | !string.IsNullOrEmpty(todoVal.Task)) 44 | { 45 | Console.WriteLine("Saving DBContext! - " + todoVal.Status + " " + todoVal.Task); 46 | _todoContext.SaveTodo(todoVal.Status, todoVal.Task); 47 | } 48 | } 49 | 50 | // PUT api/values/5 51 | [HttpPut("{id}")] 52 | public void Put(int id, [FromBody]string value) 53 | { 54 | } 55 | 56 | // DELETE api/values/5 57 | [HttpDelete("{id}")] 58 | public void Delete(int id) 59 | { 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /webapi/Controllers/ValuesController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | 7 | // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 8 | 9 | namespace todo_app.Controllers 10 | { 11 | [Route("api/[controller]")] 12 | public class ValuesController : Controller 13 | { 14 | // GET: api/values 15 | [HttpGet] 16 | public IEnumerable Get() 17 | { 18 | return new string[] { "value1", "value2" }; 19 | } 20 | 21 | // GET api/values/5 22 | [HttpGet("{id}")] 23 | public string Get(int id) 24 | { 25 | return "value"; 26 | } 27 | 28 | // POST api/values 29 | [HttpPost] 30 | public void Post([FromBody]string value) 31 | { 32 | } 33 | 34 | // PUT api/values/5 35 | [HttpPut("{id}")] 36 | public void Put(int id, [FromBody]string value) 37 | { 38 | } 39 | 40 | // DELETE api/values/5 41 | [HttpDelete("{id}")] 42 | public void Delete(int id) 43 | { 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /webapi/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env 2 | WORKDIR /app 3 | 4 | # Copy csproj and restore as distinct layers 5 | COPY *.csproj ./ 6 | RUN dotnet restore 7 | 8 | # Copy everything else and build 9 | COPY . ./ 10 | RUN dotnet publish -c Release -o out 11 | 12 | # Build runtime image 13 | FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 14 | WORKDIR /app 15 | COPY --from=build-env /app/out . 16 | ENTRYPOINT ["dotnet", "todo-app.dll"] 17 | -------------------------------------------------------------------------------- /webapi/Models/Todo.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace todo_app.Models 3 | { 4 | public class Todo 5 | { 6 | public string Status { get; set; } 7 | 8 | public string Task { get; set; } 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /webapi/Models/TodoContext.cs: -------------------------------------------------------------------------------- 1 | using MySql.Data.MySqlClient; 2 | using System; 3 | using System.Collections.Generic; 4 | using Microsoft.Extensions.Options; 5 | using Microsoft.EntityFrameworkCore; 6 | 7 | namespace todo_app.Models 8 | { 9 | public class TodoContext: DbContext 10 | { 11 | public string ConnectionString { get; set; } 12 | 13 | public TodoContext(IOptions options) 14 | { 15 | this.ConnectionString = options.Value.AuroraConnectionString; 16 | Console.WriteLine("Connection string - " + ConnectionString); 17 | } 18 | 19 | private MySqlConnection GetConnection() 20 | { 21 | return new MySqlConnection(ConnectionString); 22 | } 23 | 24 | public List GetAllTodos() 25 | { 26 | CreateToDosTable(); 27 | List list = new List(); 28 | 29 | using (MySqlConnection conn = GetConnection()) 30 | { 31 | conn.Open(); 32 | MySqlCommand cmd = new MySqlCommand("select * from ToDos", conn); 33 | 34 | using (var reader = cmd.ExecuteReader()) 35 | { 36 | while (reader.Read()) 37 | { 38 | list.Add(new Todo() 39 | { 40 | Status = reader["Status"].ToString(), 41 | Task = reader["Task"].ToString() 42 | }); 43 | } 44 | } 45 | } 46 | return list; 47 | } 48 | 49 | public void SaveTodo(string status, string task) 50 | { 51 | CreateToDosTable(); 52 | using (MySqlConnection conn = GetConnection()) 53 | { 54 | conn.Open(); 55 | MySqlCommand cmd = new MySqlCommand(); 56 | cmd.Connection = conn; 57 | 58 | cmd.CommandText = "INSERT INTO ToDos(status,task) VALUES(?status,?task)"; 59 | cmd.Parameters.Add("?status", MySqlDbType.VarChar).Value = status; 60 | cmd.Parameters.Add("?task", MySqlDbType.VarChar).Value = task; 61 | cmd.ExecuteNonQuery(); 62 | 63 | 64 | } 65 | Console.WriteLine("Succesfully saved values"); 66 | } 67 | 68 | public void CreateToDosTable() 69 | { 70 | using (MySqlConnection conn = GetConnection()) 71 | { 72 | conn.Open(); 73 | MySqlCommand cmd = new MySqlCommand(); 74 | cmd.Connection = conn; 75 | 76 | string createTableSql = "use todo; "; 77 | createTableSql += "create table IF NOT EXISTS ToDos("; 78 | createTableSql += "id MEDIUMINT not null auto_increment,"; 79 | createTableSql += " CreatedTime TIMESTAMP DEFAULT now(),"; 80 | createTableSql += " Status VARCHAR(50),"; 81 | createTableSql += " Task VARCHAR(50),"; 82 | createTableSql += " primary key(id)"; 83 | createTableSql += "); "; 84 | cmd.CommandText = createTableSql; 85 | cmd.ExecuteNonQuery(); 86 | } 87 | Console.WriteLine("Table created successfully"); 88 | } 89 | } 90 | 91 | 92 | } 93 | -------------------------------------------------------------------------------- /webapi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.Extensions.Configuration; 4 | 5 | namespace todo_app 6 | { 7 | public class Program 8 | { 9 | public static void Main(string[] args) 10 | { 11 | CreateWebHostBuilder(args).Build().Run(); 12 | } 13 | 14 | public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 15 | WebHost.CreateDefaultBuilder(args) 16 | .ConfigureAppConfiguration(builder => 17 | { 18 | builder.AddSystemsManager("/Database"); 19 | }) 20 | .UseStartup(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /webapi/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:47913", 8 | "sslPort": 44329 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "api/values", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "todo_app": { 21 | "commandName": "Project", 22 | "launchBrowser": true, 23 | "launchUrl": "api/values", 24 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 25 | "environmentVariables": { 26 | "ASPNETCORE_ENVIRONMENT": "Development" 27 | } 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /webapi/Startup.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Builder; 2 | using Microsoft.AspNetCore.Hosting; 3 | using Microsoft.AspNetCore.Mvc; 4 | using Microsoft.Extensions.Configuration; 5 | using Microsoft.Extensions.DependencyInjection; 6 | 7 | namespace todo_app 8 | { 9 | public class Startup 10 | { 11 | public Startup(IConfiguration configuration) 12 | { 13 | Configuration = configuration; 14 | } 15 | 16 | public IConfiguration Configuration { get; } 17 | 18 | // This method gets called by the runtime. Use this method to add services to the container. 19 | public void ConfigureServices(IServiceCollection services) 20 | { 21 | services.Configure(Configuration.GetSection("Config")); 22 | services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 23 | } 24 | 25 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 26 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) 27 | { 28 | if (env.IsDevelopment()) 29 | { 30 | app.UseDeveloperExceptionPage(); 31 | } 32 | else 33 | { 34 | // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. 35 | app.UseHsts(); 36 | } 37 | 38 | //Accept All HTTP Request Methods from all origins 39 | app.UseCors(builder =>builder.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod()); 40 | app.UseHttpsRedirection(); 41 | app.UseMvc(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /webapi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Debug", 5 | "System": "Information", 6 | "Microsoft": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webapi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Warning" 5 | } 6 | }, 7 | "AllowedHosts": "*" 8 | } 9 | -------------------------------------------------------------------------------- /webapi/obj/todo-app.csproj.nuget.cache: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "dgSpecHash": "hS6d/EbNJBNDRcIzYU9xBNjnLUlIbDsQY88NK6bYfruC1hvWuOKKOm/nC8vpnXB27gTVclPDJrxp5XlwVE8J7Q==", 4 | "success": true 5 | } -------------------------------------------------------------------------------- /webapi/obj/todo-app.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": 1, 3 | "restore": { 4 | "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/webapi/todo-app.csproj": {} 5 | }, 6 | "projects": { 7 | "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/webapi/todo-app.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/webapi/todo-app.csproj", 11 | "projectName": "todo-app", 12 | "projectPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/webapi/todo-app.csproj", 13 | "packagesPath": "/Users/ramansiv/.nuget/packages/", 14 | "outputPath": "/Users/ramansiv/Documents/Projects/BLOG/GITHUB/aws-netcoreapi-aurora-cdk/webapi/obj/", 15 | "projectStyle": "PackageReference", 16 | "fallbackFolders": [ 17 | "/usr/local/share/dotnet/sdk/NuGetFallbackFolder" 18 | ], 19 | "configFilePaths": [ 20 | "/Users/ramansiv/.nuget/NuGet/NuGet.Config" 21 | ], 22 | "originalTargetFrameworks": [ 23 | "netcoreapp3.0" 24 | ], 25 | "sources": { 26 | "https://api.nuget.org/v3/index.json": {} 27 | }, 28 | "frameworks": { 29 | "netcoreapp3.0": { 30 | "projectReferences": {} 31 | } 32 | }, 33 | "warningProperties": { 34 | "warnAsError": [ 35 | "NU1605" 36 | ] 37 | } 38 | }, 39 | "frameworks": { 40 | "netcoreapp3.0": { 41 | "dependencies": { 42 | "AWSSDK.SimpleSystemsManagement": { 43 | "target": "Package", 44 | "version": "[3.3.106, )" 45 | }, 46 | "Amazon.Extensions.Configuration.SystemsManager": { 47 | "target": "Package", 48 | "version": "[1.2.0, )" 49 | }, 50 | "MySql.Data": { 51 | "target": "Package", 52 | "version": "[8.0.17, )" 53 | }, 54 | "MySql.Data.EntityFrameworkCore": { 55 | "target": "Package", 56 | "version": "[8.0.17, )" 57 | } 58 | }, 59 | "imports": [ 60 | "net461", 61 | "net462", 62 | "net47", 63 | "net471", 64 | "net472", 65 | "net48" 66 | ], 67 | "assetTargetFallback": true, 68 | "warn": true, 69 | "frameworkReferences": { 70 | "Microsoft.AspNetCore.App": { 71 | "privateAssets": "none" 72 | }, 73 | "Microsoft.NETCore.App": { 74 | "privateAssets": "all" 75 | } 76 | }, 77 | "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/3.0.100/RuntimeIdentifierGraph.json" 78 | } 79 | } 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /webapi/obj/todo-app.csproj.nuget.g.props: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | NuGet 6 | $(MSBuildThisFileDirectory)project.assets.json 7 | /Users/ramansiv/.nuget/packages/ 8 | /Users/ramansiv/.nuget/packages/;/usr/local/share/dotnet/sdk/NuGetFallbackFolder 9 | PackageReference 10 | 5.3.0 11 | 12 | 13 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 14 | 15 | 16 | /Users/ramansiv/.nuget/packages/newtonsoft.json/10.0.3 17 | /Users/ramansiv/.nuget/packages/awssdk.core/3.3.103.31 18 | /Users/ramansiv/.nuget/packages/awssdk.simplesystemsmanagement/3.3.106 19 | 20 | -------------------------------------------------------------------------------- /webapi/obj/todo-app.csproj.nuget.g.targets: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath) 5 | 6 | -------------------------------------------------------------------------------- /webapi/todo-app.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp2.2 5 | InProcess 6 | todo_app 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | --------------------------------------------------------------------------------