0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】CDKで「mysql: command not found」エラー発生...`latest_amazon_linux`が原因だった

Posted at

概要

AWS CDKを利用して、EC2インスタンスにlatest_amazon_linuxを指定してmysqlをインストールしました。すると以下のエラーに。

sh-4.2$ mysql --version sh: mysql: command not found

こちらの原因と解決方法を紹介します。

前提と原因

CDKで指定した内容は以下でした。

        user_data = ec2.UserData.for_linux()
        user_data.add_commands(
            "sudo yum update -y",
            "sudo yum install -y mysql"
        )

        ec2_instance = ec2.Instance(
            self, "sample-EC2Instance",
            instance_type=ec2.InstanceType("t3.micro"),
            machine_image=ec2.MachineImage.latest_amazon_linux(),
            vpc=private_subnets_vpc,
            security_group=ec2_security_group,
            role=ec2_role,
            key_name="sample_ssh",
        vpc_subnets=ec2.SubnetSelection(subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS),
            user_data=user_data
        )

上述のエラーメッセージから、EC2インスタンス内でMySQLクライアントがインストールされていないように思われます。UserDataがあるので、EC2インスタンス作成時にMySQLクライアントをインストールされているはずなのだが...。

管理コンソールを確認してみると、EC2は正常に起動しています。
AMIを確認する

AMIはamzn-ami-hvm-2018.03.0.20231218.0-x86_64-gp2

とありました。

あれ、Amazon Linuxの最新ではない...?
latest_amazon_linux()を選ぶと、Amazon Linux2の最新が得られると思っていたのだが...

Amazon Linux 1は2023 年 12 月 31 日にサポート終了しています。

これが原因で最新のMySQLパッケージが利用できないなどの状況になっていたと考えられます。

解決方法

以下のドキュメントを見ると、確かにMachineImageごとに指定するメソッドが違いました。

AmazonLinux2の最新版にした場合は

latest_amazon_linux2()

を選ぶ必要があるとのこと。

ということで、CDKファイルの

machine_image=ec2.MachineImage.latest_amazon_linux()

machine_image=ec2.MachineImage.latest_amazon_linux2()

としたらエラーが消えました。
以上!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?