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