Amazon Bedrock AgentCore 设置困惑:我需要哪个 IAM Role?
发布: (2026年1月7日 GMT+8 21:14)
4 min read
原文: Dev.to
Source: Dev.to
请提供您希望翻译的完整文本(除代码块和 URL 之外),我将把它翻译成简体中文并保持原有的 Markdown 格式。
介绍
如果你正尝试将代理部署到 Amazon Bedrock AgentCore Runtime,并且看到类似的 CLI 标志:
agentcore configure --entrypoint my_agent.py -er
很容易卡住。这里的 “ 不是 你的 IAM 用户或 SSO 角色——它是一个独立的 执行角色,AgentCore Runtime 会假设该角色来运行你的代理。只要正确创建了该角色,部署就会变得很顺利。
本指南遵循官方 AWS 文档中关于 AgentCore Runtime 权限的说明:IAM Permissions for AgentCore Runtime。
您实际需要的(2 个身份)
1. 您的“调用者身份”
- IAM 用户 或
- SSO 角色(IAM 身份中心)
此身份需要拥有部署/配置代理的权限,通常还需要 PassRole 权限。
2. “AgentCore Runtime 执行角色”(重要的)
- 从 ECR 拉取镜像(如适用)
- 将日志写入 CloudWatch
- 将追踪发送至 X‑Ray
- 发布指标
- 调用 Bedrock 模型
- 获取工作负载访问令牌
该角色的 ARN 即是您通过 -er 传递的值。
第一步 — 创建角色
- 打开 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-。 - 创建角色。
第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),然后保存。
第三步 — 复制角色 ARN(这是 -er 所需的)
- 在 IAM 控制台中,打开您创建的角色并复制其 ARN。
- 使用该 ARN 部署您的代理:
agentcore configure --entrypoint my_agent.py -er YOUR-ROLE_ARN
注意: 将
my_agent.py替换为您定义 AgentCore 设置的入口文件。
摘要
-er需要 AgentCore Runtime execution role ARN。- 一旦角色存在且具备适当的信任关系,并附加了 “AgentCore Runtime execution role” 策略,部署即可顺利进行。