設定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
沒有留言:
張貼留言