はじめに
こんにちは、小林です。
今回はEC2を構築し、マネージドインスタンス設定をしましたので記事としてまとめます。
Cloudformaitonを使っての構築方法をまとめたので、参考にする際には下記のYamlテンプレートを使ってみてください。
前提条件
EC2でSessionManagerを使用して接続する際に必要な条件を下記に記します。
・EC2インスタンスプロファイルにSystemsManagerへ接続するための権限があること。
・インスタンスにssm-agentがインストールされていて起動していること。
・OSがLinux、Windows、macのいずれかであること。
・EC2からSystemsManagerへの通信経路が確立されていること(ルートテーブル、インターネットゲートウェイ、エンドポイントなど)
SessionManagerの構成
上図が今回構築するシステムの構成になります。
前提としてVPC、サブネット、セキュリティグループ、ルートテーブルは構築済みとします。
Yamlテンプレート
下記が今回構築に使用したYamlテンプレートになります。
必要に応じて設定値を書き換えれば使いまわせます。
注意:記載のない設定項目はすべてデフォルト値になります。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
InstanceType: '{対象のインスタンスタイプ}'
ImageId: '{対象のImageid}'
KeyName: '{keypair名}'
IamInstanceProfile: !Ref InstanceProfile
SubnetId: {サブネットID}
UserData:
Fn::Base64: !Sub |
#!/bin/bash
yum update -y
yum install -y amazon-ssm-agent #ssm-agentをインストール
systemctl enable amazon-ssm-agent #ssm-agent有効か
systemctl start amazon-ssm-agent #ssm-agent起動
#下記はEC2にアタッチするIAMロールの設定
InstanceProfile:
Type: 'AWS::IAM::InstanceProfile'
Properties:
Roles:
- !Ref SSMRole
SSMRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: 'Allow'
Principal:
Service: 'ec2.amazonaws.com'
Action: 'sts:AssumeRole'
Path: '/'
Policies:
- PolicyName: 'SSMPolicy'
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: 'Allow'
Action:
- 'ssm:*'
- 'ec2messages:*'
- 'cloudwatch:*'
Resource: '*'
SSMInstanceProfile:
Type: 'AWS::IAM::InstanceProfile'
Properties:
Path: '/'
Roles:
- !Ref 'SSMRole'
#下記がキーペアの記載
EC2KeyPair:
Type: AWS::EC2::KeyPair
Properties:
KeyName: '{KeyPai名}'
確認
対象のインスタンスから、セッションマネージャーで接続出来たら設定完了になります。
以上の設定でSystemsManagerの機能を使用してEC2のノード管理が可能になります。SystemsManagerには多様な機能があるため、いろいろ試してみて理解を深めようと思います。
おわりに
以上がEC2でSessionManager接続するために必要な設定になります。
今回は使用しませんでしたが、YamlテンプレートのOutputセクションを記載すると、他のテンプレートから設定値を参照できるようになるので次回から活用していきたいです。