
コーヒーが好きな木谷映見です。
2022/4/29に、EC2 キーペア用に新しい管理機能が追加されたアナウンスがありました。
アップデートは大まかに以下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でキーペアの作成/削除が可能になった
こちらのアップデートに興味がある方が多いのではないでしょうか。今まで、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」)を選択し、ログインします。

ログインできました!

参考
Amazon Linux での AWS CLI バージョン 1 のインストール、更新、アンインストール
AWS CLI バージョン 2 の最新バージョンをインストールまたは更新します。
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。