📝

Session ManagerでターミナルからCloud9につなぐ

2021/12/27に公開

状況

EC2にVM立てた後に開発系のことがやりたい時はEC2インスタンス上に主要開発言語、Docker、AWS CLIなど全部入りで起動するCloud9が便利。WebコンソールとCloud9 IDEが悪くないのは分かった。でも俺はローカルのターミナルからもサクッとつなぎたい。ただし、インバウンドのSSHを空けるなんてもってのほかだ。

すぐできる

  1. Session ManagerのCLIをインストールする
  2. Cloud9起動する時にCreate a new no-ingress EC2 instance for environment(access via Systems Manager)を選んでインスタンスを作る
  3. ターミナルから以下を叩くだけで繋がる
aws ssm start-session --target <instance_id>

ちなみに

ターミナルから以下を叩くとInstanceIdを含めたインスタンスの情報をみることができる

aws ssm describe-instance-information  
InstanceInformationList:
- AgentVersion: 3.0.1124.0
  ComputerName: <ip-address>.ap-northeast-1.compute.internal
  IPAddress: <ip-address>
  InstanceId: <instance_id>
  IsLatestVersion: false
  LastPingDateTime: '2021-12-27T13:16:38.697000+09:00'
  PingStatus: Online
  PlatformName: Amazon Linux
  PlatformType: Linux
  PlatformVersion: '2'
  ResourceType: EC2Instance

権限が足りない

このようなエラーがでたらIAMのPermissionを確認

aws ssm start-session --target <instance_id>

An error occurred (403) when calling the StartSession operation: Server authentication failed: <UnauthorizedRequest xmlns=""><message>Forbidden.</message></UnauthorizedRequest>

今使っているidentityは以下で確認できる - whoami

aws sts get-caller-identity

Discussion