如何授予我的 Amazon EC2 執行個體存取權給另一個 AWS 帳戶中的 Amazon S3 儲存貯體?
我想使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,在另一個帳戶中存取我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。
解決方法
**注意事項:**授予 Amazon EC2 執行個體對 Amazon S3 儲存貯體存取權的步驟,類似於授予另一個帳戶中 AWS 資源的存取權的步驟。
完成下列步驟,授予帳戶 A 中執行個體存取帳戶 B 中 S3 儲存貯體的權限。
在帳戶 B 中,建立 IAM 角色
若要從帳戶 B 建立 Identity and Access Management (IAM) 角色,請完成下列步驟:
- 使用帳戶 B 登入 AWS 管理主控台。
- 開啟 IAM 主控台。
- 在導覽窗格中,選擇角色,然後選擇建立角色。
- 對於信任實體類型,選擇 AWS 帳戶。
- 選取其他 AWS 帳戶,然後輸入帳戶 A 的帳戶 ID。
- 選擇下一步。
- 連接 IAM 政策至委派存取 Amazon S3 的角色,然後選擇下一步。例如,下列 IAM 政策授予存放在儲存貯體中物件對 s3:GetObject 的存取權:
**注意事項:**根據使用案例所需的 Amazon S3 儲存貯體層級和物件層級權限修改 IAM 政策。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] } - 在角色名稱,輸入角色的名稱。
- (選用) 將標籤新增至角色。
- 選擇建立角色。
從帳戶 B 尋找 IAM 角色的 ARN
若要尋找 IAM 角色的 ARN,請完成下列步驟:
- 從 IAM 主控台的導覽窗格中,選擇角色。
- 選擇您建立的 IAM 角色。
- 請注意針對角色 ARN 列出的值。
從帳戶 A 建立另一個角色並將其連接至執行個體
若要從帳戶 A 建立另一個執行個體設定檔,並將其連接至執行個體,請完成下列步驟:
- 使用帳戶 A 登入 AWS 管理主控台。
- 開啟 IAM 主控台。
- 在導覽窗格中,選擇角色,然後選擇建立角色。
- 在信任實體類型,選擇 AWS 服務。
- 在服務或使用案例中,選擇 EC2,然後選擇您的使用案例。
- 選擇下一步。
- 在新增許可頁面上,選擇下一步。
- 在角色名稱,輸入角色的名稱。
- (選用) 將標籤新增至角色。
- 選擇建立角色。
- 從角色清單中,選擇您建立的角色。
- 在新增許可,選擇建立內嵌政策。
- 在政策編輯器,選擇 JSON,然後輸入下列政策:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111111111111:role/ROLENAME" }] }
注意事項:以您在帳戶 B 中建立的 IAM 角色 ARN 取代 arn:aws:iam::111111111111:role/ROLENAME。 選擇下一步。 在名稱,輸入政策名稱,然後選擇建立政策。 連接 IAM 角色至您用來存取 Amazon S3 儲存貯體的執行個體。
從 Amazon EC2 執行個體,為 CLI 組態檔案中的角色建立設定檔
**注意事項:**如果您使用 SSH 和工作階段管理員 (AWS Systems Manager 的功能) 連線至執行個體,則必須同時針對 ec2-user 和 ssm-user 執行這些步驟。
若要從執行個體為 CLI 組態檔案中的角色建立設定檔,請完成下列步驟:
-
連接至執行個體。如需詳細資訊,請參閱 Connect to your Linux instance 或 Connect to your Windows instance。
-
若要判斷目錄是否已擁有名為 ~/.aws 的資料夾,請執行下列 ls 命令來列出執行個體目錄:
ls -l ~/.aws如果找到 ~/.aws 資料夾,則繼續進行下一步。如果找不到 ~/.aws 資料夾,則執行下列 mkdir 命令來建立資料夾:
mkdir ~/.aws/ -
在 ~/.aws 資料夾內,使用文字編輯器建立一個檔案。將檔案命名為 config。
-
在檔案中,輸入下列文字:
[profile enterprofilename] role_arn = arn:aws:iam::111111111111:role/ROLENAME credential_source = Ec2InstanceMetadata**注意事項:**以您的值取代 enterprofilename。將 arn:aws:iam::111111111111:role/ROLENAME 取代您在帳戶 B 中建立的角色 ARN。
-
儲存檔案。
確認執行個體設定檔可以擔任該角色
若要確認執行個體的角色可以在帳戶 B 中擔任角色,請連接至執行個體並執行下列命令:
$aws sts get-caller-identity --profile profilename
**注意事項:**以連接至執行個體的角色名稱取代 profilename。
此命令會傳回類似下列內容的回應:
"Account": "11111111111", "UserId": "AROAEXAMPLEID:sessionName", "Arn": "arn:aws:sts::111111111111:assumed-role/ROLENAME/sessionName"
確認 "Arn" 的值與您在帳戶 B 中建立的角色 ARN 相符。
驗證對 Amazon S3 儲存貯體的存取權
若要確認執行個體可以存取 S3 儲存貯體,請連接至執行個體並執行下列命令:
aws s3 ls s3://DOC-EXAMPLE-BUCKET --profile profilename
**注意事項:**以連接至執行個體的角色名稱取代 profilename。
若您的執行個體可以順利存取儲存貯體,則您會收到類似下列內容的回應:
PRE Hello/ 2018-08-15 16:16:51 89 index.html
相關資訊
相關內容
- 已提問 2 年前
- 已提問 2 年前
AWS 官方已更新 6 個月前