我正在使用 AWS 学习者实验室,并尝试使用 CLI 和 Python 进行一些实验。
我正在尝试为 ECS 创建任务定义。当我在 AWS 控制台中执行此操作时,它工作得很好。
但是如果我像下面这样使用 Boto3 尝试它,我会收到以下错误消息:
botocore.errorfactory.AccessDeniedException: An error occurred (AccessDeniedException) when calling the RegisterTaskDefinition operation: User: arn:aws:sts::744663755802:assumed-role/voclabs/user2451565=Joseph_Ahmed is not authorized to perform: ecs:RegisterTaskDefinition on resource: arn:aws:ecs:us-east-1:744663755802:task-definition/testtask:* with an explicit deny in an identity-based policy
from boto3 import client
import json
ECS_client = client("ecs", region_name='us-east-1')
res = ECS_client.register_task_definition(
family='testtask',
networkMode='awsvpc',
taskRoleArn='arn:aws:iam::744663755802:role/LabRole',
executionRoleArn='arn:aws:iam::744663755802:role/LabRole',
containerDefinitions=[
{
},
],
requiresCompatibilities=[
'FARGATE'
],
cpu='.5 vCPU',
memory='1 GB',
runtimePlatform={
'cpuArchitecture': 'X86_64',
'operatingSystemFamily': 'LINUX'
}
)
print(json.dumps(res, indent=4))
我正在使用的学习者实验室是:https://awsacademy.instruction.com/(如果有帮助的话)。关于 ecs 服务的唯一想法是:
亚马逊弹性容器服务(ECS)
支持的实例类型:nano、micro、small、medium、large。
温馨提示:
创建集群时:为避免权限错误(无法创建角色),如果尝试创建使用 EC2 实例作为基础设施(而不是 Fargate)的集群,请先使用 EC2 控制台创建 Auto Scaling 组,然后创建 ECS 集群时选择使用现有的 Auto Scaling 组。
创建任务定义时:为避免权限错误,请务必设置LabRole为任务角色和任务执行角色。