Quero usar a API Amazon Bedrock em várias contas da AWS.
Breve descrição
Ao usar a API Amazon Bedrock entre as contas, você gerencia as permissões para o cliente da API em uma conta e hospeda os workloads em outras contas.
Antes de configurar o acesso entre contas da sua API Amazon Bedrock, certifique-se de que é possível acessar os modelos básicos. Para solicitar acesso, consulte Adicionar acesso ao modelo.
Observação: para informações sobre as práticas recomendadas entre contas, consulte Práticas recomendadas de segurança no AWS Identity and Access Management (AWS IAM).
Resolução
Na resolução a seguir, a conta A contém os modelos básicos. A conta B contém o notebook Amazon SageMaker que invoca a API Amazon Bedrock na conta A para acessar os modelos básicos.
Conta A
Para criar um perfil do IAM que forneça acesso ao Amazon Bedrock, conclua as seguintes etapas:
- Abra o console do IAM.
- Crie um perfil do IAM para a conta A.
- Certifique-se de que o perfil do IAM inclua a política AmazonBedRockFullAccess para permitir o acesso ao Amazon Bedrock.
- Adicione as permissões para invocar o notebook SageMaker na conta B:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":[
"sagemaker.amazonaws.com",
"events.amazonaws.com",
"bedrock.amazonaws.com"
],
"AWS":[
"arn:aws:iam::`<Account B ID>`:role/RoleB"
]
},
"Action":"sts:AssumeRole"
}
]
}
Conta B
Para assumir o perfil na conta A, conclua as seguintes etapas:
- Abra o console do IAM.
- Crie um perfil do IAM para que o notebook SageMaker seja executado na conta.
- Certifique-se de que a política do IAM permita que o perfil na conta B assuma o perfil na conta A:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::`<Account A ID>`:role/RoleA"
]
}
]
}
Após a configuração, o perfil na conta B usa credenciais temporárias do Boto3 para assumir o perfil na conta A.
Testar a configuração da conta B
Use o perfil vinculado à política do IAM na conta B para executar a seguinte célula em um notebook do SageMaker:
import boto3
# ARN of Role A to assume
role_to_assume = 'arn:aws:iam::`<Account A ID>`:role/RoleA'
# Use STS to assume role
credentials = boto3.client('sts').assume_role(
RoleArn=role_to_assume,
RoleSessionName='RoleBSession'
)['Credentials']
# Create Bedrock client with temporary credentials
bedrock_session = boto3.session.Session(
aws_access_key_id=credentials['AccessKeyId'],
aws_secret_access_key=credentials['SecretAccessKey'],
aws_session_token=credentials['SessionToken']
)
bedrock = bedrock_session.client('bedrock-runtime')
Agora, o cliente Amazon Bedrock pode usar as credenciais temporárias do perfil na conta A para chamar APIs.
Práticas recomendadas
Ao usar a API Amazon Bedrock entre as contas, aplique as seguintes práticas recomendadas:
- Confirme se há erros e verificações nos logs do AWS CloudTrail. Os logs mostram os eventos AssumeRole do AWS Security Token Service (STS) na conta B e os eventos Amazon Bedrock na conta A.
- A duração padrão do perfil assumido é de 1 hora. No entanto, é possível usar o parâmetro DurationSeconds para modificar a duração. A duração não pode exceder a duração máxima da sessão do perfil.