はじめに

Systems Manager Run CommandをプライベートサブネットのEC2インスタンスに対して実行する際にハマったので備忘録。
※あくまで動作確認につき権限周りガバガバ。。。

前提

・プライベートサブネット上にSSMエージェントがインストールされたEC2インスタンスが存在すること。
SSMエージェントについてはこちら
・コマンド出力にS3を使用する。

手順

  1. EC2に割り当てるIAMロールにAWS管理ポリシー「AmazonEC2RoleforSSM」をアタッチする。

  2. 実行するIAMユーザーに下記のポリシーをアタッチする。
    AWS管理ポリシー「AmazonEC2FullAccess」
    AWS管理ポリシー「AmazonSSMFullAccess」

  3. VPCエンドポイント作成 (←ここでハマった)
    下記の4つのエンドポイントを作成。
    「com.amazonaws.ap-northeast-1.ssm」
    「com.amazonaws.ap-northeast-1.ec2messages」
    「com.amazonaws.ap-northeast-1.ssmmessages」
    「com.amazonaws.ap-northeast-1.s3」

 SSMのエンドポイントのみで実行できると思い込んでしまったのが失敗。
「com.amazonaws.ap-northeast-1.ssm」のみ作成してSystems Manager Run Commandのコンソール
からコマンド実行したところ、進行中のステータスのまま完了しませんでした。

上記1〜3の設定でコマンドのステータスが完了となり、ログも出力されました。

おわりに

エンドポイントの不足でコマンドが完了しないということに気づくまでが長かったです。。
私自身、権限周りを設定する機会があまり無く、そちらばかり疑っていました。
勉強不足ですね。。

参考サイト
Systems Manager Run Command をプライベートサブネット上の EC2インスタンスに対して実行する手順と注意点
↑こちらのサイトがより詳しく、丁寧です。

AWS Systems Managerユーザーガイド
↑公式サイト