여러 AWS 계정에서 Amazon Bedrock API를 사용하려고 합니다.
간략한 설명
여러 계정에서 Amazon Bedrock API를 사용하는 경우 한 계정에서는 API 클라이언트에 대한 권한을 관리하고 다른 계정에서는 워크로드를 호스팅힐 수 있습니다.
Amazon Bedrock API에 대한 교차 계정 액세스를 설정하기 전에 기본 모델에 액세스할 수 있는지 확인하십시오. 액세스를 요청하려면 모델 액세스 추가를 참조하십시오.
참고: 교차 계정 모범 사례에 대한 자세한 내용은 AWS Identity and Access Management(IAM)의 보안 모범 사례를 참조하십시오.
해결 방법
다음 해결 방법에서 계정 A에는 파운데이션 모델이 포함되어 있습니다. 계정 B에는 계정 A의 Amazon Bedrock API를 호출하여 파운데이션 모델에 액세스하는 Amazon SageMaker 노트북이 포함되어 있습니다.
계정 A
Amazon Bedrock에 대한 액세스를 제공하는 IAM 역할을 생성하려면 다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 계정 A의 IAM 역할을 생성합니다.
- IAM 역할에는 Amazon Bedrock에 대한 액세스를 허용하는 AmazonBedrockFullAccess 정책이 있어야 합니다.
- 계정 B에서 SageMaker 노트북을 호출할 수 있는 권한을 추가합니다.
{
"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"
}
]
}
계정 B
계정 A의 역할을 맡으려면 다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 계정에서 실행할 SageMaker 노트북에 대해 IAM 역할을 생성합니다.
- IAM 정책에서 계정 B의 역할이 계정 A의 역할을 맡도록 허용해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::`<Account A ID>`:role/RoleA"
]
}
]
}
구성 후 계정 B의 역할은 임시 Boto3 자격 증명을 사용하여 계정 A의 역할을 맡습니다.
계정 B에서 설정 테스트
계정 B의 IAM 정책에 연결된 역할을 사용하여 모든 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')
이제 Amazon Bedrock 클라이언트가 계정 A 역할의 임시 자격 증명을 사용하여 API를 호출할 수 있습니다.
모범 사례
여러 계정에서 Amazon Bedrock API를 사용할 경우 다음 모범 사례를 적용하십시오.
- AWS CloudTrail 로그에서 오류 및 검증 상태를 확인합니다. 로그에는 계정 B의 AWS Security Token Service(STS) AssumeRole 이벤트와 계정 A의 Amazon Bedrock 이벤트가 표시됩니다.
- 위임된 역할의 기본 기간은 1시간입니다. 하지만 DurationSeconds 파라미터를 사용하여 기간을 수정할 수 있습니다. 기간은 역할의 최대 세션 기간을 초과할 수 없습니다.