のぴぴのメモ

自分用のLinuxとかの技術メモ

AWS CLIのセットアップ(RHEL/Mac)

1.Amazon LinuxAWS CLIをインストール

Amazon Linuxはデフォルトで、awsコマンドがインストールされています。公式ドキュメントはこちらです。

2.RHELAWS CLIをインストール

こちらを参照

上記の公式ドキュメントの内容をベースにインストールします。

(1) unzipをインストールする

$ sudo yum -y install unzip

(2) AWS CLIバンドルインストーラをダウンロードする

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"

(3) ダウンロードしたファイルを解凍する

$ unzip awscli-bundle.zip

(4) インストーラを実行する

$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

(5) AWS CLIの動作確認

$ aws --version
aws-cli/1.16.77 Python/2.7.14 Linux/4.14.72-73.55.amzn2.x86_64 botocore/1.12.67

3.MacにAWSCLIをインストール

こちらの記事を参照して下さい。

公式のマックセットアップ手順は、こちらを参照

4.AWS CLIの設定

4.1 管理用のPCからAWS CLIを利用する場合(アクセスキーによる認証)

設定手順は、こちらの公式ページを参照して下さい。
アクセスキーの漏洩によるアカウント乗っ取りの可能があるので、EC2インスタンス上でAWS CLIを利用する場合は、次のIAMロールをEC2に割り当てる方法の利用を検討します。*1
(1)IAMユーザのアクセスキー ID とシークレットアクセスキーの生成と取得
以下は公式ドキュメントからの抜粋です。

  • IAM コンソールを開きます。
  • コンソールのナビゲーションペインで、[Users] を選択します。
  • IAM のユーザー名 (チェックボックスではありません) を選択します。
  • [Security credentials] タブを選択し、次に [Create access key] を選択します。
  • 新しいアクセスキーを表示するには、[Show] を選択します。認証情報は以下のようになります。

(2)AWS CLI設定
aws cliに、取得したアクセスキーとシークレットアクセスキー、デフォルトリージョンを設定します。

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXX      <==アクセスキーを設定
AWS Secret Access Key [None]: YYYYYYYYYYYY  <==シークレットアクセスキーを設定
Default region name [None]: ap-northeast-1  <==デフォルトリージョン設定( ap-northeast-1は東京リージョン)
Default output format [None]:

4.2 EC2からAWS CLIを利用する場合(EC2にIAMロール割り当て)

ユーザガイドは私にはわかりずらかったです。こちらの公式ブログの記事の方がわかりやすかったです。
(1)IAM ロールの作成

  • IAM コンソールを開きます。
  • コンソールのナビゲーションペインで、[Roles] を選択します。
  • [Create role]を選択します。
  • [AWS Service]を選び、許可したいサービスを選び[Next Permission]で進む。
  • 適切なpolicyを選び[next:Review]で進む。
  • Roleの名前と詳細説明を入力し、[Create Role]でロールを作成する

(2)EC2へのRole割り当て

  • EC2コンソールを開きます。
  • コンソールのナビゲーションペインで、[Instances] を選択します。
  • [Create Instance]インスタンス作成中に、作成したRoleを割り当てるか、
  • 割り当てたいインスタン(起動中も可)を選択し、[Attach/Replace IAM Role]で作成したロールをEC2に適用

(3)AWS CLI設定
ロールを割り当てる場合は、アクセスキーとシークレットキーは設定しないようにします。

$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: ap-northeast-1  <==デフォルトリージョン設定( ap-northeast-1は東京リージョン)
Default output format [None]:

5.その他

5.1 コマンド保管

awsコマンドを[TAB]キーで保管してくれるAWSコンプリータという機能があります。これをシェルに組み込めばコマンドを保管してくれます(pythonだからかわかりませんが、保管までに微妙な間があり使いづらいですが)。公式ドキュメントはこちらです。
(1)AWSコンプリータの場所を確認する

$ which aws_completer
/usr/bin/aws_completer

(2)プロファイルに組み込む
環境に依存しますが、例えば "~/.bash_profile"の末尾に下記行を追加します。

#Enable aws command autocompletion
complete -C '/usr/bin/aws_completer' aws

(3)反映
プロファイルを読み込み設定を反映させます。

source .bash_profile

5.2 AWS CLIの設定ファイル

コマンドの設定ファイルは、ホームディレクトリの.awsというディレクトリ(~/.aws)に格納されます。

  • ~/.awsディレクト
    • config    デフォルトリージョンなどの設定
    • credentials アクセスキーとシークレットアクセスキー