EC2 キーペアのアップデート

記事タイトルとURLをコピーする


コーヒーが好きな木谷映見です。

2022/4/29に、EC2 キーペア用に新しい管理機能が追加されたアナウンスがありました。

aws.amazon.com

アップデートは大まかに以下3点です。

1. キーペア作成日が閲覧可能になった
2. API経由でキーペアの公開鍵が閲覧可能になった
3. CloudFormationでキーペアの作成/削除が可能になった

キーペア作成日が閲覧可能になった

docs.aws.amazon.com キーペアの作成日が閲覧可能になりました。さっそく見ていきます。

マネジメントコンソール

EC2 コンソールの画面から、キーペアの項目に遷移します。
「作成されました」という項目で作成日時が確認できます。英語だと「Created」と表示される項目です。

AWS CLI

AWS CLI からも作成日が閲覧可能です。 AWS CLI の バージョン1、バージョン2共に、最新バージョンで試してみます。

v1 の最新バージョン(AWS CLI 1.23.11)

describe-key-pairs — AWS CLI 1.23.11 Command Reference

aws ec2 describe-key-pairs --key-name xxxxxxxxx というコマンドで確認できます。
実行してみると、 "CreateTime": "2022-02-28T02:45:03.000Z"という項目があるのが分かります。

$ aws --version
aws-cli/1.23.11 Python/3.7.10 Linux/5.10.96-90.460.amzn2.x86_64 botocore/1.25.11

$ aws ec2 describe-key-pairs --key-name xxxxx-key 
{
    "KeyPairs": [
        {
            "KeyPairId": "key-xxxxxxxxxxxxxxxxx",
            "KeyFingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
            "KeyName": "xxxxx-key",
            "KeyType": "rsa",
            "Tags": [],
            "CreateTime": "2022-02-28T02:45:03.000Z"
        }
    ]
}

$

v2 の最新バージョン(AWS CLI 2.6.4)

describe-key-pairs — AWS CLI 2.6.4 Command Reference

こちらも同様に、"CreateTime": "2022-02-28T02:45:03.000Z"という項目があるのが分かります。

$ aws --version
aws-cli/2.6.4 Python/3.9.11 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off

$ aws ec2 describe-key-pairs --key-name xxxxx-key 
{
    "KeyPairs": [
        {
            "KeyPairId": "key-xxxxxxxxxxxxxxxxx",
            "KeyFingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
            "KeyName": "xxxxx-key",
            "KeyType": "rsa",
            "Tags": [],
            "CreateTime": "2022-02-28T02:45:03+00:00"
        }
    ]
}

$

API経由でキーペアの公開鍵が閲覧可能になった

API経由でキーペアの公開鍵が閲覧可能になりました。こちらも AWS CLI の バージョン1、バージョン2共に、最新バージョンで試してみます。

作成日時と同様にaws ec2 describe-key-pairs --key-name xxxxxxxxx というコマンドで確認できますが、出力で公開鍵を表示するには、パラメータ--include-public-keyを追加で指定する必要があります。

v1 の最新バージョン(AWS CLI 1.23.11)

"PublicKey"という項目が表示され、公開鍵の文字列が表示されているのが分かります。

$ aws --version
aws-cli/1.23.11 Python/3.7.10 Linux/5.10.96-90.460.amzn2.x86_64 botocore/1.25.11

$ aws ec2 describe-key-pairs --key-name xxxxx-key --include-public-key
{
    "KeyPairs": [
        {
            "KeyPairId": "key-xxxxxxxxxxxxxxxxxx",
            "KeyFingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
            "KeyName": "xxxxx-key",
            "KeyType": "rsa",
            "Tags": [],
            "PublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAuGAFexx4iSl7Qazgo/K0sv4d860mMoFvCI1HxYqhxTnX0+0PTK1rs2WcG89OErL5wGEAwP30wcI1g5484y5Z0CoUvhQ44osKezHq7tP6fJYveV+iVqGEsgQVD9I2bv2Dpwznb9bWVF0Vq/WwXPZtWiwI+KZomD2CW/BH2NyyJEMoRclz0oFap1E/cCDCYIUG5auv6FrHxEod/paQ/gPoKifcba8T/axaQ5XsihHBCGI2WcbIgYS2PQXXin2yAklhycBCQ1Yfns22SiE0lYhc57Oi3Ghe/exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNwFH xxxxx-key",
            "CreateTime": "2022-02-28T02:45:03.000Z"
        }
    ]
}

$

v2 の最新バージョン(AWS CLI 2.6.4)

こちらも同様に、"PublicKey"という項目が表示され、公開鍵の文字列が表示されているのが分かります。

$ aws --version
aws-cli/2.6.4 Python/3.9.11 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off

$ aws ec2 describe-key-pairs --key-name xxxxx-key --include-public-key
{
    "KeyPairs": [
        {
            "KeyPairId": "key-xxxxxxxxxxxxxxxxx",
            "KeyFingerprint": "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx",
            "KeyName": "xxxxx-key",
            "KeyType": "rsa",
            "Tags": [],
            "PublicKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAuGAFexx4iSl7Qazgo/K0sv4d860mMoFvCI1HxYqhxTnX0+0PTK1rs2WcG89OErL5wGEAwP30wcI1g5484y5Z0CoUvhQ44osKezHq7tP6fJYveV+iVqGEsgQVD9I2bv2Dpwznb9bWVF0Vq/WwXPZtWiwI+KZomD2CW/BH2NyyJEMoRclz0oFap1E/cCDCYIUG5auv6FrHxEod/paQ/gPoKifcba8T/axaQ5XsihHBCGI2WcbIgYS2PQXXin2yAklhycBCQ1Yfns22SiE0lYhc57Oi3Ghe/exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNwFH xxxxx-key",
            "CreateTime": "2022-02-28T02:45:03+00:00"
        }
    ]
}

$

CloudFormationでキーペアの作成/削除が可能になった

docs.aws.amazon.com

こちらのアップデートに興味がある方が多いのではないでしょうか。今まで、CloudFormationで EC2 インスタンスの作成はできても、キーペアの作成はできませんでした。今回のアップデートで、ついに EC2 インスタンスもキーペアも CloudFormation で一気に作成できるようになったというわけです。

AWS :: EC2 :: KeyPair 構文

CloudFormationのドキュメントによりますと、構文は以下のようになっています。

Type: AWS::EC2::KeyPair
Properties: 
  KeyName: String
  KeyType: String
  PublicKeyMaterial: String
  Tags: 
    - Tag
  • KeyName:キーペアの名前を指定します。
  • KeyType:キーのタイプを、 ED25519 もしくは RSA から選択できます。デフォルトではrsaが選択されるので、この項目を記載しない場合はキータイプは RSA になります。
  • PublicKeyMaterial:キーペアをインポートする際に使用します。インポートするキーの公開鍵の文字列をここに貼り付けます。このプロパティが指定されていない場合は、新しいキーペアが作成されます。今回は新規作成を試すので、この項目は設定しません。

CloudFormation のドキュメントを参考に、キーペアを新規作成するテンプレートを以下のように作成しました。

Resources:
  CFnKeyPair:
      Type: AWS::EC2::KeyPair
      Properties: 
        KeyName: cfn-keypair
        KeyType: rsa
        Tags: 
          - Key: Name
            Value: cfn-keypair

このテンプレートで CloudFormation スタックを作成します。

CloudFormation スタックを作成

「CREATE_COMPLETE」になり、「リソース」タブから作成されたキーペアが確認できます。

EC2 コンソールのキーペア画面からも、新規作成されたキーペアが確認できます。

作成した秘密鍵は、 AWS Systems Manager の パラメータストアに自動保存されています。

作成したキーペアをクリックすると、「値」という項目の下に「表示」という部分があるのでクリックします。

秘密鍵が表示できます。 こちらの秘密鍵は、Systems Manager の参照権限 (AmazonSSMReadOnlyAccess相当の権限) を持つ IAM ユーザーであれば、いつでも誰でも参照できます。権限があれば何度も参照できますので、紛失のリスクがありません。
ただし、誰でも見えてしまうことは漏洩リスクでもありますので、権限を付与する際はご注意ください。

秘密鍵を「.pem」ファイルとして保存

秘密鍵を「.pem」ファイルとして保存してみます。 パラメータストアに表示された秘密鍵をコピーし、貼り付けて保存します。
拡張子は「.pem」とします。

作成した秘密鍵で EC2 インスタンスにログイン

では、作成した秘密鍵で EC2 インスタンスにログインしてみましょう。
EC2 コンソールで、新規 EC2インスタンスを起動します。今回は Amazon Linux 2 を選択します。
EC2 インスタンス作成時に、 CloudFormation で作成したキーペアを選択します。

TeraTerm で CloudFormation で作成した秘密鍵(拡張子「.pem」)を選択し、ログインします。

ログインできました!

参考

AWS は EC2 キーペア用に新しい管理機能を追加

Amazon Linux での AWS CLI バージョン 1 のインストール、更新、アンインストール

AWS CLI バージョン 2 の最新バージョンをインストールまたは更新します。

AWS :: EC2 :: KeyPair

emi kitani(執筆記事の一覧)

AS部LX課。2022/2入社、亀の歩みで頑張っています。コーヒーとサウナが好きです。AWS認定11冠