

# 允许访问适用于外部配置 Hive 元存储的 Athena 数据连接器
<a name="hive-metastore-iam-access"></a>

本主题中的权限策略示例演示了需要允许的操作以及允许执行这些操作的资源。在将类似的权限策略附加到 IAM 身份之前，请仔细检查这些策略并根据您的需求修改它们。
+  [Example Policy to Allow an IAM Principal to Query Data Using Athena Data Connector for External Hive Metastore](#hive-using-iam) 
+  [Example Policy to Allow an IAM Principal to Create an Athena Data Connector for External Hive Metastore](#hive-creating-iam) 

**Example ：允许 IAM 主体使用适用于外部 Hive 元存储的 Athena 数据连接器查询数据**  
除了对 Athena 操作授予完全访问权限的 [AWS 托管策略：AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) 之外，还将以下策略附加到 IAM 主体。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction",
                "arn:aws:lambda:*:111122223333:layer:MyAthenaLambdaLayer:*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload"
            ],
            "Resource": "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"
        }
    ]
}
```


**权限说明**  

| 允许的操作 | 说明 | 
| --- | --- | 
|  <pre>"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:PutObject",<br />"s3:ListMultipartUploadParts",<br />"s3:AbortMultipartUpload"</pre>  |  `s3` 操作允许从指定为 `"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillLocation"` 的资源读取和写入到该资源，其中 *MyLambdaSpillLocation* 标识在调用的一个或多个 Lambda 函数的配置中指定的溢出存储桶。仅当您使用 Lambda 层创建自定义运行时依赖关系以减少部署时函数构件大小时，才需要 *arn:aws:lambda:\$1:*MyAWSAcctId*:layer:*MyAthenaLambdaLayer*:\$1* 资源标识符。最后一个位置的 `*` 是图层版本的通配符。  | 
|  <pre>"lambda:GetFunction",<br />"lambda:GetLayerVersion",<br />"lambda:InvokeFunction"</pre>  | 允许查询调用 Resource 块中指定的 AWS Lambda 函数。例如 arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction，其中 MyAthenaLambdaFunction 指定要调用的 Lambda 函数的名称。如示例中所示，可以指定多个函数。 | 

**Example ：允许 IAM 主体创建适用于外部 Hive 元存储的 Athena 数据连接器**  
除了对 Athena 操作授予完全访问权限的 [AWS 托管策略：AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) 之外，还将以下策略附加到 IAM 主体。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction",
                "lambda:ListFunctions",
                "lambda:GetLayerVersion",
                "lambda:InvokeFunction",
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:PublishLayerVersion",
                "lambda:DeleteLayerVersion",
                "lambda:UpdateFunctionConfiguration",
                "lambda:PutFunctionConcurrency",
                "lambda:DeleteFunctionConcurrency"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: function: MyAthenaLambdaFunctionsPrefix*"
        }
    ]
}
```
 **权限说明**   
允许查询为 `Resource` 块中指定的 AWS Lambda 函数调用 AWS Lambda 函数。例如 `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction`，其中 *MyAthenaLambdaFunction* 指定要调用的 Lambda 函数的名称。如示例中所示，可以指定多个函数。