Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CloudShellをIaC実行基盤として考える

濱田孝治
December 29, 2020

 CloudShellをIaC実行基盤として考える

re:Invent2020で待望のAWS版CloudShellが発表されました。いろんな使い方が想定されていますが、この資料では、AWS CloudShellをinfrastructure as Codeの実行基盤として使うときに、従来の方法と比較して考慮や注意が必要な点を纏めています。

濱田孝治

December 29, 2020
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. CloudShellを
    IaC実⾏基盤として考える
    by ハマコー
    1

    View Slide

  2. 2
    @hamako9999
    ハマコー

    View Slide

  3. 3
    IaC実⾏基盤ってなんやねん︖

    View Slide

  4. 4
    IaCとは
    Infrastructure as Code(インフラをコードで定義)
    • CloudFormation
    • Terraform
    • AWS Cloud Development Kit(AWS CDK)
    • Pulumi
    コードはリポジトリに格納されバージョン管理される

    View Slide

  5. 5
    IaC実⾏基盤とは
    インフラのコードを実⾏する場所
    • CloudFormation
    • create-stack
    • Terraform
    • terraform plan
    • AWS Cloud Development Kit(AWS CDK)
    • cdk deploy
    • Pulumi
    • pulumi up

    View Slide

  6. 6
    IaC実⾏基盤の代表例と
    Pros and Cons

    View Slide

  7. 7
    IaC実⾏基盤の代表例とPros and Cons
    構成 内容 Pros and Cons
    作業⽤
    クライアントPC
    • インフラ管理者のクライアントPCから
    コード実⾏
    • 柔軟性は⾼いが実⾏環境を統⼀しづらい
    • 往々にして実⾏コードとリポジトリがずれ

    EC2
    (SSH接続)
    • EC2にSSHでログインして、コード実⾏ • IaC実⾏権限の管理が煩雑(SSH秘密鍵と
    IAMの2重管理)
    • EC2の料⾦が気になる
    EC2
    (セッションマネー
    ジャー接続)
    • EC2にセッションマネージャーでログイ
    ンして、コード実⾏
    • SSH接続よりマシ
    • EC2の料⾦が気になる
    Cloud9 • Cloud9にログインして、コード実⾏ • そもそもCloud9は開発環境だから使う意
    味なさそう
    リポジトリから
    ⾃動適⽤
    • プルリクエストでコードのテスト
    • エラーなければ特定ブランチマージから
    ⾃動デプロイ
    • アプリケーションデプロイフローの流れ
    をインフラコードに適⽤
    • ⼀番オシャレで今どき
    • 実⾏コードがリポジトリと同⼀なのはすご
    く安⼼
    • 構築が⼤変。terraformは良いが、CLI体系が
    変なCloudFormationとかは地獄

    View Slide

  8. 8
    CloudShellは
    IaC実⾏基盤として使えるか︖

    View Slide

  9. 9
    IaC実⾏基盤として使うためにきになること
    1. 実⾏権限
    2. 料⾦
    3. 実⾏ログ
    4. IaC実⾏のための前準備

    View Slide

  10. 10
    1.実⾏権限
    マネジメントコンソールアクセス時の実⾏権限をそのま
    ま使うため、ユーザー管理をIAMに統⼀できる
    AWS SSOユーザーでも問題なく権限を利⽤可能

    View Slide

  11. 11
    2.料⾦
    「各リージョンで最⼤10個のシェルを同時に無料で利
    ⽤可能」
    ということは実質無料

    View Slide

  12. 12
    3.実⾏ログ
    ヒストリーは残るが実⾏ログは⾃前で残す必要あり
    • cat $HISTFILE
    CloudShellは中⾝はFargateっぽいので、awslogsド
    ライバーからのCloudWatch Logsはそのうち対応され
    る匂いがするので、それを待ちましょう

    View Slide

  13. 13
    4.IaC実⾏のための前準備
    CloudFormationの場合
    • IaCのコード
    • CodeCommit︓IAMの権限でそのまま”git clone”
    • GitHub︓認証させるのがめんどくさいため、GitHubプッシュ時
    に⾃動でS3コピーしておいて、CloudShellから”aws s3 cp”
    • 注意︓homeディレクトリは容量が1Gなのと、IaCコードはテ
    ンポラリなので/tmp配下とかの利⽤を推奨
    • CloudFormationの実⾏
    • aws cli v2がそのまま使えるので、その前提のシェルから実⾏
    できるなら問題なし
    • aws cli v2の最新バージョンの反映にどのぐらいタイムラグあ
    るか不明なので、不安なら都度アップデートしましょう

    View Slide

  14. 14
    4.IaC実⾏のための前準備
    Terraformの場合
    • IaCのコード
    • CloudFormationと同じ
    • Terraformの実⾏
    • 公式の「Install Terraform」のLinux版はそのまま動いた
    • ブートストラップ的なシェルにいれておけば⼿間なく準備でき
    そう
    • tfstateはそのアカウントのS3に⼊れておく前提

    View Slide

  15. 15
    4.IaC実⾏のための前準備
    Q︓IaC実⾏環境のためにコンテナは利⽤できないの
    か︖

    View Slide

  16. 16
    4.IaC実⾏のための前準備
    Q︓IaC実⾏環境のためにコンテナは利⽤できないの
    か︖
    A︓CloudShellはそもそもコンテナベース。バイナリ
    インストールしてあれこれやってみましたが、Docker
    がそもそも使えないっぽい。深⼊りは怖いのでやってな

    View Slide

  17. 17
    結論
    CloudShellは
    IaC実⾏基盤として使えるのか︖

    View Slide

  18. 18
    結論
    「⼤丈夫だ、問題ない」

    View Slide

  19. 19
    まとめ
    いくらか制限はあるが、その制限をわりきって使うのは
    問題なさそう
    • 実⾏ログをきちんと残す仕組みを構築
    • 実⾏権限や履歴をCloudTrailで管理する
    • まずはステージングでやってみようね♡

    View Slide