如何允許我的 Lambda 執行角色存取我的 Amazon S3 儲存貯體?

上次更新日期:2021-07-20

我希望我的 AWS Lambda 函數能夠存取 Amazon Simple Storage Service (Amazon S3) 儲存貯體。我如何做到這一點?

簡短描述

若要為您的 Lambda 函數授予對同一 AWS 帳戶中 Amazon S3 儲存貯體的存取權,請執行下列動作:

1.    為 Lambda 函數建立 AWS Identity and Access Management (IAM) 角色,它還將授予對 S3 儲存貯體的存取權。

2.    將 IAM 角色設定為 Lambda 函數的執行角色

3.    驗證 S3 儲存貯體政策沒有明確拒絕對 Lambda 函數或其執行角色的存取權。

重要:如果您的 S3 儲存貯體和函數的 IAM 角色在不同的帳戶中,則您還必須在 S3 儲存貯體政策中授予所需的許可。如需詳細資訊,請參閱如何提供對 Amazon S3 儲存貯體中物件的跨帳戶存取權?

解決方案

為 Lambda 函數建立 IAM 角色,它還將授予對 S3 儲存貯體的存取權

1.    依照在 IAM 主控台中建立執行角色中的步驟進行。

2.    從 IAM 角色清單中,選擇您剛建立的角色。

3.    在 Permissions (許可) 標籤上,選擇 Add inline policy (新增內嵌政策)。

4.    選擇 JSON 標籤。

5.    輸入資源型 IAM 政策,此政策授予對 S3 儲存貯體的存取權。如需詳細資訊,請參閱將資源型政策用於 AWS Lambda

授予對特定 S3 儲存貯體的存取權的 IAM 政策範例

重要:"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" 取代為您的 S3 儲存貯體的 Amazon 資源名稱 (ARN)。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

6.    選擇 Review policy (檢閱政策)。

7.    對於 Name (名稱),輸入您的政策的名稱。

8.    選擇 Create policy (建立政策)。

將 IAM 角色設定為 Lambda 函數的執行角色

1.    開啟 Lambda 主控台

2.    選擇您的 Lambda 函數。

3.    在 Execution role (執行角色) 下,對於 Existing role (現有角色),選取您建立的 IAM 角色。

4.    選擇 Save (儲存)。

驗證 S3 儲存貯體政策沒有明確拒絕對 Lambda 函數或其執行角色的存取權

若要檢閱或編輯 S3 儲存貯體政策,請依照使用 Amazon S3 主控台新增儲存貯體政策中的指示進行操作。

重要:如果您的 S3 儲存貯體和函數的 IAM 角色在不同的帳戶中,您還必須在 S3 儲存貯體政策中明確授予所需的許可。如需詳細資訊,請參閱如何提供對 Amazon S3 儲存貯體中物件的跨帳戶存取權?

IAM S3 儲存貯體政策範例,此政策為 Lambda 執行角色授予對 S3 儲存貯體的跨帳戶存取權

重要:"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*" 取代為您的 S3 儲存貯體的 ARN。將 "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" 取代為您的 Lambda 執行角色的 ARN。

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

此文章是否有幫助?


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