LoginSignup
0
1

EC2起動時にパラメータストアからtoken取得してgit cloneしてみた

Posted at

EC2インスタンス作成時に、githubのプライベートリポジトリからcloneしておく、というのをやりたく、
無事にできたので手順をメモ。

やりたいこと

  • EC2インスタンス作成時に特定のgitリポジトリをcloneしたい
  • EC2のユーザデータにgit clone を記載しておく
  • gitのtoken はパラメータストアで管理する

ざっくり構成図

スクリーンショット 2023-12-09 11.08.22.png

ParameterStoreの設定

スクリーンショット 2023-12-09 11.09.30.png

  • 名前は /git/token としました
  • 機密データなので種類は SecureString (安全な文字列)としています
  • 作成時のKMSはデフォルトを使用しました

IAMの設定

EC2インスタンスが、パラメータストアから値を取得できるよう、IAMの設定を行います。
パラメータストアから getParameters できるポリシーを作成し、ロールに付与します。
そのロールをEC2インスタンスに設定します。

IAMポリシーの作成

Demo_SSM_GetParametes
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "ssm:GetParameter"
            ],
            "Resource": "arn:aws:ssm:ap-northeast-1:************:parameter/git/token"
        }
    ]
}

IAMロールの作成

  • 名前は Demo_SSM_getParameters_Role としました
  • サービス/ユースケースは EC2 を指定
  • 許可ポリシーは先ほど作成した Demo_SSM_GetParametes を指定

スクリーンショット 2023-12-09 11.28.32.png

スクリーンショット 2023-12-09 11.28.42.png

EC2インスタンスから取得できることの確認

IAMロールの設定

  • 動作確認のため予め起動してあった適当なEC2インスタンスにIAMロール付与します

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333538363537372f36373063393438652d663633642d373139312d656464362d3666343239353263383131312e706e67.png

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f333538363537372f30646263306235322d653736322d393164302d383130312d3034643336646536343130652e706e67.png

CLIで取得

IAMロールを付与したEC2インスタンスにSSH接続し、以下のコマンドを実行。

[ec2-user@ip-172-31-43-85 conf]$ aws ssm get-parameters --region ap-northeast-1  --names /git/token --with-decryption --query "Parameters[0].Value" --output text
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[ec2-user@ip-172-31-43-85 conf]$ 
  • XXXX・・・ と伏字にしていますが無事に取得できました。
  • --with-decryption : 複合化して取得するようにしています。今回はKMSの設定をデフォルトのままとしているのであまり意識しませんでしたが、自前のキーを使うことで許可設定も増えるかもしれません。

EC2起動テンプレートの作成

IAMロールの設定

スクリーンショット 2023-12-09 11.57.56.png

  • Demo_SSM_getParameters_Role を設定

ユーザデータの作成

ユーザーデータ
#!/bin/bash
yum update
yum install -y git
git clone  https://XXXXXXXXXX:`aws ssm get-parameters --region ap-northeast-1  --names /git/token --with-decryption --query "Parameters[0].Value" --output text`@github.com/XXXXXXXXXXXXXXXXX.git /home/ec2-user/XXXXX
  • 細かいですが、1秒めの #!/bin/bash 書き忘れててなかなかうまく動きませんでした。
  • これで無事に、EC2インスタンス作成時に、パラメータストアからtokenを取得してgit cloneする、ということが実現できました。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1