実現したいこと
・最新版のAWS CLIを導入する
・アクセスキーID/シークレットアクセスキーを使用してAWSリソースの操作を行うのはセキュリティ観点において非推奨です。
⇒アクセスキーID/シークレットアクセスキーの発行/登録は行わずに、必要な操作権限(IAMポリシー)をアタッチしたIAMロールを利用してAWS CLIを利用を制御します。
実施環境
サーバ:Amazon EC2
OS:RHEL-8.9.0_HVM-20240213-x86_64-3-Hourly2-GP3
追加ソフト:Python3.6.8
IAMロール:以下2つのポリシーをアタッチ
- AmazonEC2FullAccess :EC2操作のため
- AmazonSSMManagedInstanceCore :SSM接続のため
導入手順
RHELの場合、AWS CLIはデフォルトでインストールされていないため、以下の手順で導入します。本手順はrootユーザで実行する想定とします。
※「pip install awscli」でもインストール可能ですが、バージョン1がインストールされます
1.AWS CLIのインストーラファイルをダウンロード
以下コマンドでダウンロード。
[root@ip-XX-XX-XX-XX ~]#curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
インターネットに出られない環境においては、以下URLからダウンロードしサーバ内に持ち込んでください。
https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
2.インストーラの解凍
インストーラを解凍します。Linux ディストリビューションに組み込み unzip コマンドがない場合は、同等のコマンドを使用して解凍。あるいはunzipをインストールします。
[root@ip-XX-XX-XX-XX ~]#unzip awscliv2.zip
# unzipが導入されいない場合
[root@ip-XX-XX-XX-XX ~]#dnf install unzip
3.インストールプログラムの実行
インストールコマンドは、新しく解凍された install ディレクトリにある aws という名前のファイルを使用します。
[root@ip-XX-XX-XX-XX ~]# ./aws/install
You can now run: /usr/local/bin/aws --version
バージョンを確認します。
[root@ip-XX-XX-XX-XX ~]#aws --version
aws-cli/2.15.38 Python/3.11.8 Linux/4.18.0-513.18.1.el8_9.x86_64 exe/x86_64.rhel.8 prompt/off
4.awscliコマンドの動作確認
awscliコマンドの動作確認を行います。
IAMロールのポリシーで設定している権限の操作ができることと、権限がない操作に関しては実施できないことを確認します。
※「aws configure」を使用したアクセスキーID/シークレットアクセスキーの登録は不要です。
# インスタンスIDを参照して、EC2インスタンスの情報を取得するコマンド
[root@ip-10-0-10-29 ~]# $ aws ec2 describe-instances --instance-ids ${instance-id}
{
"Reservations": [
{
"Groups": [],
"Instances": [
{
"AmiLaunchIndex": 0,
"ImageId": "ami-XXXXXXXXXXXXXXX",
"InstanceId": "i-XXXXXXXXXXXXXXXX",
"InstanceType": "t2.micro",
"KeyName": "sample-key",
"LaunchTime": "2024-04-16T13:07:36+00:00",
"Monitoring": {
"State": "disabled"
---------------------------------------(省略)
# s3バケットの一覧を表示するコマンド
[root@ip-XX-XX-XX-XX ~]# aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
以上
※参考