【AWS/SSM】GCEにセッションマネージャーエージェントをインストールし、接続する
terraform
code:main.tf
data "aws_iam_policy_document" "main" {
statement {
effect = "Allow"
principals {
type = "Service"
}
}
}
resource "aws_iam_role" "main" {
name = "ssm-activation-role"
assume_role_policy = data.aws_iam_policy_document.main.json
}
resource "aws_iam_role_policy_attachment" "main" {
role = aws_iam_role.main.name
policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}
resource "aws_ssm_activation" "main" {
name = "ssm-activation-for-notec2"
description = "ssm-activation-for-notec2"
iam_role = aws_iam_role.main.id
registration_limit = "1"
}
activation_idとactivation_codeを控える
codeはterraform showなりで控える
インスタンスにエージェントを入れる
code:agent設定.sh
### SSMエージェントインストール、停止
sudo apt install ./amazon-ssm-agent.deb
sudo systemctl stop amazon-ssm-agent.service
### activation設定適用、起動
export ActivationCode="<activation_code>"
export ActivationID="<activation_id>"
sudo -E amazon-ssm-agent -register -code "${ActivationCode}" -id "${ActivationID}" -region ap-northeast-1
sudo systemctl start amazon-ssm-agent.service
registerのときのログはこんな感じ
code:register.sh
$ sudo -E amazon-ssm-agent -register -code "${ActivationCode}" -id "${ActivationID}" -region ap-northeast-1
Error occurred fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory
Initializing new seelog logger
New Seelog Logger Creation Complete
2024-01-02 19:00:00 WARN Could not read InstanceFingerprint file: InstanceFingerprint does not exist
2024-01-02 19:00:00 INFO No initial fingerprint detected, generating fingerprint file...
2024-01-02 19:00:02 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-xxxxxxxxxxxx
EC2の場合はインスタンスIDでしたが、EC2以外の場合はマネージドインスタンスID(mi-xxxxx)のようです。
接続の際に利用するので控えます
接続する
code:start-session.sh
aws ssm start-session --target mi-xxxxxxxxxx
先程のログにでたマネージドインスタンスIDで接続します。
ログを撮ってなければセッションマネージャのコンソールからも確認可能
参考