JAWS-UG
アーキテクチャ専門支部
ハイブリッド分科会 #9
EC2 Run Commandのいいところ
2016/11/1 Tue
Nobuhiro Nakayama
{
"name":"Nobuhiro Nakayama",
"company":"UCHIDAYOKO CO., LTD.",
"favorite aws services":[
"Directory Service", "IAM", "AWS CLI"
],
"certifications":[
"AWS Certified Solutions Architect-Professional",
"AWS Certified SysOps Administrator-Associate",
"Microsoft Certified Solutions Expert Server Infrastructure",
"Microsoft Certified Solutions Expert SharePoint",
"IPA Network Specialist", "IPA Information Security Specialist"
]
}
Code Deployを使うということ
• 「EC2を使うということ」
↓
• EC2インスタンスを管理しなければならない
↓
• EC2インスタンスは管理したくない
↓
• SSM(EC2 Run Command)を使ってはどうか?
2016/11/1 3
今日はCode Deploy回なので・・・
EC2 Run Commandとは?
• AWSのAPI経由でEC2インスタンスの中を操作できる!
2016/11/1 4
EC2 Run Commandを使うための準備
• エージェントのインストール
• Windowsはec2configがその役割を兼ねている
• Linuxは専用のエージェントが必要
• インスタンスプロファイル
• AmazonEC2RoleforSSM(マネージドポリシー)を利用すればOK
• その他の前提条件を充足すること
• インターネットへのアクセス など
• http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/remote-commands-prereq.html
2016/11/1 5
EC2 Run Commandでできること(1)
• AWSがデフォルトで提供しているオペレーション
• Windows / Linux共通
• 任意のコマンドやスクリプトの実行(Windowsの場合はPowerShell)
• インスタンス上の任意のスクリプトを実行することも可能
• エージェントの更新(Windowsの場合は、ec2config)
• Windows
• Windows Update(設定、スキャン、更新)
• アプリケーションのインストール
• インベントリの収集
• ドメインへの参加(DirectoryServiceを利用する前提)
• CloudWatchの設定(カスタムメトリック、CloudWatch Logs)
2016/11/1 6
EC2 Run Commandでできること(2)
• EC2 Run Commandで実行できることはドキュメントとして独自に定義可能
• 詳細はこちら
• http://docs.aws.amazon.com/ja_jp/ssm/latest/APIReference/ssm-plugins.html
• ドキュメントは他のAWSアカウントと共有できる
• AMIを同じ感じ
• パブリック/特定のAWSアカウントのみのいずれか
• オンプレのインスタンスも管理できる
2016/11/1 7
Demo
2016/11/1 8
EC2 Run Commandの何がいいのか?(1)
• AWSの機能を活用できる
• 証跡を残せる
• CloudTrailでAPIの呼び出し履歴を保存
• S3にコマンドの実行結果を保存
• 実行結果・ステータスの通知
• SNSでステータスに応じた通知 → 他のジョブとの連携(ピタゴラスイッチ)
• APIで自動化
• マネコンにCLIで実行するときのコマンドを表示してくれる
• OSにログインするための認証情報をやりとりする必要がなくなる
• IAMユーザなら、上記の機能で証跡を容易に残せる
• 業務の委託時の管理負担を軽減
2016/11/1 9
EC2 Run Commandの何がいいのか?(2)
• 【未確認】IAMによる権限制御
• 特定のドキュメントのみを実行できる権限を付与、などが可能(なはず・・・?)
• ARNの構文
• arn:aws:ssm:region:account-id:document/document_name
• https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-ssm
• (使った結果として)作業の定型化/非定型作業の明確化
• 定型化、スクリプト化できる作業はEC2 Run Commandで実装可能
• 検討した結果、 EC2 Run Commandで実装できない作業があればそれは非定型業務?
2016/11/1 10
EC2 Run Commandの注意点
• コマンドの実行結果が長い場合、S3へ保存することが必須
• Management Consoleの場合、一定の長さで省略される
• 仮想マシン内では管理者権限で処理を実行(していると思われる)
• 特に「AWS-RunPowerShellScript」「AWS-RunShellScript」に対する許可を厳密に管理しよう
2016/11/1 11
ディスカッション
2016/11/1 12
ディスカッションメモ
• 「特定のパッケージのバージョンを取得する、みたいなことはできるのか」
• 「結果に応じて処理を分岐するようなことができるといいのでは?」
• 「状態を変えるような処理は行わないようにしたほうがいいのではないか?」
• 冪等性をどのように担保するのか
• 「劇薬にもなり得る」
• 情報収集に留めるべき
• 「Administratorやrootで動くのか?」
• →(たぶん)管理者権限で実行してる
• 「使う人の力量が試されるサービス」
2016/11/1 13

JAWS-UG アーキテクチャ専門支部(ハイブリッド分科会) #9 EC2 Run Commnadのいいところ

  • 1.
    JAWS-UG アーキテクチャ専門支部 ハイブリッド分科会 #9 EC2 RunCommandのいいところ 2016/11/1 Tue Nobuhiro Nakayama
  • 2.
    { "name":"Nobuhiro Nakayama", "company":"UCHIDAYOKO CO.,LTD.", "favorite aws services":[ "Directory Service", "IAM", "AWS CLI" ], "certifications":[ "AWS Certified Solutions Architect-Professional", "AWS Certified SysOps Administrator-Associate", "Microsoft Certified Solutions Expert Server Infrastructure", "Microsoft Certified Solutions Expert SharePoint", "IPA Network Specialist", "IPA Information Security Specialist" ] }
  • 3.
    Code Deployを使うということ • 「EC2を使うということ」 ↓ •EC2インスタンスを管理しなければならない ↓ • EC2インスタンスは管理したくない ↓ • SSM(EC2 Run Command)を使ってはどうか? 2016/11/1 3 今日はCode Deploy回なので・・・
  • 4.
    EC2 Run Commandとは? •AWSのAPI経由でEC2インスタンスの中を操作できる! 2016/11/1 4
  • 5.
    EC2 Run Commandを使うための準備 •エージェントのインストール • Windowsはec2configがその役割を兼ねている • Linuxは専用のエージェントが必要 • インスタンスプロファイル • AmazonEC2RoleforSSM(マネージドポリシー)を利用すればOK • その他の前提条件を充足すること • インターネットへのアクセス など • http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/remote-commands-prereq.html 2016/11/1 5
  • 6.
    EC2 Run Commandでできること(1) •AWSがデフォルトで提供しているオペレーション • Windows / Linux共通 • 任意のコマンドやスクリプトの実行(Windowsの場合はPowerShell) • インスタンス上の任意のスクリプトを実行することも可能 • エージェントの更新(Windowsの場合は、ec2config) • Windows • Windows Update(設定、スキャン、更新) • アプリケーションのインストール • インベントリの収集 • ドメインへの参加(DirectoryServiceを利用する前提) • CloudWatchの設定(カスタムメトリック、CloudWatch Logs) 2016/11/1 6
  • 7.
    EC2 Run Commandでできること(2) •EC2 Run Commandで実行できることはドキュメントとして独自に定義可能 • 詳細はこちら • http://docs.aws.amazon.com/ja_jp/ssm/latest/APIReference/ssm-plugins.html • ドキュメントは他のAWSアカウントと共有できる • AMIを同じ感じ • パブリック/特定のAWSアカウントのみのいずれか • オンプレのインスタンスも管理できる 2016/11/1 7
  • 8.
  • 9.
    EC2 Run Commandの何がいいのか?(1) •AWSの機能を活用できる • 証跡を残せる • CloudTrailでAPIの呼び出し履歴を保存 • S3にコマンドの実行結果を保存 • 実行結果・ステータスの通知 • SNSでステータスに応じた通知 → 他のジョブとの連携(ピタゴラスイッチ) • APIで自動化 • マネコンにCLIで実行するときのコマンドを表示してくれる • OSにログインするための認証情報をやりとりする必要がなくなる • IAMユーザなら、上記の機能で証跡を容易に残せる • 業務の委託時の管理負担を軽減 2016/11/1 9
  • 10.
    EC2 Run Commandの何がいいのか?(2) •【未確認】IAMによる権限制御 • 特定のドキュメントのみを実行できる権限を付与、などが可能(なはず・・・?) • ARNの構文 • arn:aws:ssm:region:account-id:document/document_name • https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-ssm • (使った結果として)作業の定型化/非定型作業の明確化 • 定型化、スクリプト化できる作業はEC2 Run Commandで実装可能 • 検討した結果、 EC2 Run Commandで実装できない作業があればそれは非定型業務? 2016/11/1 10
  • 11.
    EC2 Run Commandの注意点 •コマンドの実行結果が長い場合、S3へ保存することが必須 • Management Consoleの場合、一定の長さで省略される • 仮想マシン内では管理者権限で処理を実行(していると思われる) • 特に「AWS-RunPowerShellScript」「AWS-RunShellScript」に対する許可を厳密に管理しよう 2016/11/1 11
  • 12.
  • 13.
    ディスカッションメモ • 「特定のパッケージのバージョンを取得する、みたいなことはできるのか」 • 「結果に応じて処理を分岐するようなことができるといいのでは?」 •「状態を変えるような処理は行わないようにしたほうがいいのではないか?」 • 冪等性をどのように担保するのか • 「劇薬にもなり得る」 • 情報収集に留めるべき • 「Administratorやrootで動くのか?」 • →(たぶん)管理者権限で実行してる • 「使う人の力量が試されるサービス」 2016/11/1 13