---
# System prepended metadata

title: 'AWS CDK 環境架設(CDK,AWS CLI)、Deploy'
tags: [C#, AWS, CDK]

---

# AWS CDK 環境架設(CDK,AWS CLI)、Deploy

CDK全名 AWS Cloud Development Kit，主要可以讓你在AWS帳戶上建立一個**CloudFormation**

這個**CloudFormation**內可以新建一個Stack，我們只要透過程式指令就能在Stack內創造各種AWS Service，達到在不同主機、不同使用者的狀況下，能夠完整複製產品專案環境。

先架設CDK環境，要先安裝Node、Npm，

這邊步驟可以參考[第一個 AWS CDK 專案與參考資源分享](https://ithelp.ithome.com.tw/articles/10238801)

打開Powershell，檢查Node、Npm版本

```bash=
$ node -v
```
```bash=
$ npm -v
```

如果沒有安裝的話，可以參考

[下載| Node.js](https://nodejs.org/zh-tw/download/)

Node.js有內建npm

接下來安裝cdk

```bash=
$ npm i -g aws-cdk
```

接下來找個新增一個資料夾，在資料夾內Init cdk

```bash=
$ mkdir docs

$ cd docs

$ cdk init sample-app --language=csharp
```

**注意!!!Powershell也許會出現錯誤**

是因為你安裝的cdk沒有經過windows認證，出於安全自動阻擋程式執行

```bash=
cdk : File C:\Users\{User}\AppData\Roaming\npm\cdk.ps1 cannot be loaded. 
The file C:\Users\{User}\AppData\Roaming\npm\cdk.ps1 is not digitally signed. 
You cannot run this script on the current system.
```

這個時候輸入
```bash=
$ Set-ExecutionPolicy -Scope Process -ExecutionPolicy  ByPass
```
參考[PowerShell is not digitally signed – Fix it now](https://bobcares.com/blog/powershell-is-not-digitally-signed/)


繼續，這個時候就能用Visual Studio進行專案撰寫

開啟專案，專案sln檔 在 docs/src/Docs.sln

----

在開始寫專案之前，先到AWS上創帳號這就不用多說了

[雲端運算服務– Amazon Web Services (AWS)](https://aws.amazon.com/tw/)

創好帳號後，到右上角按名字 > My Security Credentials

找到頁面中**存取金鑰 (存取金鑰 ID 和私密存取金鑰)**

建立新的存取金鑰，會拿到Public Key和Private Key

## 一定要好好保存!!

接下來安裝AWS CLI

[AWS 命令列界面](https://aws.amazon.com/tw/cli/)

直接下載安裝，沒難度

到Powershell，看看能不能用
```bash=
$ aws
```

可以的話，先設定帳戶

```bash=
$ aws configure
```

輸入剛剛拿到的Public Key和Private Key

Region就輸入us-east-1

output Format不用理會

### 接下來就開始寫專案吧!!

----
## Deploy

寫好之後打開Powershell，到cdk的專案資料夾

```bash=
$ cdk bootstrap   //地區設定初始化
$ cdk diff        //看本次改動與之前有何不同
$ cdk synth       //產出YAML格式
$ cdk deploy      //將Stack內容開始發布於AWS CloudFormation
```

# 測完記得Destory，要收錢的!

```bash=
$ cdk destroy
```

參考連結:
* [第一個 AWS CDK 專案與參考資源分享](https://ithelp.ithome.com.tw/articles/10238801)
* [PowerShell is not digitally signed – Fix it now](https://bobcares.com/blog/powershell-is-not-digitally-signed/)
###### tags: `AWS`,`CDK`,`C#`
