

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

# 使用 JSON
<a name="create-index-access-control-tokens-json"></a>

下列範例示範如何在建立索引時使用 JSON 進行使用者存取控制。

**警告**  
JSON 字符是未經驗證的承載。只有在請求 Amazon Kendra 來自信任的伺服器且從未來自瀏覽器時，才應使用此選項。

------
#### [ Console ]

1. 選擇**建立索引**以開始建立新的索引。

1. 在**指定索引詳細資訊**頁面上，為您的索引指定名稱和描述。

1. 針對**IAM 角色**，選取角色或選取**建立新角色**，並指定角色名稱以建立新的角色。 IAM 角色的字首為「AmazonKendra-」。

1. 將所有其他欄位保留為預設值。選擇**下一步**。

1. 在**設定使用者存取控制**頁面的**存取控制設定**下，選擇**是**以使用字符進行存取控制。

1. 在**字符組態**下，選取 **JSON** 做為**字符類型**。

1. 指定要在 ACL 檢查中使用的**使用者名稱**。

1. 指定要在 ACL 檢查中使用的一或多個**群組**。

1. 選擇**下一步**。

1. 在**佈建詳細資訊**頁面中，選擇**開發人員版本**。

1. 選擇**建立**以建立您的索引。

1. 等待您的索引建立。 Amazon Kendra 佈建索引的硬體。此操作可能需要一些時間。

------
#### [ CLI ]

若要 AWS CLI 使用 JSON 輸入檔案使用 建立索引，請先使用所需的參數建立 JSON 檔案：

```
{
    "Name": "{{user-context}}",
    "Edition": "{{ENTERPRISE_EDITION}}",
    "RoleArn": "arn:aws:iam::{{account-id}}:role:/{{my-role}}",
    "UserTokenConfigurations": [
        {
            "JsonTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

接著，`create-index`使用輸入檔案呼叫 。例如，如果您的 JSON 檔案名稱為 `create-index-openid.json`，您可以使用下列項目：

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

如果您不是針對 使用 Open ID AWS IAM Identity Center，則可以將 JSON 格式的字符傳送給我們。如果您這麼做，則必須指定 JSON 權杖中的哪個欄位包含使用者名稱，以及哪個欄位包含群組。群組欄位值必須是 JSON 字串陣列。例如，如果您使用的是 SAML，您的字符會與下列類似：

```
{
     "username" : "user1", 
     "groups": [
        "group1", 
        "group2"
     ]
}
```

`TokenConfiguration` 會指定使用者名稱和群組欄位名稱：

```
{
    "UserNameAttributeField":"username",
    "GroupAttributeField":"groups"
}
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='{{user-context}}',
    Edition='{{ENTERPRISE_EDITION}}',
    RoleArn='arn:aws:iam::{{account-id}}:role:/{{my-role}}',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "UserNameAttributeField": "{{user}}",
                "GroupAttributeField": "{{group}}",
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------