如何授予我的 Amazon EC2 執行個體對 Amazon S3 儲存貯體的存取權?

上次更新日期:2021 年 7 月 22 日

我無法從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如何從 EC2 執行個體啟用對 S3 儲存貯體的讀取/寫入存取權?

簡短描述

若要從 EC2 執行個體連線至 S3 儲存貯體,必須執行以下操作:

1.    建立一個 AWS Identity and Access Management (IAM) 描述檔角色,授予對 Amazon S3 的存取權。

2.    將 IAM 執行個體描述檔連接至執行個體。

3.    驗證對 S3 儲存貯體的許可。

4.    驗證從 EC2 執行個體到 Amazon S3 的網路連線。

5.    驗證對 S3 儲存貯體的存取。

解決方案

建立一個 IAM 執行個體描述檔,授予對 Amazon S3 的存取權

1.    開啟 IAM console (IAM 主控台)。

2.    選擇 Roles (角色),然後選擇 Create role (建立角色)。

3.    選取 AWS Service (AWS 服務),然後選擇 EC2

注意:從主控台建立 IAM 角色,並將 EC2 選取為可信任實體,這會自動建立一個與角色名稱同名的 IAM 執行個體描述檔。然而,如果角色使用 AWS Command Line Interface (AWS CLI) 或透過 API 建立,則不會自動建立執行個體描述檔。如需詳細資訊,請參閱我建立了一個 IAM 角色,但是當我啟動一個執行個體時,該角色沒有出現在下拉清單中。我該怎麼做?

4.    選取 Next: Permissions (下一步:許可)。

5.    建立一項自訂政策,提供存取 S3 儲存貯體的最低必要許可。如需有關建立自訂政策的說明,請參閱編寫 IAM 政策:如何授予對 Amazon S3 儲存貯體的存取權Amazon S3 中的 Identity and Access Management

注意:建立具有最低必要許可的政策是一項安全最佳實務。但是,若要允許 EC2 存取您的所有 Amazon S3 儲存貯體,可以使用 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess 受管 IAM 政策。

6.    選取 Next: Tags (下一步:標籤),然後選取 Next: Review (下一步:檢閱)。

7.    輸入 Role name (角色名稱),然後選取 Create role (建立角色)。

將 IAM 執行個體描述檔連接至 EC2 執行個體

1.    開啟 Amazon EC2 console (Amazon EC2 主控台)。

2.    選擇 Instances (執行個體)。

3.    選取要連接 IAM 角色的目標執行個體。

4.    選擇 Actions (動作) 標籤,選擇 Security (安全),然後選擇 Modify IAM role (修改 IAM 角色)。

5.    選取您剛剛建立的 IAM 角色,然後選擇 Save (儲存)。IAM 角色已指派給您的 EC2 執行個體。

驗證對 S3 儲存貯體的許可

1.    開啟 Amazon S3 console (Amazon S3 主控台)。

2.    選取要驗證其政策的 S3 儲存貯體。

3.    選擇 Permissions (許可)。

4.    選擇 Bucket Policy (儲存貯體政策)。

5.    搜尋帶有 Effect: Deny 的陳述式。

6.    在您的儲存貯體政策中,編輯或移除任何拒絕 IAM 執行個體描述檔存取您的儲存貯體的 Effect: Deny 陳述式。如需有關編輯政策的說明,請參閱編輯 IAM 政策

驗證從 EC2 執行個體到 Amazon S3 的網路連線

驗證 EC2 執行個體是否具有與 S3 端點的連線。

執行個體必須是以下其中一項:

EC2 執行個體,包含公有 IP 地址和路由表條目,且預設路由指向網際網路閘道。
私有 EC2 執行個體,包含通過 NAT 閘道的預設路由。
私有 EC2 執行個體,使用閘道 VPC 端點與 Amazon S3 連線。

驗證對 S3 儲存貯體的存取權

1.    安裝 AWS CLI。

注意:如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版 AWS CLI

2.    透過執行以下命令驗證對 S3 儲存貯體的存取權。將 DOC-EXAMPLE-BUCKET 取代為您的 S3 儲存貯體名稱。

aws s3 ls s3://DOC-EXAMPLE-BUCKET

注意:使用 AWS Key Management Service (AWS KMS) 金鑰加密的 S3 物件,必須在以下各項授予 kms: Decrypt 許可:
連接至執行個體的 IAM 角色。
KMS 金鑰政策。

如果未授予這些許可,則無法複製或下載 S3 物件。如需詳細資訊,請參閱從 Amazon S3 下載 KMS 加密物件時,是否需要指定 AWS KMS 金鑰?


此文章是否有幫助?


您是否需要帳單或技術支援?