使用 JSON
以下示例说明在创建索引时如何使用 JSON 进行用户访问控制。
警告
JSON 令牌是未经验证的有效负载。只有当对 Amazon Kendra 的请求来自可信服务器而不是浏览器时,才应使用此选项。
- Console
-
-
选择创建索引以开始创建新索引。
-
在指定索引详细信息页面上,为您的索引指定名称和描述。
-
对于 IAM 角色,选择一个角色或选择创建新角色,并指定角色名称来创建新角色。IAM 角色的前缀为“AmazonKendra-”。
-
将所有其他字段保留为默认值。选择下一步。
-
在配置用户访问控制页面上,在访问控制设置下,选择是以使用令牌进行访问控制。
-
在令牌配置下,选择 JSON 作为令牌类型。
-
指定要在 ACL 检查中使用的用户名。
-
指定要在 ACL 检查中使用的一个或多个组。
-
选择下一步。
-
在配置详细信息页面中,选择开发者版本。
-
选择创建以创建索引。
-
等待索引创建完成。Amazon Kendra 会为索引预配硬件。此操作可能需要一些时间。
-
- CLI
-
要使用 JSON 输入文件通过 AWS CLI 创建索引,请先使用所需参数创建一个 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如果您未使用适用于 AWS IAM Identity Center 的 Open ID,则可以将 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' )
使用带有公有密钥的 JSON Web 令牌(JWT)
创建数据来源连接器