最終更新日: 2026-07-24
TOP(About this memo)) > 一覧(AWS) > Secrets Manager・SSM(Systems Manager)
aws secretsmanager create-secret --name sample-github-secret --secret-binary fileb://~/.ssh/github/id_rsa
{
"ARN": "arn:aws:secretsmanager:us-east-1:123456789012:secret:sample-github-secret-klASQT",
"Name": "sample-github-secret",
"VersionId": "d6ea7210-b20f-44d3-8950-10566842dce7"
}
fileb://というプレフィックスをつけることで「ファイルの内容をエンコードされていないバイナリとして扱う」ことになる。file://にするとbase64エンコードされずエラー(invalidなbase64というエラー)になる。aws secretsmanager get-secret-value --secret-id ${KEYPAIR_NAME}でbase64エンコードされた文字列を確認できる。sudo aws secretsmanager get-secret-value --secret-id sample-github-secret --region us-east-1 --query 'SecretBinary' --output text | base64 -d > /home/ec2-user/.ssh/id_rsa
AmazonEC2RoleforSSMポリシーを割り当てると接続できるようになる。ターミナルからもコンソール画面からも接続可能(ただし、割り当てから接続できるようになるまでに多少のタイムラグがある。すぐに接続しようとすると「SSMエージェントがインストールされていない」といったエラーが出ることがある)。whoamiでssm-userと表示される。AmazonEC2RoleforSSMポリシーを付与する必要がある。com.amazonaws.ap-northeast-1.ssmcom.amazonaws.ap-northeast-1.ec2messagescom.amazonaws.ap-northeast-1.ssmmessages--targetオプションに接続先インスタンスのインスタンスIDを指定するだけで接続できる。aws ssm start-session --target i-0c45bdd6943767bd0
aws ssm describe-instance-information
S3FullAccess、CloudWatchLogsFullAccessを追加したが、本来は必要最小限にすべき)。com.amazonaws.ap-northeast-1.s3を追加する。/var/log/amazon/ssm/amazon-ssm-agent.log、/var/log/amazon/ssm/errors.logに出力される。/etc/amazon/ssm/のseelog.xml.templateが設定テンプレートなので、これをコピーしてseelog.xmlを設定・配置する。/var/log/ssm/配下にSSM接続時の操作ログが残る。このログでディスク容量が圧迫される可能性もあるため、ログサイズとローテーションの設定を必ずしておく。ssm-userという権限の強いユーザーで接続する(パスワード無しでroot権限に昇格できる)。本番環境で利用する際はRun-Asの設定で接続するOSユーザーを指定したり、実行できるコマンドを制限することを検討する。ssm-userでディレクトリを作成しても所有者はrootになる、scriptコマンドを実行するとrootに勝手に切り替わる、など、内部的な仕組みを理解しきれていない部分がある。aws ssm get-parameter --name (parameter-name) --with-decryption --output text
--name: パラメータ名を指定--with-decryption: パラメータの復号を行う--output: 出力形式--query Parameter.Valueを加えることで、パラメータ値のみ取得できる。aws ssm put-parameter --name "ops-activation-code" \
--value "xxxxxxxxxxxxxxxxxxx" \
--type "SecureString"
valueFromLookupvalueForStringParametervalueForSecureStringParameter