跳至內容

如何授予我的 Amazon EC2 執行個體存取權給另一個 AWS 帳戶中的 Amazon S3 儲存貯體?

2 分的閱讀內容
0

我想使用 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) 角色,請完成下列步驟:

  1. 使用帳戶 B 登入 AWS 管理主控台
  2. 開啟 IAM 主控台
  3. 在導覽窗格中,選擇角色,然後選擇建立角色
  4. 對於信任實體類型,選擇 AWS 帳戶
  5. 選取其他 AWS 帳戶,然後輸入帳戶 A 的帳戶 ID。
  6. 選擇下一步
  7. 連接 IAM 政策至委派存取 Amazon S3 的角色,然後選擇下一步。例如,下列 IAM 政策授予存放在儲存貯體中物件對 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 政策。
  8. 角色名稱,輸入角色的名稱。
  9. (選用) 將標籤新增至角色。
  10. 選擇建立角色

從帳戶 B 尋找 IAM 角色的 ARN

若要尋找 IAM 角色的 ARN,請完成下列步驟:

  1. 從 IAM 主控台的導覽窗格中,選擇角色
  2. 選擇您建立的 IAM 角色。
  3. 請注意針對角色 ARN 列出的值。

從帳戶 A 建立另一個角色並將其連接至執行個體

若要從帳戶 A 建立另一個執行個體設定檔,並將其連接至執行個體,請完成下列步驟:

  1. 使用帳戶 A 登入 AWS 管理主控台
  2. 開啟 IAM 主控台
  3. 在導覽窗格中,選擇角色,然後選擇建立角色
  4. 信任實體類型,選擇 AWS 服務
  5. 服務或使用案例中,選擇 EC2,然後選擇您的使用案例。
  6. 選擇下一步
  7. 新增許可頁面上,選擇下一步
  8. 角色名稱,輸入角色的名稱。
  9. (選用) 將標籤新增至角色。
  10. 選擇建立角色
  11. 從角色清單中,選擇您建立的角色。
  12. 新增許可,選擇建立內嵌政策
  13. 政策編輯器,選擇 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 組態檔案中的角色建立設定檔,請完成下列步驟:

  1. 連接至執行個體。如需詳細資訊,請參閱 Connect to your Linux instanceConnect to your Windows instance

  2. 若要判斷目錄是否已擁有名為 ~/.aws 的資料夾,請執行下列 ls 命令來列出執行個體目錄:

    ls -l ~/.aws

    如果找到 ~/.aws 資料夾,則繼續進行下一步。如果找不到 ~/.aws 資料夾,則執行下列 mkdir 命令來建立資料夾:

    mkdir ~/.aws/
  3. ~/.aws 資料夾內,使用文字編輯器建立一個檔案。將檔案命名為 config

  4. 在檔案中,輸入下列文字:

    [profile enterprofilename]
    role_arn = arn:aws:iam::111111111111:role/ROLENAME
    
    credential_source = Ec2InstanceMetadata

    **注意事項:**以您的值取代 enterprofilename。將 arn:aws:iam::111111111111:role/ROLENAME 取代您在帳戶 B 中建立的角色 ARN。

  5. 儲存檔案。

確認執行個體設定檔可以擔任該角色

若要確認執行個體的角色可以在帳戶 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

相關資訊

IAM 教學課程: 使用 IAM 角色委派跨 AWS 帳戶的存取權

AWS 官方已更新 2 年前