

# 外部 Hive メタストア用の Athena データコネクタへのアクセスを許可する
<a name="hive-metastore-iam-access"></a>

このトピックのアクセス許可ポリシーの例は、使用可能な必須アクションとそれらのアクションが許可されるリソースを示しています。同様のアクセス許可ポリシーを IAM ID にアタッチする前に、これらのポリシーを慎重に検討し、要件に従って変更してください。
+  [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 データコネクタを使用してデータをクエリすることを許可する**  
以下のポリシーは、IAM プリンシパルに、Athena アクションへの完全なアクセス許可を付与する [AWS 管理ポリシー: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) に加えてアタッチされるポリシーです。    
****  

```
{
    "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 関数の設定で指定されているスピルバケットを示します。*arn:aws:lambda:\$1:*MyAWSAcctId*:layer:*MyAthenaLambdaLayer*:\$1* リソース識別子は、デプロイ時の関数アーティファクトのサイズを削減するために、Lambda レイヤーを使用してカスタムランタイムの依存関係を作成する場合にのみ必要です。最後の位置にある `*` は、レイヤーバージョンのワイルドカードです。  | 
|  <pre>"lambda:GetFunction",<br />"lambda:GetLayerVersion",<br />"lambda:InvokeFunction"</pre>  | クエリが Resource ブロックで指定された AWS Lambda 関数を呼び出すことを許可します。例えば、MyAthenaLambdaFunction が呼び出される Lambda 関数の名前を指定する arn:aws:lambda:\$1:MyAWSAcctId:function:MyAthenaLambdaFunction などです。例に示すように、複数の関数を指定できます。 | 

**Example – IAM プリンシパルが外部 Hive メタストア用の Athena データコネクタを作成することを許可する**  
次のポリシーは、IAM プリンシパルに、Athena アクションへの完全なアクセス許可を付与する [AWS 管理ポリシー: AmazonAthenaFullAccess](security-iam-awsmanpol.md#amazonathenafullaccess-managed-policy) に加えてアタッチされるポリシーです。    
****  

```
{
    "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 関数を呼び出すことを許可します。例えば、*MyAthenaLambdaFunction* が呼び出される Lambda 関数の名前を指定する `arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction` などです。例に示すように、複数の関数を指定できます。