

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 授予使用者對 Lambda 函數的存取權
<a name="permissions-user-function"></a>

使用[身分型政策](access-control-identity-based.md)以允許使用者、使用者群組或角色對 Lambda 函數執行操作。

**注意**  
對於定義為容器映像的函數，存取映像的使用者許可必須在 Amazon Elastic Container Registry (Amazon ECR) 中設定。如需範例，請參閱 [Amazon ECR 儲存庫政策](images-create.md#configuration-images-permissions)。

以下顯示具受限範圍之許可政策的範例。這可讓使用者建立和管理以指定字首 (`intern-`) 命名並以指定執行角色設定的 Lambda 函數。

**Example 函數開發政策**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyPermissions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetAccountSettings",
                "lambda:GetEventSourceMapping",
                "lambda:GetFunction",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetFunctionConcurrency",
                "lambda:ListEventSourceMappings",
                "lambda:ListFunctions",
                "lambda:ListTags",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DevelopFunctions",
            "Effect": "Allow",
            "NotAction": [
                "lambda:AddPermission",
                "lambda:PutFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:*:function:intern-*"
        },
        {
            "Sid": "DevelopEventSourceMappings",
            "Effect": "Allow",
            "Action": [
                "lambda:DeleteEventSourceMapping",
                "lambda:UpdateEventSourceMapping",
                "lambda:CreateEventSourceMapping"
            ],
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*"
                }
            }
        },
        {
            "Sid": "PassExecutionRole",
            "Effect": "Allow",
            "Action": [
                "iam:ListRolePolicies",
                "iam:ListAttachedRolePolicies",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:PassRole",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
        },
        {
            "Sid": "ViewLogs",
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"
        }
    ]
}
```

會根據許可支援的[資源和條件](lambda-api-permissions-ref.md)來將此政策中的許可組織為陳述式。
+ `ReadOnlyPermissions` - Lambda 主控台會在您瀏覽和檢視函數時使用這些許可。他們不支援資源模式或條件。

  ```
              "Action": [
                  "lambda:GetAccountSettings",
                  "lambda:GetEventSourceMapping",
                  "lambda:GetFunction",
                  "lambda:GetFunctionConfiguration",           
                  "lambda:GetFunctionCodeSigningConfig",
                  "lambda:GetFunctionConcurrency",                
                  "lambda:ListEventSourceMappings",
                  "lambda:ListFunctions",      
                  "lambda:ListTags",
                  "iam:ListRoles"
              ],
              "Resource": "*"
  ```
+ `DevelopFunctions` - 使用會對字首為 `intern-` 的函數進行操作的 Lambda 動作 (除了 `AddPermission` 和 `PutFunctionConcurrency`)。`AddPermission` 會在該函數中修改[以資源為基礎的政策](access-control-resource-based.md)，並且可能會產生安全隱憂。`PutFunctionConcurrency` 會為某函數保留擴展容量並可從其他函數取走容量。

  ```
              "NotAction": [
                  "lambda:AddPermission",
                  "lambda:PutFunctionConcurrency"
              ],
              "Resource": "arn:aws:lambda:*:*:function:intern-*"
  ```
+ `DevelopEventSourceMappings` – 在字首為 `intern-` 的函數上管理事件來源映射。這些動作會在事件來源映射上操作，但您可以使用*條件*來依函數進行限制。

  ```
              "Action": [
                  "lambda:DeleteEventSourceMapping",
                  "lambda:UpdateEventSourceMapping",
                  "lambda:CreateEventSourceMapping"
              ],
              "Resource": "*",
              "Condition": {
                  "StringLike": {
                      "lambda:FunctionArn": "arn:aws:lambda:*:*:function:intern-*"
                  }
              }
  ```
+ `PassExecutionRole` - 檢視並僅傳遞名為 `intern-lambda-execution-role` 的角色，必須由具有 IAM 許可的使用者建立和管理該角色。當您將執行角色指派至函數時就會用到 `PassRole`。

  ```
              "Action": [
                  "iam:ListRolePolicies",
                  "iam:ListAttachedRolePolicies",
                  "iam:GetRole",
                  "iam:GetRolePolicy",
                  "iam:PassRole",
                  "iam:SimulatePrincipalPolicy"
              ],
              "Resource": "arn:aws:iam::*:role/intern-lambda-execution-role"
  ```
+ `ViewLogs` - 使用 CloudWatch Logs 來檢視字首為 `intern-` 的函數的日誌。

  ```
              "Action": [
                  "logs:*"
              ],
              "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/intern-*"
  ```

此政策可讓使用者開始使用 Lambda，而不需使其他使用者的資源承受風險。它不允許使用者設定由 觸發的函數或呼叫其他 AWS 服務，這需要更廣泛的 IAM 許可。這也不包含對不支援 CloudWatch 和 X-Ray 這類範圍受限政策之服務的許可。對這些服務使用唯讀政策來為使用者提供指標和追蹤資料的存取。

當您為函數設定觸發時，您需要存取 ，才能使用叫用函數 AWS 的服務。例如，若要設定 Amazon S3 觸發，您需要使用 Amazon S3 動作的許可來管理儲存貯體通知。這些許可包含在 [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_FullAccess.html) 受管政策中。