この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。イムチェジョンです。
今回のブログではIAMロールをEC2インスタンスに設定をし、インスタンスの中でawsコマンドを実行してみたいと思います。
アジェンダ
- インスタンスでawsコマンドテスト
- IAMロールの作成
- IAMロールをEC2インスタンスに設定
- もう一回インスタンスでawsコマンドテスト
- まとめ
1. インスタンスでawsコマンドテスト
EC2 Linux インスタンスにCLIが設置されているのを確認します。
$ aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/4.14.238-182.422.amzn2.x86_64 botocore/1.18.6
その後コマンドを実行してみるとエラーが出てきます。
エラーの内容は資格証明がされてないので、aws configure
コマンドを使って資格証明をしてほしいということです。
$ aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".
実際にコマンドを実行すると設定は可能になりますが、EC2インスタンスの中に資格証明のデータが残ることになります。
そうなるとセキュリティに大きな問題になると思います。
$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
なので、aws configure
の設定をしなくても良いようにIAMロールをEC2インスタンスに設定しましょう。
2. IAMロールの作成
IAMロールを作成しましょう。
AWSサービスの中でEC2を選択します。
簡単なテストのなめにIAMユーザーの一覧を表示する予定なので、IAMReadOnlyAccess
ポリシーを追加します。
IAMロールの名前を入力し、作成をします。
作成されたIAMロールを確認してみると、IAMReadOnlyAccess
ポリシーが成功的に追加されています。
3. IAMロールをEC2インスタンスに設定
インスタンスのセキュリティ部分にどんなIAMロールが設定されているか見れます。今は何も設定されてないです。
IAMロールを設定するためにインスタンスを選択します。
アクション
>セキュリティ
>IAMロールを変更
の順にクリックします。
上で作成したIAMロールを選択して保存します。
インスタンスページのセキュリティ部分で設定されているのを確認したらIAMロールの設定の完了です。
4. もう一回インスタンスでawsコマンドテスト
設定が完了されたので、最初に実行したコマンドをもう一回実行してみましょう。
$ aws iam list-users
{
"Users": [
{
"UserName": "amplify-user",
"Path": "/",
"CreateDate": "2021-07-15T02:35:43Z",
"UserId": "*********************",
"Arn": "arn:aws:iam::************:user/amplify-user"
},
{
"UserName": "cli_user",
"Path": "/",
"CreateDate": "2021-07-29T06:47:03Z",
"UserId": "*********************",
"Arn": "arn:aws:iam::************:user/cli_user"
}
]
}
よく実行されました。
これでaws configure
の設定をする必要なく、awsコマンドを実行できるようになりました。
5. まとめ
今回はIAMロールをEC2インスタンスに設定をしてみました。こうすることでIAMロールに含まれているポリシーをEC2インスタンスで使えるようになります。