コーヒーが好きな木谷映見です。
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冠。