LoginSignup
3
3

More than 3 years have passed since last update.

AWS CloudShellでAWS CDK (Python & Pipenv)のデプロイするときの準備メモ

Last updated at Posted at 2021-01-26

やりたいこと

  • AWS CDKのデプロイをAWS CloudShellからやりたい
    • CLIでの接続が難しい、MFAが必要な環境やSAMLでSSOしている環境でも、AWSコンソールからさっと開いてデプロイできる

ポイント

  • AWS CloudShellは$HOMEの外部にインストールしたツールは永続化されない
  • $HOME内の永続化ストレージ(上限1GB)に必要なツールをインストールすることで、繰り返しcdk deployを実行する際にパッケージの再インストールが必要なくなる

前提環境

  • AWS CDKをPythonで書いている
  • Pythonのパッケージリスト管理にpipenvを使っている
  • AWS CDKのコードをGitHubなどインターネット経由で接続できるリポジトリにpushしている

準備

リポジトリ

  • AWSコンソールからAWS CloudShellを起動する
  • 自分のリポジトリをcloneする
    $ git clone <your_repogitory_url>

pipenv

  • AWS CloudShellにはpython3,pip3はあるがpipenvが導入されていない
    普通にsudo pip3 installでインストールすると永続化されないので$HOME配下にインストールする
    $ pip3 install pipenv --user
  • PipfileのあるCDKアプリのディレクトリに移動しPythonパッケージを一括インストールする
    Pipfileに記載のPythonバージョンとAWS CloudShellにインストールされたバージョンが異なる場合があるが、コードに互換性がある場合はパスを指定することで警告を無視してインストールする
    $ pipenv install --python /usr/bin/python3
  • pipenvの仮想環境にスイッチすることで、 $HOME 配下のパッケージにパスが通った状態になる
    $ pipenv shell

cdkコマンド

  • AWS CloudShellにはnode,npmコマンドはあるがcdkコマンドは導入されていない。
    普通にsudo npm install -gでインストールすると永続化されないので$HOME配下にインストールする
    cdk.jsonが配置されたCDKアプリのディレクトリでインストールする( node_modules/配下は.gitignoreされている前提)
    $ npm install aws-cdk
  • グローバルにインストールされていないので、cdkコマンドはnpxコマンドを介して利用する
    $ npx cdk list

利用

AWS CloudShellを起動するたび、以下を実行することでパッケージの再インストールなしにCDKのデプロイが可能

$ cd <cdk_app_directory>
$ pipenv shell
$ npx cdk list
$ npx cdk diff <stack_name>
$ npx cdk deploy <stack_name>

快適!!!
パッケージが全て$HOME配下に導入されるので、ディスク容量の上限には注意。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3