コード忍者として基盤になる方法
11794 ワード
EC 2展開の洗練
前の記事では、AWS CDKを使ってEC 2仮想マシンの基本セットを行った.私たちの目標は次のとおりでした.
ボールドのゴールは前の記事で我々が管理していたものだったので、今私たちは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の役割に含める必要がある二つのことがあります.
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を使用してコード・タスクとしてこの初期の基盤のために持っていたすべてのゴールを完了するのを許しました.よくできた!
次の記事では、コンテナの世界に飛び込みます.
Reference
この問題について(コード忍者として基盤になる方法), 我々は、より多くの情報をここで見つけました https://dev.to/eriklz/how-to-become-an-infrastructure-as-code-ninja-using-aws-cdk-part-3-1kp2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol