4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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


### 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のデプロイが可能

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

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

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?