こんにちは
自分のパソコンにコマンドをインストールして、外部からコントロールする場合の方法です。
1.接続用のIAM(Identity and Access Management)の設定をします。IAMダッシュボードを開いて、「ロール」をクリックします。
2.「ロール」をクリックしたら「ロール作成」ボタンをクリックします。
3.「ロールの作成」をクリックしたらロールを与えるサービスを選択します。今回はEC2を選択します。クリックしたら、「次のステップ:アクセス権限」をクリックします。
4.「次のステップ:アクセス権限」をクリックしたら、現在定義されているアクセス権限の一覧が表示されるので、今回は、「AdministratorAccess」を選択して、「次のステップ:タグ」をクリックします。
5.「次のステップ:タグ」をクリックするとタグ設定の画面表示されます。何かキーワードで検索したりしたい場合は設定しますが、今回は特に設定せずにそのまま「次のステップ:確認」をクリックします。
6.「次のステップ:確認」をクリックすると、設定の確認と、ロールの名を入力する画面が表示されますので、「ロール名」に任意の名称を入力して、「ロールの作成」ボタンをクリックします。今回はロール名を「EC2_AdministratorAccess」としました。
7.「ロールの作成」ボタンをクリックするとIAMコンソールに戻りますのでロールが作成されていることを確認します。
ロールの割り当て
1.作成したロールをEC2のインスタンスに割り当てます。EC2のダッシュボードを開き、割り当てを行うインスタンスチェックして、「アクション」→「セキュリティ」→「IAMロールを変更」を選択します。
2.「IAMロールを変更」を選択すると、IAMロールの選択が表示されますので、先ほど作成した「EC2_AdministratorAccess」を選択して、「保存」ボタンをクリックします。
AWS CLI のコンフィグレーション(ローカルの場合)
EC2インスタンス上でまず実行できるかどうか確認してみます。
1.EC2 インスタンスへ接続します。今回はAmazon Linux のインスタンスを使用しています。
ssh -i [key-pair-name] ec2-user@[host-name] のようにして接続します。
2.aws コマンドの設定をします。以下のように実行します。私もよく理解できているかどうかわからないのですが、「AWS Access Key ID」と「AWS Secret Access Key」は自分のホストに対してコマンドを実行する場合は指定しなくても大丈夫ですが、外部から接続したりする場合は必要なんだと思います。
※2021/05/05追記:以下はAWS の インスタンス上で実行します。
[user@host ~] aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json
3.実際に実行してみます。
[user@host ~] aws ec2 describe-regions
{
"Regions": [
{
"OptInStatus": "opt-in-not-required",
"Endpoint": "ec2.eu-north-1.amazonaws.com",
"RegionName": "eu-north-1"
},
これでなんとなく動作することは確認できました。
今度は、外部のネットワークから同様にできるようにします。
アクセスキーの作成
1.IAMダッシュボードを開いて、「ユーザ」をクリックして、「ユーザの作成」ボタンをクリックします。
2.「ユーザの作成」をクリックすると、次のような画面が表示されますので、「ユーザ名」に任意のユーザ名を指定して、「アクセスの種類」を「AWS API ・・・」にして、「次のステップ:アクセス権限」ボタンをクリックします。
3.「次のステップ:アクセス権限」をクリックすると、次のような画面が表示されますので、今回は練習ですので、「既存ポリシーを直接アタッチ」として「AmazonEC2FullAccess」を選択して、「次のステップ:タグ」をクリックします。
4.「次のステップ:タグ」をクリックすると次のような画面が表示されますが、特に何も設定しないで、「次のステップ:確認」ボタンをクリックします。
5.「次のステップ:確認」ボタンをクリックすると、次のような画面が表示されますので、設定の内容を確認して「ユーザの作成」ボタンをクリックします。
6.「ユーザの作成」ボタンをクリックすると次のような画面が表示されますので、「.csvのダウンロード」ボタンをクリックしてキーの情報を保存します(画面上でも確認できます)。保存したら「閉じる」ボタンを押して画面を閉じてしまってください。
コマンドラインインターフェイスのインストール
1.以下のURLからAWSコマンドラインインターフェイスをインストールします。
私の場合は MacOS用をインストールしました。AWSCLIV2.pkg というファイルがダウンロードされるので、ダブルクリックしてインストールします。
https://aws.amazon.com/jp/cli/
パスを設定したり色々と面倒かなと思ったのですが、勝手に /usr/local/bin/aws-cli にインストールされてシンボリックリンクが作成されていました。
AWS CLI のコンフィグレーション(MacOSの場合)
先ほどはEC2のインスタンスに接続して実行しましたが、今度は外部から実行できるかどうか確認してみます。
1.aws コマンドの設定をします。以下のように実行します。私もよく理解できているかどうかわからないのですが、「AWS Access Key ID」と「AWS Secret Access Key」は自分のホストに対してコマンドを実行する場合は指定しなくても大丈夫ですが、外部から接続したりする場合は必要なんだと思います。
※2021/05/05追記:こちらは自分のパソコンで実行した例です。
[user@host ~] aws configure
AWS Access Key ID [None]: [アクセスキーの作成でできたAccess Key ID]
AWS Secret Access Key [None]: [アクセキーの作成でできた Secret Access Key]
Default region name [None]: ap-northeast-1
Default output format [None]: json
2.今度はMacOS上のターミナルで実行してみます。
user@MacBookAir13 ~ % aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.eu-north-1.amazonaws.com",
"RegionName": "eu-north-1",
"OptInStatus": "opt-in-not-required"
},
・
・
なんか動いているような気がします。
アクセスキーの作成(root userの場合)
あまり推奨できないとは思いますが、IAMで新たにユーザを作らずに、ログインしているユーザに対してアクセスキーを設定することもできます。ロールごとに設定するとかそういうことができないようですので、IAMでユーザを作ってロールごとにアクセスキーを生成するというやり方の方が良いような気がします。
1.ManagementConsoleを開いて、アカウント名のリストから、「マイセキュリティ資格情報」を選択します。
2.「マイセキュリティ資格情報」を選択したら、「アクセスキー(アクセスキーIDとシクレっとアクセスキー)」を選択して、「新しいアクセスキーの作成」をクリックします。
3.「新しいアクセスキーの作成」をクリックすると以下のような画面が表示されますので、「キーファイルのダウンロード」ボタンをクリックします。
保存したファイルの中に書かれている情報があると外部から接続できてしまいますので、大切に保管する必要があります。