Amazon Bedrock AgentCore 설정 혼란: 필요한 IAM 역할은 무엇인가요?

발행: (2026년 1월 7일 오후 10:14 GMT+9)
5 min read
원문: Dev.to

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단계 — 역할 생성

  1. AWS 콘솔을 열고 → IAM.
  2. Roles를 클릭하고 → Create role.
  3. Custom trust policy를 선택하고 다음을 붙여넣습니다 (123456789012us-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:*"
        }
      }
    }
  ]
}
  1. 역할에 명확한 이름을 지정합니다. 예: AgentCoreRuntimeExecutionRole-.
  2. 역할을 생성합니다.

Step 2 — 올바른 권한 정책 연결

  1. 방금 만든 역할을 엽니다.
  2. Permissions 탭 → Add permissionsCreate inline policy 로 이동합니다.
  3. 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:*"
            ]
        }
    ]
}
  1. Next 를 클릭하고 정책 이름을 지정합니다 (예: AgentCoreRuntimeExecutionPolicy). 그런 다음 저장합니다.

3단계 — 역할 ARN 복사 (이것이 -er이 필요로 하는 것입니다)

  1. IAM 콘솔에서 생성한 역할을 열고 ARN을 복사합니다.
  2. 해당 ARN을 사용하여 에이전트를 배포합니다:
agentcore configure --entrypoint my_agent.py -er YOUR-ROLE_ARN

Note: my_agent.py를 AgentCore 설정을 정의한 진입 파일로 교체하세요.

요약

  • -erAgentCore Runtime execution role ARN을 기대합니다.
  • 역할이 적절한 신뢰 관계와 “AgentCore Runtime execution role” 정책이 연결되어 있으면 배포가 원활하게 진행됩니다.
Back to Blog

관련 글

더 보기 »

API Doc 포트폴리오

새해, 새로운 당신 포트폴리오 챌린지 – Google AI 저자: 멕시코 소프트웨어 엔지니어 – 백엔드 중심, Python 중심, 프론트엔드 기술에 대한 관심이 커지고 있음...

‘Virtual Air Gap’: AWS에서 Fort Knox 구축

당신의 CISO나 독일의 매우 엄격한 Data Privacy Officer 앞에 서서 “우리는 민감한 환자 데이터를 클라우드로 옮기고 있습니다.” 라고 말한다고 상상해 보세요. The...