Amazon Bedrock AgentCore 설정 혼란: 필요한 IAM 역할은 무엇인가요?
Source: Dev.to
번역을 진행하려면 번역하고자 하는 전체 텍스트(본문, 코드 블록 제외)를 제공해 주시겠어요?
해당 내용을 받는 대로 원본 형식과 마크다운을 유지하면서 한국어로 번역해 드리겠습니다.
소개
Amazon Bedrock AgentCore Runtime에 에이전트를 배포하려고 하는데 다음과 같은 CLI 플래그가 보인다면:
agentcore configure --entrypoint my_agent.py -er
쉽게 막히게 됩니다. “ 은 IAM 사용자나 SSO 역할이 아니라—에이전트를 실행하기 위해 AgentCore Runtime이 가정하는 별도의 Execution Role입니다. 해당 역할을 올바르게 생성하면 배포가 간단해집니다.
이 가이드는 공식 AWS 문서인 IAM Permissions for AgentCore Runtime을 따릅니다.
실제로 필요한 것 (2개의 아이덴티티)
1. “호출자 아이덴티티”
- IAM 사용자 또는
- SSO 역할 (IAM Identity Center)
이 아이덴티티는 에이전트를 배포/구성할 권한이 필요하며, 종종 PassRole 권한이 필요합니다.
2. “AgentCore Runtime 실행 역할”(중요한 것)
- ECR에서 이미지 가져오기 (해당되는 경우)
- CloudWatch에 로그 쓰기
- X‑Ray에 트레이스 전송
- 메트릭 게시
- Bedrock 모델 호출
- 워크로드 액세스 토큰 가져오기
이 역할의 ARN을 -er 옵션으로 전달합니다.
1단계 — 역할 생성
- AWS 콘솔을 열고 → IAM.
- Roles를 클릭하고 → Create role.
- Custom trust policy를 선택하고 다음을 붙여넣습니다 (
123456789012와us-east-1을 귀하의 계정 ID와 리전으로 교체하세요):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AssumeRolePolicy",
"Effect": "Allow",
"Principal": {
"Service": "bedrock-agentcore.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:*"
}
}
}
]
}
- 역할에 명확한 이름을 지정합니다. 예:
AgentCoreRuntimeExecutionRole-. - 역할을 생성합니다.
Step 2 — 올바른 권한 정책 연결
- 방금 만든 역할을 엽니다.
- Permissions 탭 → Add permissions → Create inline policy 로 이동합니다.
- JSON 편집기를 선택하고 아래 정책을 붙여넣습니다 (계정 ID와 리전은 필요에 따라 교체하세요):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECRImageAccess",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": [
"arn:aws:ecr:us-east-1:123456789012:repository/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogStreams",
"logs:CreateLogGroup"
],
"Resource": [
"arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups"
],
"Resource": [
"arn:aws:logs:us-east-1:123456789012:log-group:*"
]
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:123456789012:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
]
},
{
"Sid": "ECRTokenAccess",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"xray:GetSamplingRules",
"xray:GetSamplingTargets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "cloudwatch:PutMetricData",
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "bedrock-agentcore"
}
}
},
{
"Sid": "GetAgentAccessToken",
"Effect": "Allow",
"Action": [
"bedrock-agentcore:GetWorkloadAccessToken",
"bedrock-agentcore:GetWorkloadAccessTokenForJWT",
"bedrock-agentcore:GetWorkloadAccessTokenForUserId"
],
"Resource": [
"arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default",
"arn:aws:bedrock-agentcore:us-east-1:123456789012:workload-identity-directory/default/workload-identity/agentName-*"
]
},
{
"Sid": "BedrockModelInvocation",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel",
"bedrock:InvokeModelWithResponseStream"
],
"Resource": [
"arn:aws:bedrock:*::foundation-model/*",
"arn:aws:bedrock:us-east-1:123456789012:*"
]
}
]
}
- Next 를 클릭하고 정책 이름을 지정합니다 (예:
AgentCoreRuntimeExecutionPolicy). 그런 다음 저장합니다.
3단계 — 역할 ARN 복사 (이것이 -er이 필요로 하는 것입니다)
- IAM 콘솔에서 생성한 역할을 열고 ARN을 복사합니다.
- 해당 ARN을 사용하여 에이전트를 배포합니다:
agentcore configure --entrypoint my_agent.py -er YOUR-ROLE_ARN
Note:
my_agent.py를 AgentCore 설정을 정의한 진입 파일로 교체하세요.
요약
-er은 AgentCore Runtime execution role ARN을 기대합니다.- 역할이 적절한 신뢰 관계와 “AgentCore Runtime execution role” 정책이 연결되어 있으면 배포가 원활하게 진행됩니다.