Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cross-account acceso a la memoria
Amazon Bedrock AgentCore Memory admite el acceso multicuenta, lo que le permite crear arquitecturas de cuentas múltiples en las que los recursos de memoria y los agentes consumidores se distribuyen en varias cuentas. AWS Cross-account el acceso abarca dos escenarios:
-
Operaciones en el plano de datos desde otra cuenta: los directores de la cuenta B pueden llamar a las API del plano de datos de la memoria (crear eventos, escribir registros, recuperar registros) y compararlas con un recurso de memoria de la cuenta A. Esto se configura adjuntando una política basada en los recursos al recurso de memoria.
High-level pasos:
-
Configure su recurso de memoria para permitir el acceso entre cuentas adjuntando una política basada en los recursos.
-
Haga referencia al ARN de memoria en las llamadas a la API de su plano de datos desde la cuenta B.
-
-
Destinos de entrega en otra cuenta: el recurso de memoria de la cuenta A puede enviar cargas útiles y transmitir eventos a los buckets de Amazon S3, a los temas de Amazon SNS y a las transmisiones de datos de Amazon Kinesis que residen en la cuenta B. Esto se configura en el momento de la creación de la memoria mediante las políticas de recursos y roles de ejecución de la memoria en los recursos de destino.
High-level pasos:
-
Cree una función de ejecución de memoria en la cuenta A con permisos para acceder a los recursos de destino.
-
Agregue políticas basadas en recursos a los recursos de destino en la cuenta B para permitir la función de ejecución.
-
Cree la memoria en la cuenta A haciendo referencia al rol de ejecución y a los ARN de los recursos entre cuentas.
-
Temas
Requisitos previos
Antes de configurar el acceso a la memoria entre cuentas, compruebe que tiene:
-
Un recurso de memoria creado en la cuenta del propietario del recurso (cuenta A)
-
El ARN completo del recurso de memoria (por ejemplo,
arn:aws:bedrock-agentcore:us-east-1:<account-id>:memory/<memory-id>) -
Para acceder al plano de datos: un rol o usuario de IAM en la cuenta B con permisos basados en la identidad que permitan realizar las acciones deseadas
bedrock-agentcore -
Para los destinos de entrega: el bucket de S3 de destino, el tema de SNS o el flujo de datos de Kinesis creado en la cuenta B
Cross-account acceso al plano de datos
Puede permitir que las personas principales de otra cuenta llamen a las API del plano de datos de la memoria directamente desde su recurso de memoria. Esto se configura adjuntando una política basada en recursos a la memoria mediante la API. PutResourcePolicy Para obtener más información sobre las políticas basadas en recursos, consulte Resource-based las políticas de Amazon Bedrock. AgentCore
Funcionamiento
-
La cuenta A crea un recurso de memoria.
-
La cuenta A adjunta una política basada en recursos al recurso de memoria mediante la
PutResourcePolicyAPI y otorga acciones específicas a un principal de la cuenta B. -
Un principal de la cuenta B llama a las API del plano de datos de la memoria y especifica el ARN completo del recurso de memoria de la cuenta A como.
memory-id -
AWS evalúa tanto la política basada en los recursos de la memoria como la política basada en la identidad asociada al principal de la cuenta B. Si ambas permiten la acción (y ninguna política la niega explícitamente), la solicitud se realiza correctamente.
Acciones admitidas
Puedes conceder el acceso multicuenta a cualquier acción del plano de datos de memoria. En la tabla siguiente se enumeran las acciones disponibles:
| Action | Description (Descripción) |
|---|---|
|
|
Cree un evento de memoria a corto plazo |
|
|
Recupera un evento específico |
|
|
Eliminar un evento específico |
|
|
Listar los eventos de una sesión |
|
|
Enumera los actores de una memoria |
|
|
Enumera las sesiones de un actor |
|
|
Recupera un registro de memoria específico |
|
|
Enumera los registros de memoria en un espacio de nombres |
|
|
Busca semánticamente los registros de memoria |
|
|
Eliminar un registro de memoria específico |
|
|
Crea varios registros de memoria |
|
|
Actualice varios registros de memoria |
|
|
Eliminar varios registros de memoria |
|
|
Enumera los trabajos de extracción de una memoria |
|
|
Reinicie los trabajos de extracción fallidos |
Adjunte una política basada en recursos a una memoria
Otorga una sola acción a otra cuenta
El siguiente ejemplo otorga permiso a la cuenta B (<account-B-id>) para BatchCreateMemoryRecords invocar un recurso de memoria de la cuenta A (<account-A-id>):
aws bedrock-agentcore-control put-resource-policy \ --region us-east-1 \ --resource-arn "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountBatchCreate", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-B-id>:root" }, "Action": "bedrock-agentcore:BatchCreateMemoryRecords", "Resource": "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" } ] }'
Otorga varias acciones a otra cuenta
El siguiente ejemplo otorga a la cuenta B acceso total de lectura y escritura a los registros y eventos de la memoria:
aws bedrock-agentcore-control put-resource-policy \ --region us-east-1 \ --resource-arn "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountMemoryReadWrite", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-B-id>:root" }, "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:ListActors", "bedrock-agentcore:ListSessions", "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords", "bedrock-agentcore:BatchDeleteMemoryRecords", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:GetMemoryRecord", "bedrock-agentcore:DeleteMemoryRecord" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" } ] }'
Otorga acceso a una función de IAM específica
Para seguir el principio del mínimo privilegio, concede acceso a un rol específico en lugar de a toda la cuenta:
aws bedrock-agentcore-control put-resource-policy \ --region us-east-1 \ --resource-arn "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --policy '{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSpecificRoleReadAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-B-id>:role/AgentMemoryReaderRole" }, "Action": [ "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:GetMemoryRecord" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" } ] }'
Eliminar una política basada en recursos
Para revocar el acceso multicuenta al plano de datos, elimine la política basada en los recursos:
aws bedrock-agentcore-control delete-resource-policy \ --region us-east-1 \ --resource-arn "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>"
Tras eliminar la política, cualquier solicitud multicuenta posterior devolverá un. AccessDeniedException
Llame a las API del plano de datos desde la cuenta B
Una vez que se adjunta la política basada en recursos, un principal de la cuenta B puede llamar a las API del plano de datos especificando el ARN de memoria completa como. memory-id
Cree registros de memoria desde la cuenta B:
aws bedrock-agentcore batch-create-memory-records \ --region us-east-1 \ --memory-id "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --records '[ { "requestIdentifier": "rec-001", "content": {"text": "User prefers morning meeting times before 10 AM"}, "namespaces": ["preferences/user-123"], "timestamp": "1729525989" } ]'
Recupere los registros de memoria de la cuenta B:
aws bedrock-agentcore retrieve-memory-records \ --region us-east-1 \ --memory-id "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --namespace "preferences/user-123" \ --search-criteria '{"searchQuery": "meeting preferences"}' \ --max-results 10
Crea eventos desde la cuenta B:
aws bedrock-agentcore create-event \ --region us-east-1 \ --memory-id "arn:aws:bedrock-agentcore:us-east-1:<account-A-id>:memory/<memory-id>" \ --actor-id "agent-in-account-b" \ --session-id "cross-account-session-1" \ --event-timestamp "$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")" \ --payload '[ { "conversational": { "content": {"text": "Schedule my standup for 9 AM tomorrow"}, "role": "USER" } } ]'
Cross-account destinos de entrega
Al crear una memoria con una estrategia personalizada (autogestionada) o una configuración de entrega de streaming, Amazon Bedrock AgentCore utiliza una función de ejecución de memoria para entregar las cargas útiles a los recursos de destino. Cuando esos recursos residen en una cuenta diferente, debe configurar ambas partes: el rol de ejecución de la cuenta A necesita permisos para acceder a los recursos y los recursos de la cuenta B necesitan políticas que permitan el acceso desde la cuenta A.
Funcionamiento
-
Los recursos de destino (un bucket de S3, un tema de SNS o un flujo de datos de Kinesis) se crean en la cuenta B con políticas basadas en los recursos que permiten la función de ejecución de memoria en la cuenta A.
-
Crea un rol de ejecución de memoria en la cuenta A con una política de confianza para Amazon Bedrock AgentCore y una política de permisos que otorga el acceso a los recursos multicuenta de la cuenta B.
-
La memoria se crea en la cuenta A, haciendo referencia al rol de ejecución y a los ARN de los recursos multicuenta.
-
Amazon Bedrock AgentCore asume la función de ejecución y la utiliza para entregar cargas útiles o transmitir eventos a los recursos de la cuenta B.
Configure la función de ejecución de memoria
Cree el rol de ejecución de memoria en la cuenta A. El rol requiere una política de confianza que permita AgentCore a Amazon Bedrock asumirlo y una política de permisos que otorgue acceso a los recursos de destino de la cuenta B.
Política de confianza:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:<region>:<account-A-id>:memory/*" } } } ] }
Política de permisos (incluya solo las declaraciones relevantes para los recursos que está utilizando):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3Access", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::<bucket-name-in-account-B>/*" }, { "Sid": "AllowSNSPublish", "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:<region>:<account-B-id>:<topic-name>" }, { "Sid": "AllowKinesisAccess", "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:<region>:<account-B-id>:stream/<stream-name>" } ] }
Configure la política de cubos de S3 en la cuenta B
Agregue la siguiente política basada en los recursos al bucket de S3 de la cuenta B para permitir que la función de ejecución de memoria de la cuenta A entregue las cargas útiles:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMemoryExecutionRoleAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-A-id>:role/<memory-execution-role-name>" }, "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::<bucket-name>/*" } ] }
Configure la política temática de SNS en la cuenta B
Agregue la siguiente política basada en recursos al tema de SNS en la cuenta B para permitir que la función de ejecución de memoria de la cuenta A publique notificaciones:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMemoryExecutionRolePublish", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-A-id>:role/<memory-execution-role-name>" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:<region>:<account-B-id>:<topic-name>" } ] }
Configure la política de transmisión de datos de Kinesis en la cuenta B
Agregue la siguiente política basada en recursos a la transmisión de datos de Kinesis en la cuenta B para permitir que la función de ejecución de memoria de la cuenta A transmita los eventos:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMemoryExecutionRolePutRecords", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-A-id>:role/<memory-execution-role-name>" }, "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:<region>:<account-B-id>:stream/<stream-name>" } ] }
Cree una memoria con S3 y SNS multicuenta
Tras configurar el rol de ejecución y las políticas de recursos, cree una memoria en la cuenta A que haga referencia a los recursos multicuenta de la cuenta B:
aws bedrock-agentcore-control create-memory \ --region us-east-1 \ --name "cross-account-memory" \ --description "Memory with cross-account S3 and SNS delivery" \ --event-expiry-duration 30 \ --memory-execution-role-arn "arn:aws:iam::<account-A-id>:role/MemoryCrossAccountRole" \ --memory-strategies '[ { "customMemoryStrategy": { "name": "cross_account_strategy", "configuration": { "selfManagedConfiguration": { "triggerConditions": [ {"messageBasedTrigger": {"messageCount": 5}} ], "invocationConfiguration": { "topicArn": "arn:aws:sns:us-east-1:<account-B-id>:memory-notifications", "payloadDeliveryBucketName": "<bucket-name>" }, "historicalContextWindowSize": 10 } } } } ]'
Cree una memoria con la transmisión multicuenta de Kinesis
aws bedrock-agentcore-control create-memory \ --region us-east-1 \ --name "cross-account-streaming-memory" \ --description "Memory with cross-account Kinesis streaming" \ --event-expiry-duration 30 \ --memory-execution-role-arn "arn:aws:iam::<account-A-id>:role/MemoryCrossAccountRole" \ --stream-delivery-resources '{ "resources": [ { "kinesis": { "dataStreamArn": "arn:aws:kinesis:us-east-1:<account-B-id>:stream/memory-record-stream", "contentConfigurations": [ { "type": "MEMORY_RECORDS", "level": "FULL_CONTENT" } ] } } ] }'
Prácticas recomendadas
-
Otorgue el mínimo privilegio: otorgue solo las acciones específicas que necesite el director de la cuenta cruzada.
-
Utiliza funciones de IAM específicas: concede acceso a funciones de IAM específicas en lugar de a toda la raíz de la cuenta para limitar el radio de acción.
-
Audite el acceso entre cuentas: utilícelo AWS CloudTrail para supervisar las llamadas de API entre cuentas a sus recursos de memoria.
-
Acceso independiente de lectura y escritura: cree declaraciones de política independientes para los consumidores de solo lectura y los productores de lectura y escritura.
-
Valide las políticas antes de eliminarlas: antes de eliminar una política basada en recursos, compruebe que ninguna carga de trabajo activa en otras cuentas dependa del acceso.