Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Cross-account accès à la mémoire
Amazon Bedrock AgentCore Memory prend en charge l'accès entre comptes, ce qui vous permet de créer des architectures multi-comptes où les ressources mémoire et les agents consommateurs s'étendent sur plusieurs comptes. AWS Cross-account access couvre deux scénarios :
-
Opérations sur le plan de données depuis un autre compte — Les administrateurs du compte B peuvent appeler les API du plan de données de la mémoire (créer des événements, écrire des enregistrements, récupérer des enregistrements) sur une ressource mémoire du compte A. Ceci est configuré en associant une politique basée sur les ressources à la ressource mémoire.
High-level étapes :
-
Configurez votre ressource mémoire pour autoriser l'accès entre comptes en y associant une politique basée sur les ressources.
-
Faites référence à l'ARN de la mémoire dans les appels d'API de votre plan de données depuis le compte B.
-
-
Destinations de diffusion dans un autre compte : votre ressource mémoire du compte A peut fournir des charges utiles et diffuser des événements vers des compartiments Amazon S3, des rubriques Amazon SNS et des flux de données Amazon Kinesis résidant dans le compte B. Ceci est configuré au moment de la création de la mémoire via le rôle d'exécution de la mémoire et les politiques de ressources sur les ressources cibles.
High-level étapes :
-
Créez un rôle d'exécution de la mémoire dans le compte A avec les autorisations nécessaires pour accéder aux ressources cibles.
-
Ajoutez des politiques basées sur les ressources aux ressources de destination du compte B pour autoriser le rôle d'exécution.
-
Créez la mémoire dans le compte A, en faisant référence au rôle d'exécution et aux ARN des ressources intercomptes.
-
Rubriques
Conditions préalables
Avant de configurer l'accès à la mémoire entre comptes, vérifiez que vous disposez des éléments suivants :
-
Une ressource mémoire créée dans le compte du propriétaire de la ressource (compte A)
-
L'ARN complet de la ressource mémoire (par exemple,
arn:aws:bedrock-agentcore:us-east-1:<account-id>:memory/<memory-id>) -
Pour l'accès au plan de données : un rôle ou un utilisateur IAM dans le compte B avec des autorisations basées sur l'identité qui autorisent les actions souhaitées
bedrock-agentcore -
Pour les destinations de livraison : le compartiment S3 cible, la rubrique SNS ou le flux de données Kinesis créé dans le compte B
Cross-account accès au plan de données
Vous pouvez autoriser les administrateurs d'un autre compte à appeler les API du plan de données de la mémoire directement depuis votre ressource mémoire. Ceci est configuré en attachant une politique basée sur les ressources à la mémoire à l'aide de l'PutResourcePolicyAPI. Pour plus d'informations sur les politiques basées sur les ressources, consultez les politiques d'Amazon Resource-based Bedrock. AgentCore
Comment ça marche
-
Le compte A crée une ressource mémoire.
-
Le compte A associe une politique basée sur les ressources à la ressource mémoire à l'aide de l'
PutResourcePolicyAPI, accordant des actions spécifiques à un principal du compte B. -
Un principal du compte B appelle les API du plan de données de la mémoire, en spécifiant l'ARN complet de la ressource mémoire du compte A comme
memory-id. -
AWS évalue à la fois la politique basée sur les ressources sur la mémoire et la politique basée sur l'identité associée au principal du compte B. Si les deux autorisent l'action (et qu'aucune politique ne la refuse explicitement), la demande aboutit.
Actions prises en charge
Vous pouvez autoriser l'accès entre comptes pour toute action sur le plan de données de la mémoire. Le tableau suivant répertorie les actions disponibles :
| Action | Description |
|---|---|
|
|
Créer un événement de mémoire à court terme |
|
|
Récupérer un événement spécifique |
|
|
Supprimer un événement spécifique |
|
|
Répertorier les événements d'une session |
|
|
Répertorier les acteurs d'une mémoire |
|
|
Liste des sessions pour un acteur |
|
|
Récupérez un enregistrement de mémoire spécifique |
|
|
Répertorier les enregistrements de mémoire dans un espace de noms |
|
|
Recherche sémantique dans les enregistrements de mémoire |
|
|
Supprimer un enregistrement de mémoire spécifique |
|
|
Création de plusieurs enregistrements de mémoire |
|
|
Mettre à jour plusieurs enregistrements de mémoire |
|
|
Supprimer plusieurs enregistrements de mémoire |
|
|
Répertorier les tâches d'extraction d'une mémoire |
|
|
Redémarrer les tâches d'extraction ayant échoué |
Associer une politique basée sur les ressources à une mémoire
Accorder une seule action à un autre compte
L'exemple suivant accorde au compte B (<account-B-id>) l'autorisation d'appeler BatchCreateMemoryRecords une ressource mémoire dans le compte 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>" } ] }'
Accorder plusieurs actions à un autre compte
L'exemple suivant accorde au compte B un accès complet en lecture et en écriture aux enregistrements et événements de la mémoire :
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>" } ] }'
Autoriser l'accès à un rôle IAM spécifique
Pour respecter le principe du moindre privilège, accordez l'accès à un rôle spécifique plutôt qu'à l'intégralité du compte :
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>" } ] }'
Supprimer une politique basée sur les ressources
Pour révoquer l'accès au plan de données entre comptes, supprimez la politique basée sur les ressources :
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>"
Après la suppression de la politique, toutes les demandes intercomptes suivantes renvoient unAccessDeniedException.
Appelez les API du plan de données depuis le compte B
Une fois la politique basée sur les ressources associée, un responsable du compte B peut appeler les API du plan de données en spécifiant l'ARN de la mémoire complète comme. memory-id
Créez des enregistrements de mémoire à partir du compte 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" } ]'
Récupérez les enregistrements de mémoire depuis le compte 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
Créez des événements à partir du compte 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 destinations de livraison
Lorsque vous créez une mémoire avec une stratégie personnalisée (autogérée) ou une configuration de diffusion de flux, Amazon Bedrock AgentCore utilise un rôle d'exécution de la mémoire pour acheminer les charges utiles vers vos ressources de destination. Lorsque ces ressources résident dans un compte différent, vous devez configurer les deux côtés : le rôle d'exécution dans le compte A nécessite des autorisations pour accéder aux ressources, et les ressources du compte B ont besoin de politiques qui autorisent l'accès depuis le compte A.
Comment ça marche
-
Vous créez des ressources de destination (compartiment S3, rubrique SNS ou Kinesis Data Stream) dans le compte B avec des politiques basées sur les ressources qui autorisent le rôle d'exécution de la mémoire dans le compte A.
-
Vous créez un rôle d'exécution de la mémoire dans le compte A avec une politique de confiance pour Amazon Bedrock AgentCore et une politique d'autorisations qui donne accès aux ressources intercomptes du compte B.
-
Vous créez la mémoire dans le compte A, en faisant référence au rôle d'exécution et aux ARN des ressources intercomptes.
-
Amazon Bedrock AgentCore assume le rôle d'exécution et l'utilise pour fournir des charges utiles ou diffuser des événements vers les ressources du compte B.
Configuration du rôle d'exécution de la mémoire
Créez le rôle d'exécution de la mémoire dans le compte A. Le rôle nécessite une politique de confiance qui permet AgentCore à Amazon Bedrock de l'assumer, et une politique d'autorisations qui accorde l'accès aux ressources cibles du compte B.
Stratégie d'approbation :
{ "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/*" } } } ] }
Politique d'autorisations (incluez uniquement les déclarations relatives aux ressources que vous utilisez) :
{ "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>" } ] }
Configurer la politique de compartiment S3 dans le compte B
Ajoutez la politique basée sur les ressources suivante au compartiment S3 du compte B pour permettre au rôle d'exécution de la mémoire dans le compte A de fournir des charges utiles :
{ "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>/*" } ] }
Configurer la politique thématique SNS dans le compte B
Ajoutez la politique basée sur les ressources suivante à la rubrique SNS du compte B pour permettre au rôle d'exécution de la mémoire dans le compte A de publier des notifications :
{ "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>" } ] }
Configurer la politique Kinesis Data Stream dans le compte B
Ajoutez la politique basée sur les ressources suivante au flux de données Kinesis du compte B pour permettre au rôle d'exécution de la mémoire dans le compte A de diffuser des événements :
{ "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>" } ] }
Créez une mémoire avec S3 et SNS multicomptes
Après avoir configuré le rôle d'exécution et les politiques de ressources, créez une mémoire dans le compte A qui fait référence aux ressources intercomptes du compte 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 } } } } ]'
Créez une mémoire grâce au streaming Kinesis multicompte
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" } ] } } ] }'
Bonnes pratiques
-
Accorder le moindre privilège : accordez uniquement les actions spécifiques requises par le principal multicompte.
-
Utilisez des principes spécifiques : accordez l'accès à des rôles IAM spécifiques plutôt qu'à la racine complète du compte afin de limiter le rayon d'action.
-
Auditez l'accès entre comptes : utilisez cette AWS CloudTrail option pour surveiller les appels d'API intercomptes vers vos ressources de mémoire.
-
Accès séparé en lecture et en écriture — Créez des déclarations de politique distinctes pour les consommateurs en lecture seule et les producteurs en lecture-écriture.
-
Validez avant de supprimer des politiques — Avant de supprimer une politique basée sur les ressources, vérifiez qu'aucune charge de travail active dans d'autres comptes ne dépend de l'accès.