Open7

Amazon ECS Anywhere 検証スクラップ

おーしろ (notakaos)おーしろ (notakaos)

Amazon ECS Anywhere の料金 (2021/5/30時点)

Tweet
  • Amazon ECS Anywhere の料金は以下を参照

https://aws.amazon.com/jp/ecs/anywhere/pricing/

  • マネージド ECS Anywhere オンプレミスインスタンスごとに、1時間あたり $0.01025 支払う
  • 1日稼働させると $0.01025/hour * 24 hour = $0.246/day ≒ 27円/日
  • ひと月(最大31日)稼働させると $0.246/day * 31 day = $7.626/month ≒ 837円/月
おーしろ (notakaos)おーしろ (notakaos)

Amazon ECS Anywhere へのオンプレミスインスタンス登録手順

Tweet
  1. AWSマネジメントコンソールにサインインする
  2. サービス → Elastic Container Service → クラスターを選択 or 作成
  3. ECS インスタンス タブ → Externalインスタンスの登録 をクリック
  4. ステップ 1: Externalインスタンスのアクティベーションの詳細 で各項目を入力して 次のステップ をクリック
    • アクティベーションキーの有効期限(日数): 1
    • インスタンス数: 1
    • インスタンスロール: 新しいロールの作成 or 既存のロール選択
  5. ステップ 2: Externalインスタンスの登録 で表示されるコマンドを コピー してSlackやNotionなどにメモしておく
    • メモを取ったら 完了 をクリックしてExternalインスタンスの登録画面は閉じてもよい
  6. ECSクラスターに登録したいオンプレミスインスタンス上で5のコマンドを実行する
  7. ECSインスタンス一覧にオンプレミスインスタンスが表示された完了
おーしろ (notakaos)おーしろ (notakaos)

ECS Anywhere オンプレミスインスタンス上でECSタスクを稼働させる(ECSサービスを使う場合)

Tweet
  1. AWSマネジメントコンソールにサインイン→サービス→ECS
  2. タスク定義を作成する
  3. タスクを稼働させるECSクラスターを選択して、サービスを追加
    • 2で作成したタスク定義を指定する
  4. ECSタスクが稼働したら完了
おーしろ (notakaos)おーしろ (notakaos)

セッションマネージャーでECS Anywhereで登録したオンプレミスインスタンスに接続する

Tweet
  • 「アカウントレベルおよびリージョンレベルのオンプレミスインスタンスの設定」をアドバンスドに変更する必要がある

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-managedinstances-advanced.html

  • 月額料金は1台あたり↓くらいになる
    • $0.00695/hour * 24 * 31 = $5.1708/month ≒ 568円/月
おーしろ (notakaos)おーしろ (notakaos)

Amazon ECS Anywhereで登録したオンプレミスインスタンスを登録解除する

Tweet
  • フリートマネージャーからマネージドインスタンスの登録解除を行うと、ECSクラスターからもオンプレミスインスタンスが外される
  • 単純に登録解除するだけならこれでOKだが、再度 ECS Anywhere で登録しようとするとエラーになる
  • Amazon ECS Anywhere で再度登録できるようにするためには、オンプレミスインスタンスの amazon-ecs-initamazon-ssm-agent 及び関連ファイルを削除する必要がある(Ubuntuの場合)

Ubuntu 20.04でのAmazon ECS Anywhere 関連ファイルクリーンアップ方法(非公式)

# Ubuntu 20.04 の場合

# あらかじめAWSマネジメントコンソールでオンプレインスタンスの登録解除をしておくこと
#   → マネージドインスタンス(高度なインスタンス)の場合は以下の手順で解除できた
#   1. Systems Manager → フリートマネージャー → インスタンスを選択
#   2. インスタンスアクション → 「このマネージドインスタンスの登録を解除する」を選択
#   3. オンプレインスタンス側で以下のコマンドを実行したらクリーンアップ完了

# ECSサービス停止
sudo systemctl stop ecs
sudo systemctl disable ecs

# ECS関連ディレクトリのリネーム
sudo mv /etc/ecs /etc/ecs.old
sudo mv /var/lib/ecs /var/lib/ecs.old

# SSM Agentサービス停止
sudo systemctl stop amazon-ssm-agent
sudo systemctl disable amazon-ssm-agent

# SSM Agent関連ディレクトリのリネーム
sudo mv /etc/amazon/ssm /etc/amazon/ssm.old
sudo mv /var/lib/amazon/ssm /var/lib/amazon/ssm.old

# ECS Anywhere登録スクリプトが/tmpに残っているとエラーがでて登録できないので削除
rm -f /tmp/ecs-anywhere-install.sh

# パッケージの削除
sudo dpkg -r amazon-ecs-init
sudo dpkg -r amazon-ssm-agent
おーしろ (notakaos)おーしろ (notakaos)

Amazon ECS Anywhere でクラスター登録コマンド実行時に「Warning: Failed to create the file /tmp/ecs-anywhere-install.sh: 」が出る時の対処方法

  • オンプレミスインスタンス上でExternalインスタンス登録スクリプトで以下のエラーがでる
Warning: Failed to create the file /tmp/ecs-anywhere-install.sh: 
Warning: 許可がありません
  • /tmp/ecs-anywhere-install.sh を削除してから再度登録コマンドを実行するとよい
rm /tmp/ecs-anywhere-install.sh
おーしろ (notakaos)おーしろ (notakaos)

ExternalインスタンスにセッションマネージャーでSSH接続する

  • 以下の記事を参考に設定する

https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html

https://dev.classmethod.jp/articles/session-manager-launches-tunneling-support-for-ssh-and-scp/

ポイント

  • SSH接続する側に Session Manager Plugin をインストールする必要がある
  • SSHコンフィグファイルに以下の設定を書いておくと便利
~/.ssh/config
# SSH over Session Manager
host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
# SSH接続する
ssh mi-xxxxxxxx