コード忍者として基盤になる方法



EC 2展開の洗練
前の記事では、AWS CDKを使ってEC 2仮想マシンの基本セットを行った.私たちの目標は次のとおりでした.
  • EC 2インスタンス
  • このインスタンスはLinuxを実行し、簡単にするためにアマゾンLinuxを選びます
  • インスタンスはインターネットから到達できない
  • AWSコンソールのコマンドラインプロンプトからログインしてマシンにアクセスすることができます.
  • 既存のVPCとサブネットを使うべきです.
  • 我々は、マシンが終了する可用性ゾーンを気にしない.
  • あなたが前の記事を読んでいないならば、私はあなたを推薦します.あなたがそこで行われるとき、ここに戻ってください!
    ボールドのゴールは前の記事で我々が管理していたものだったので、今私たちは1つのアイテムをリストに残しました- AWSコンソールを通してマシンにログインすることができて、まだマシンを秘密にしていて、インターネットから届かないようにすることができます.

    ログインへの道-歴史レッスン
    EC 2の昔は、EC 2仮想マシンにログインするために、常にキーペアを作成したり再利用したりします.そのキーペアに関連付けられているキーデータは、あなたがダウンロードしたもので、時には同じマシンへのアクセスを必要とする他の同僚と共有していたかもしれません.
    これは多くの理由のための面倒で面倒なアプローチでしたが、長い間、かなりの唯一のアプローチが利用できました.他のパブリック・クラウド・ベンダーはより良い解決策を提供しました.
    仮想マシンで使用するアプローチは、AWSシステムマネージャサービスの機能を利用し、名前セッションマネージャを使用することです.このサービスは、トラフィックのセキュリティグループを開くことなくEC 2インスタンスへのトラフィックをトンネルすることができます.
    代わりに、AWSシステムマネージャはEC 2仮想マシンからAWSシステムマネージャサービスに接続するエージェントを持っています.ログインしたいユーザはAWSシステムマネージャサービスと通信し、システムマネージャエージェントがシステムマネージャ自身に確立した接続を介してトラフィックを転送できます.
    幸いにも、私たちはAmazon Linux最新版を使用しています.我々がする必要があることはアイデンティティとアクセス管理(IAM)許可をEC 2仮想マシンに加えることです.

    インスタンスプロファイル
    AWSにはインスタンスプロファイルと呼ばれるものがあります.IAMロールの形式でIAMパーミッションのセットをEC 2インスタンスに関連付ける構成です.これにより、EC 2インスタンスで実行されているすべてのソフトウェアでIAMロールが許可されているサービスを使用できます.任意のアクセスキーや秘密情報の必要はありませんインスタンス自体に格納される.
    したがって、この機能を使用することによって、私たちの仮想のシステムマネージャエージェントが私たちがマシンにログインするのを許容する操作を実行するのを許すことができます.AWSコンソール経由で接続を許可するために必要なアクセス許可が必要です.完全な管理権限があれば、それらのパーミッションを持っています.
    AWSコンソール経由でそのようなアクセスを許可するためのより詳細なアクセス許可は、この特定の機能に関するより詳細な記事については、この記事の範囲外です.

    IAMロールの解剖
    IAMの役割に含める必要がある二つのことがあります.
  • 誰がその役を演じることができる
  • システムマネージャーセッションマネージャを使用するためのタスクを実行するためにどのパーミッションが必要ですか
  • EC 2インスタンスをシステムマネージャと通信するために使用しているので、その役割を担うことができるEC 2サービス自体です.セッションマネージャが動作するために必要な権限がいくつかありますが、幸運にもAWSが提供する定義済みのポリシーを使うことができます.このポリシーには名前がAmazonSmalledInstanceCoreがあります.この情報を使用すると、AWS CDKコードで必要なIAMロールを作成できます.
    const role = new Role(stack, 'ec2-role', {
        assumedBy: new ServicePrincipal('ec2.amazonaws.com'),
        managedPolicies: [ ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore') ],
    });
    
    次に、このロールを作成するEC 2インスタンスにアタッチする必要があります.
    const instance = new Instance(stack, 'my-ec2', {
        instanceType: InstanceType.of(InstanceClass.T2, InstanceSize.MICRO),
        machineImage: MachineImage.latestAmazonLinux(),
        role,
        vpc,
    });
    
    つまり、完全なコードは次のようになります.
    import {App, Stack} from 'aws-cdk-lib';
    import {Instance, InstanceClass, InstanceSize, InstanceType, MachineImage, Vpc} from 'aws-cdk-lib/aws-ec2';
    import {ManagedPolicy, Role, ServicePrincipal} from 'aws-cdk-lib/aws-iam';
    
    const app = new App();
    const stack = new Stack(app, 'my-stack', {
        env: {
            account: process.env.CDK\_DEFAULT\_ACCOUNT,
            region: process.env.CDK\_DEFAULT\_REGION,
        },
    });
    
    const role = new Role(stack, 'ec2-role', {
    assumedBy: new ServicePrincipal('ec2.amazonaws.com'),
    
    managedPolicies: [ ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore') ],
    
    });
    
    const vpc = Vpc.fromLookup(stack, 'my-vpc', {
        isDefault: true,
    });
    
    const instance = new Instance(stack, 'my-ec2', {
        instanceType: InstanceType.of(InstanceClass.T2, InstanceSize.MICRO),
        machineImage: MachineImage.latestAmazonLinux(),
        role,
        vpc,
    });
    
    このコードの改良により、CDK配備を実行してEC 2インスタンスを再度展開できます.数分後、EC 2インスタンスが配備され、実行中です.さて、AWSコンソールにログインし、実行中のインスタンスでEC 2ダッシュボードに行けば、以下のようなビューが表示されます.左側のチェックボックスのインスタンスを選択し、接続ボタンをクリックします.

    仮想マシンインスタンスに接続するいくつかのオプションで別のページを取得します.この場合、「セッションマネージャー」タブを選択します.セットアップが予想通りに働いたならば、一番下の右のConnectボタンは明確な色を持っていて、灰色にされてはいけません.

    この接続ボタンをクリックして新しいページ/タブを開き、コマンドラインプロンプトを使用してください.今、仮想マシンのインスタンスに接続している!
    お気軽に再生し、マシン自体の周りを見て、ちょうどセッションを終了し、コマンドラインのセッションを終了する出口コマンドのドアを実行してください.


    最後の言葉
    我々がここでした最後の追加は、我々がAWS CDKを使用してコード・タスクとしてこの初期の基盤のために持っていたすべてのゴールを完了するのを許しました.よくできた!
  • EC 2インスタンス
  • このインスタンスはLinuxを実行し、簡単にするためにアマゾンLinuxを選びます
  • インスタンスはインターネットから到達できない
  • AWSコンソールのコマンドラインプロンプトからログインしてマシンにアクセスすることができます.
  • 既存のVPCとサブネットを使うべきです.
  • 我々は、マシンが終了する可用性ゾーンを気にしない.
  • 仮想マシンインスタンスを削除するにはCDK Destroyコマンドを使用してください.私たちがこれまでにこのシリーズでカバーしたいくつかの貴重な教訓があります:
  • init , bootstrap , synth , deploy , destroyを含むcdkコマンドラインツールのいくつかのキーコマンド.
  • 既存のVPC情報をインポートする方法.
  • 新しいEC 2仮想マシンを作成する方法
  • マシン上のソフトウェアがAWSサービスを使用できるように、パーミッション付きのIAMロールの作成と接続方法
  • AWSアカウントと領域をスタックに設定する方法.
  • それは非常にいくつかのものを起動すると、あなたは自分自身を誇りにする必要がありますこのすべてを行っている!
    次の記事では、コンテナの世界に飛び込みます.