aws cdk环境搭建使用vscode+docker插件

希望测试coding但是又不想配置cdk环境,本文使用vscode+dockers的方式在ec2上快速启动cdk开发环境,便于复用和快速测试

启动amazonlinux容器运行awscli命令可以看到,容器能够从宿主机上获取元数据信息,即可以直接使用ec2的凭证

bash-4.2# aws sts get-caller-identity
{
    "UserId": "AROAQRIBWRJKKIG7SFQ6E:i-017ff62b060a71f0a",
    "Account": "xxxxxxx",
    "Arn": "arn:aws-cn:sts::xxxxxxxxx:assumed-role/MyEc2AdministratorAccess/i-017ff62b060a71f0a"
}

拉取镜像,关于node的不同版本

$ docker pull node:16.18.0
$ docker images
REPOSITORY    TAG       IMAGE ID       CREATED      SIZE
amazonlinux   latest    24608685b402   2 days ago   164MB
node          16.18.0   147af8719073   9 days ago   911MB

查看node镜像的入口,除了设定node环境外,最后的命令是exec "$@",我们可以自定义cmd,由于要持续运行,可以设置为sleep

# cat /usr/local/bin/docker-entrypoint.sh
#!/bin/sh
set -e

# Run command with node if the first argument contains a "-" or is not a system command. The last
# part inside the "{}" is a workaround for the following bug in ash/dash:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264
if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then
  set -- node "$@"
fi

exec "$@"

将host的codeing目录外挂在hellocdk目录下,注入启动脚本并sleep infinity

#!/bin/bash
set -ex
export CONTAINER_CDK_HOME=hellocdk
export INIT_CDK_HOME=/home/ec2-user/init.sh
cat > $INIT_CDK_HOME << EOF
#!/bin/bash
npm i -g cdk
mkdir $CONTAINER_CDK_HOME && cd $CONTAINER_CDK_HOME
cdk --version
cdk init --language javascript
sleep infinity
EOF
sudo docker run --detach \
  --name hellocdk \
  --user root \
  --restart always \
  -v $INIT_CDK_HOME:/init.sh \
  node:16.18.0 \
  bash "/init.sh"

当然也可以写成dockerfile打包为image
以上方法虽然能够创建cdk项目,但是只能使用nodejs,不过cdk本身是使用jsii进行异构部分的衔接,所以个人觉得最好还是用js

使用vscode attach

上面的环境已经搭建完毕,之后当然可以通过以下的方式进入容器中进行编辑。但是我们可以使用vscode本身的attach container功能直接在容器内部开发

docker exec -it xxxxx bash

安装docker插件和microsoft的remote系列插件,然后直接attach到容器中。vscode会在容器中安装类似agent的东西
在这里插入图片描述
进入创建好的cdk项目目录,创建简单的测试
在这里插入图片描述
执行部署成功
在这里插入图片描述
查看堆栈
在这里插入图片描述

posted @ 2022-10-23 19:19  zhaojie10  阅读(52)  评论(0)    收藏  举报  来源