View a markdown version of this page

管理策略和策略引擎 - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理策略和策略引擎

使用这些操作来管理您的策略引擎和策略。

Amazon CLI 和 Amazon SDK 可以对您账户中的任何策略引擎执行操作。 AgentCore CLI 的作用域仅限于单个 AgentCore 项目:它可以删除项目管理的引擎和策略,并agentcore status显示其已部署状态,但它没有等效项来读取或更新未创建的资源。使用 Amazon CLI 或 SDK 来解决这些问题。

列出策略引擎

查看您账户中的所有策略引擎。

选择以下方法之一:

例
Amazon CLI
  1. aws bedrock-agentcore-control list-policy-engines
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.list_policy_engines() for engine in response['policyEngines']: print(f"Policy Engine: {engine['name']} (ID: {engine['policyEngineId']})") print(f"Status: {engine['status']}") print(f"Created: {engine['createdAt']}") print(f"ARN: {engine['policyEngineArn']}")

无需解密即可列出摘要

除ListPolicyEngines和外ListPolicies,该服务还提供摘要,这些摘要返回标识符、姓名和状态,但省略了加密内容。策略引擎的摘要没有描述,策略的摘要没有描述definition。

aws bedrock-agentcore-control list-policy-engine-summaries aws bedrock-agentcore-control list-policy-summaries \ --policy-engine-id my_policy_engine-a1b2c3d4e5

当您需要清单而不是报表本身时,请使用它们。当客户管理的密钥不可用时,您还可以使用它们来枚举存在的内容。完整列表和获取操作会在返回之前验证密钥并进行解密,因此当密钥被禁用、删除或撤销其授权时,它们会失败。摘要两者都没有。有关更多信息,请参阅密钥不可用:您无法列出或阅读您的政策。

获取策略引擎

检索有关特定策略引擎的详细信息:

例
Amazon CLI
  1. aws bedrock-agentcore-control get-policy-engine --policy-engine-id my_policy_engine-a1b2c3d4e5
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.get_policy_engine( policyEngineId='my_policy_engine-a1b2c3d4e5' ) print(f"Policy Engine: {response['name']}") print(f"ID: {response['policyEngineId']}") print(f"ARN: {response['policyEngineArn']}") print(f"Status: {response['status']}") print(f"Created: {response['createdAt']}") print(f"Updated: {response['updatedAt']}")

在策略引擎中列出策略

查看特定策略引擎中的所有策略:

例
Amazon CLI
  1. aws bedrock-agentcore-control list-policies --policy-engine-id my_policy_engine-a1b2c3d4e5
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.list_policies( policyEngineId='my_policy_engine-a1b2c3d4e5' ) for policy in response['policies']: print(f"Policy: {policy['name']} (ID: {policy['policyId']})") print(f"Status: {policy['status']}") print(f"Description: {policy.get('description', 'No description')}") print(f"Created: {policy['createdAt']}")

获取政策

检索有关特定策略的详细信息:

例
Amazon CLI
  1. aws bedrock-agentcore-control get-policy --policy-engine-id my_policy_engine-a1b2c3d4e5 --policy-id my_policy-a1b2c3d4e5
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') response = client.get_policy( policyId='my_policy-a1b2c3d4e5', policyEngineId='my_policy_engine-a1b2c3d4e5' ) print(f"Policy: {response['name']}") print(f"ID: {response['policyId']}") print(f"ARN: {response['policyArn']}") print(f"Status: {response['status']}") print(f"Created: {response['createdAt']}") print(f"Updated: {response['updatedAt']}") print(f"Cedar Statement: {response['definition']['policy']['statement']}")

更新现有政策

UpdatePolicy是就地替代品,因此请发送您想要的完整对账单。

验证分两个阶段进行。格式错误的语句在呼叫时会被拒绝。ValidationException不受约束的原resource因之一:要么将其限制在特定的网关上resource ==,要么限制到带有的类型。resource is AgentCore::Gateway解析但不进行类型检查的语句返回 HTTP 202 并结算为UPDATE_FAILED,因此请等待ACTIVE而不是将响应视为成功。

注意

如果更新的策略是临时策略,或者更新添加或删除了时态表达式,则对其进行更新会使引擎的活动临时策略会话失效。 In-flight 会话返回 HTTP 409ConflictException,必须重新启动。有关更多信息,请参阅会话失效。

例
Amazon CLI
  1. aws bedrock-agentcore-control update-policy \ --policy-id my_policy-a1b2c3d4e5 \ --policy-engine-id my_policy_engine-a1b2c3d4e5 \ --definition '{ "policy": { "statement": "permit (principal, action == AgentCore::Action::\"RefundTool___process_refund\", resource == AgentCore::Gateway::\"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway-a1b2c3d4e5\");" } }'
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') client.update_policy( policyId='my_policy-a1b2c3d4e5', policyEngineId='my_policy_engine-a1b2c3d4e5', definition={ 'policy': { 'statement': ( 'permit (principal, ' 'action == AgentCore::Action::"RefundTool___process_refund", ' 'resource == AgentCore::Gateway::"arn:aws:bedrock-agentcore:us-west-2:123456789012:gateway/my-gateway-a1b2c3d4e5");' ) } } ) waiter = client.get_waiter('policy_active') waiter.wait(policyEngineId='my_policy_engine-a1b2c3d4e5', policyId='my_policy-a1b2c3d4e5')

删除策略

从策略引擎中删除策略。

例
AgentCore CLI
  1. 对于您的 AgentCore 项目管理的策略,请将其从项目中移除并部署:

    agentcore remove policy --name my_policy --engine my_policy_engine --yes agentcore deploy --yes

    agentcore remove仅编辑项目配置;下次该策略将从您的账户中删除agentcore deploy。

Amazon CLI
  1. aws bedrock-agentcore-control delete-policy --policy-engine-id my_policy_engine-a1b2c3d4e5 --policy-id my_policy-a1b2c3d4e5
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') client.delete_policy(policyId='my_policy-a1b2c3d4e5', policyEngineId='my_policy_engine-a1b2c3d4e5') waiter = client.get_waiter('policy_deleted') waiter.wait(policyEngineId='my_policy_engine-a1b2c3d4e5', policyId='my_policy-a1b2c3d4e5')

删除策略引擎

删除整个策略引擎及其所有策略。

注意
  • 您无法删除当前连接到网关的策略引擎。首先通过更新网关配置将其分离;请参阅使用策略引擎更新现有网关。

  • 您无法删除仍包含策略的策略引擎。先删除所有策略,然后删除引擎。

例
AgentCore CLI
  1. 对于您的 AgentCore 项目管理的引擎,请将其从项目中移除并部署:

    agentcore remove policy-engine --name my_policy_engine --yes agentcore deploy --yes

    移除网关不会移除与其连接的策略引擎;请单独移除该引擎。

Amazon CLI
  1. aws bedrock-agentcore-control delete-policy-engine --policy-engine-id my_policy_engine-a1b2c3d4e5
Amazon Python SDK (Boto3)
  1. import boto3 client = boto3.client('bedrock-agentcore-control') client.delete_policy_engine(policyEngineId='my_policy_engine-a1b2c3d4e5')