3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon Linux 2023が出たのでAWS CLI v2を入れ直す必要がなくなった

Last updated at Posted at 2023-03-20

はじめに

  • Amazon Linux 2023がGAとなりました。
  • これまでAmazon Linux 2を使っていて個人的に地味に面倒だったのが、Amazon Linux 2はデフォルトでAWS CLI v1系がインストールされているのでAWS CLI v2系を使うためにはインストールし直す必要があったという点でした。
  • Amazon Linux 2023では、デフォルトでAWS CLI v2系がインストールされているので、この入れ直しが不要になりました。
  • ということで、ちょっとした検証でEC2インスタンスなどを立てるときに使っていたCloudFormationのテンプレートを更新します。

更新前

  • このようにCloudFormationテンプレートのParameterでAmazon Linux 2をデフォルトのAMIとして指定していました。(以下yamlは説明しやすくするために色々省略してます。)
    • Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2の部分です。
AWSTemplateFormatVersion: '2010-09-09'
Description: Deploys a new VPC with 3 public subnets and a EC2 instance for the bastion host in ap-northeast-1.
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Basic configuration
        Parameters:
          - NamePrefix
          - EC2Image
          - KeyPairName
    ParameterLabels:
      NamePrefix:
      EC2Image:
        default: AMI ID for the bastion host
Parameters:
  EC2Image:
    Description: AMI ID of an EC2 instance.
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2
  • そして、EC2インスタンスのUserDataでAWS CLI v1をアンインストールして、v2を再インストールしていました。(以下yamlは説明しやすくするために色々省略してます。)
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Sub "${EC2Image}"
      InstanceType: t3.micro
      AvailabilityZone: "ap-northeast-1a"
      Tags:
        - Key: "Name"
          Value: !Sub "${NamePrefix}-instance"
      KeyName: !Sub "${KeyPairName}"
      SecurityGroupIds:
        - !Ref SecurityGroupforEC2Instance
      SubnetId: !Ref Subnet1
      IamInstanceProfile: !Ref InstanceProfileForEC2Instance
      UserData:
        Fn::Base64: !Sub
          - |
            #!/bin/bash
            yum remove awscli -y
            curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
            unzip awscliv2.zip
            ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
            aws configure set region ap-northeast-1
            yum update -y
            hostnamectl set-hostname ${Prefix}-instance
            echo "preserve_hostname: true" >> /etc/cloud/cloud.cfg
          - {
              Prefix: !Ref NamePrefix
            }

更新後

  • Parameterで指定していたAMI IDを取得するパラメータをAmazon Linux 2023のものに変更します。
    • Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64
Parameters:
  EC2Image:
    Description: AMI ID of an EC2 instance.
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64

AMI IDを取得するパラメータはAWS Systems Managerもしくはこちらから確認可能です。/aws/service/ami-amazon-linux-latest/<alias><alias>部分を以下のどれかに置き換えます。

  • For arm64 architecture (standard AMI): al2023-ami-kernel-default-arm64
  • For arm64 architecture (minimal AMI): al2023-ami-minimal-kernel-default-arm64
  • For x86_64 architecture (standard AMI): al2023-ami-kernel-default-x86_64
  • For x86_64 architecture (minimal AMI): al2023-ami-minimal-kernel-default-x86_64
  • そして、EC2インスタンスのUserDataでAWS CLI v1のアンインストール、v2をインストールしていた部分を削除。スッキリしました。
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Sub "${EC2Image}"
      InstanceType: t3.micro
      AvailabilityZone: "ap-northeast-1a"
      Tags:
        - Key: "Name"
          Value: !Sub "${NamePrefix}-instance"
      KeyName: !Sub "${KeyPairName}"
      SecurityGroupIds:
        - !Ref SecurityGroupforEC2Instance
      SubnetId: !Ref Subnet1
      IamInstanceProfile: !Ref InstanceProfileForEC2Instance
      UserData:
        Fn::Base64: !Sub
          - |
            #!/bin/bash
            aws configure set region ap-northeast-1
            yum update -y
            hostnamectl set-hostname ${Prefix}-instance
            echo "preserve_hostname: true" >> /etc/cloud/cloud.cfg
          - {
              Prefix: !Ref NamePrefix
            }

動作確認

  • CloudFormationスタックを作成して、EC2インスタンスを起動し、SSHでログインしてみます。
  • OSバージョンは以下の通り、Amazon Linux 2023。
$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
SUPPORT_END="2028-03-01"
  • インストールされているAWS CLIのバージョンは2.2.19。
$ aws --version
aws-cli/2.9.19 Python/3.9.16 Linux/6.1.15-28.43.amzn2023.x86_64 source/x86_64.amzn.2023 prompt/off
  • 無事に動作確認できたので、CloudFormationのテンプレートのメンテナンスは完了です。

追記(注意事項)

  • Amazon Linux 2023の情報を調べていたらこんなブログを発見しました。
  • セキュリティ周りのアップデートでAmazon Linux 2023へのSSH時にssh-rsa署名が使えなくなったので、Teratermを使う場合は 5.0 beta 1以上を使う必要があるとのこと。
  • Windowsユーザーですが、PowerShellのsshコマンドを使って確認しており問題なく接続できていたので気づきませんでしたが、改めてTeraterm(version 4.106)で接続してみると確かに認証が通りませんでした。要注意ですね。

まとめ

  • Amazon Linux 2023がGAとなり、Amazon LinuxでAWS CLI v2を使いたいときにAWS CLI v1をアンインストールしてv2をインストールする必要がなくなりました。
  • というわけで、個人の検証用CloudFormationテンプレートを更新しました。
  • テンプレートはこちらに置いてあります。完全に自分用ですので、もしご利用の際は自己責任でお使いください。
3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?