AdSense

網頁

2021/12/16

AWS 設定EC2讀取S3 bucket IAM role權限

設定EC2讀取S3 bucket IAM role權限的方式如下。


事前要求

參考「AWS EC2 建立instance範例」建立EC2 instance。

參考「AWS 建立S3 bucket並上傳檔案」建立S3 bucket s3-demo-bucket-202112151320及上傳hello.txt

範例的S3 bucket名稱為s3-demo-bucket-202112151320,內有一個hello.txt



連線到EC2 instance以AWS CLI命令aws s3 ls s3://<bucket-name>讀取S3 bucket時若權限不足或沒憑證會顯示以下訊息。<bucket-name>為讀取的S3 bucket名稱,範例為s3-demo-bucket-202112151320

[ec2-user@ip-172-31-21-26 ~]$ aws s3 ls s3://s3-demo-bucket-202112151320
Unable to locate credentials. You can configure credentials by running "aws configure".


建立IAM role

設定可讀取S3 bucket的IAM role使EC2可以讀取S3 bucket。前往IAM管理頁面點選左側選單的[Roles]。



然後點選右側的[Create role]設定建立role的參數。



在[Select type of trusted entity]選擇[AWS service];
[Choose a use case]選擇[EC2]。點選下方的[Next:Permissions]繼續下一步。



在[Filter policies]篩選policy欄位輸入"AmazonS3ReadOnlyAccess",然後勾選下方篩選的[AmazonS3ReadOnlyAccess]policy。點選下方的[Next:Tags]繼續下一步。



不用設定tag,點下面的[Next:Review]下一步。

在[Role name]輸入要建立的role名稱。範例命名為EC2S3ReadOnlyAccessRole。點選下方[Create role]完成建立。



在IAM管理面板可看到建好的[EC2S3ReadOnlyAccessRole]。




EC2 instance設定role

在EC2管理頁面進入要設定role的EC2 instance,點選右上方的[Actions]下拉選單,選擇[Security] > [Modify IAM role]。



在[IAM role]下拉選單選擇剛建立的[EC2S3ReadOnlyAccessRole],然後點[Save]儲存設定。



到此EC2 instance即有讀取S3 bucket的權限。


測試

連線到EC2 instance,輸入aws s3 ls s3://<bucket-name>若可檢正確查詢S3 bucket的檔案資訊代表設定成功。

[ec2-user@ip-172-31-21-26 ~]$ aws s3 ls s3://s3-demo-bucket-202112151320
2021-12-15 05:27:43         11 hello.txt


沒有留言:

AdSense