【Gamelift】フリートインスタンスにSSHログイン
フリートインスタンスにSSHログインしてみたので、手順をメモとして残しておきます。
参考:https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/fleets-remote-access.html
必要なもの
- AWS CLI Version2
- SSHクライアントツール
事前準備
AWS アクセスキーの取得と登録
AWSのIAMサービスよりコマンドライン用のアクセスキーを取得する。
IAM > ユーザー > ユーザー選択 > 認証情報タブ > アクセスキーを作成ボタンを押下
取得したアクセスキーをAWS CLIに登録します。
$ aws configure
AWS Access Key ID [None]: <取得したAccess Keyを入力>
AWS Secret Access Key [None]: <取得したSecret Access Keyを入力>
Default region name [None]: None
Default output format [None]: None
アクセス手順
インスタンスIDの取得
以下のコマンドを実行し、ログイン対象のインスタンスのIDを取得する。
$ aws gamelift describe-instances --fleet-id <fleet ID> --output json --region <region>
fleet IDはGameliftサービスのダッシュボードで確認できる。
下記のようなレスポンスが帰ってくる。「InstanceId」がインスタンスID。
{
"Instances": [
{
"FleetId": "fleet-Xxxxxxxxxxxxxxxxxxxxxxxxxx",
"FleetArn": "arn:aws:gamelift:",
"InstanceId": "i-XxxXXXXXX",
"IpAddress": "YY.YYY.YYY.YYY",
"DnsName": "~",
"OperatingSystem": "AMAZON_LINUX",
"Type": "c5.large",
"Status": "Active",
"CreationTime": "2021-05-13T10:04:35.028000+09:00",
"Location": "ap-northeast-1"
}
]
}
ログイン用の認証情報を取得
以下のコマンドを実行し、認証情報ファイル(pemファイル)を取得する。
aws gamelift get-instance-access --fleet-id <fleet ID> --instance-id <先の手順で取得したInstanceId> --region <region> --query "InstanceAccess.Credentials.Secret" --output text > MyPrivateKey.pem
SSH用のポートを開放
以下のコマンドを実行し、対象のインスタンスのSSHのポートを開放する。
aws gamelift update-fleet-port-settings --fleet-id <fleet ID> --inbound-permission-authorizations "FromPort=22,ToPort=22,IpRange=<作業PCのグローバルIPアドレス>/32,Protocol=TCP" --region <region> --output json
セキュリティリスクが低ければIpRange=0.0.0.0/0でもいい。
エラーが出力されなければ成功。
SSHログイン
以下コマンドでSSHログイン
ssh -i MyPrivateKey.pem gl-user-remote@<先の手順で取得したインスタンスのIpAddress>
SSH用のポートを閉塞
ログインが終わり必要がなくなれば、以下のコマンドで開いたポートを閉じる。
aws gamelift update-fleet-port-settings --fleet-id <fleet ID> --inbound-permission-revocations "FromPort=22,ToPort=22,IpRange=<開放時と同じ設定>,Protocol=TCP" --region <region> --output json
Discussion