[AWS]AWS CDK (雲端開發套件)
CDK是一套開放原始碼軟體開發架構, 使用程式設計師熟悉的程式設計語言為您的雲端應用程式資源進行模型分析和佈建.
簡單來說它就是使用程式語言去建立CloudFormation Template佈建AWS的資源.
目前提供了Python, TypeScript, Java以及.Net撰寫.
可參閱官方說明
廢話不多說, 直接Demo.
安裝 aws-cdk
請先安裝好 npm 這個套件
在Mac環境
$brew install node
安裝 cdk 與 python cdk core
$npm install -g aws-cdk
$pip install --upgrade aws-cdk.core
可以搭配本機的AWS profile
e.g. :
$cdk deploy myStack --profile test
建立資料夾 & 初始化你的cdk app
$mkdir -p someapp
$cdk init --language python
切換至virtualenv環境
$source .env/bin/active
$pip install -r requirements.txt
列出cdk app
$cdk ls
s3 範例
先安裝s3 套件
$pip install aws-cdk.aws-s3
切換至 someapp/cdk 路徑
$cd someapp/cdk
編輯 cdk_stack.py
vim cdk_stack.py
會看到類似下方的Code
from aws_cdk import core
class CdkStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# The code that defines your stack goes here
新增Code, 如下方
from aws_cdk import core, aws_s3 as s3, aws_ec2 as ec2
class CdkStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# The code that defines your stack goes here
bucket = s3.Bucket(self, "bucketName", versioned = True)
寫好後切換到上一層並下synth的指令
$cd ../
$cdk synth
就會看到像下方的回應
Resources:
bucketNameAndID:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
UpdateReplacePolicy: Retain
DeletionPolicy: Retain
Metadata:
aws:cdk:path: cdk/bucketName/Resource
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=1.3.0,@aws-cdk/aws-cloudwatch=1.6.0,@aws-cdk/aws-ec2=1.6.0,@aws-cdk/aws-events=1.6.0,@aws- cdk/aws-iam=1.6.0,@aws-cdk/aws-kms=1.6.0,@aws-cdk/aws-s3=1.6.0,@aws-cdk/aws-ssm=1.6.0,@aws-cdk/core=1.6.0,@aws-cdk/cx-api=1.6.0,@aws-cdk/region-info=1.6.0,jsii-runtime=Python/3.7.4
最後就可以下deploy指令去部署了
$cdk deploy --profile test
大概等個幾分鐘, 就會回報說部署好了
cdk: deploying...
cdk: creating CloudFormation changeset...
0/3 | 11:46:23 AM | CREATE_IN_PROGRESS | AWS::S3::Bucket | WeiTestBucket2 (buchetNameAndID)
0/3 | 11:46:24 AM | CREATE_IN_PROGRESS | AWS::S3::Bucket | WeiTestBucket2 (buchetNameAndID) Resource creation Initiated
1/3 | 11:46:45 AM | CREATE_COMPLETE | AWS::S3::Bucket | WeiTestBucket2 (buchetNameAndID)
1/3 | 11:46:46 AM | UPDATE_COMPLETE_CLEA | AWS::CloudFormation::Stack | cdk
1/3 | 11:46:48 AM | DELETE_SKIPPED | AWS::S3::Bucket | WeiTestBucket52DA2F59
2/3 | 11:46:49 AM | UPDATE_COMPLETE | AWS::CloudFormation::Stack | cdk
✅ cdk
Stack ARN:
arn:aws:cloudformation:us-east-1:0123456789:stack/cdk/blah-blah-blah-blah
接著就用aws s3 指令去查詢剛剛建立的bucket是否有存在
$aws s3 ls
2019-08-29 11:46:25 cdk-buchetNameAndID-1qaz2wsx3edc4rfv