Python 如何在boto3中设置executionRoleArn的值?

Python 如何在boto3中设置executionRoleArn的值?,python,amazon-web-services,boto3,amazon-iam,amazon-ecs,Python,Amazon Web Services,Boto3,Amazon Iam,Amazon Ecs,我是AWS新手,我不知道如何使用PythonBoto3在Fargate中使用ECR中的图像成功运行任务。我是这样做的: 创建客户端 ecs_cli = boto3.client( 'ecs', aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region ) 注册任务定义 response = ecs_cli.register_task_definition(

我是AWS新手,我不知道如何使用PythonBoto3在Fargate中使用ECR中的图像成功运行任务。我是这样做的:

创建客户端

ecs_cli = boto3.client(
    'ecs',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    region_name=region
)
注册任务定义

response = ecs_cli.register_task_definition(
    family='what_is_family_06_06', #i dont get what's a family
    networkMode='awsvpc',
    containerDefinitions=[
    {
        "name": "rand_name_06_06",
        "image": image_name,
    }
    ],
    cpu = "256",
    memory = "512",
    requiresCompatibilities=['FARGATE']

)
然后运行任务

response = ecs_cli.run_task(
cluster='default',
launchType='FARGATE',
networkConfiguration={
    'awsvpcConfiguration': {
        'subnets': [
            'subnet-03fc922da97e2d95e',
            'subnet-08a73abb757cf2fab'
        ],
        'securityGroups': [
            'sg-04a3379a63a69cb74',
        ],
    }
},
taskDefinition='arn:aws:ecs:us-east-1:420295140958:task-definition/what_is_family_06_06:1',                  
)
我得到这个错误:

"Fargate requires task definition to have execution role ARN to support ECR images."
这意味着我必须添加
executionRoleArn='something'
来注册任务定义()

然而,例如,在任务定义中没有提到executionRoleARN,在boto3中也没有具体说明
executionRoleARN
的值应该是多少

我已经看过了,但那对我没有帮助


我创建了IAM管理员用户。之所以需要executionRoleArn,是因为容器定义中的映像来自ECR,ECR是一个私有存储库

ECS包含基本执行任务角色策略

您可以修改此策略并创建新策略,也可以将
AmazonECSTaskExecutionRolePolicy
的托管策略附加到IAM角色

当您创建它时,重要的一点是,它是通过信任关系为
ecs tasks.amazonaws.com
创建的

创建角色获取其Arn后,可以从控制台或通过CLI上的命令访问该角色

获取此arn并添加到
register\u task\u definition
,如下所示

response = ecs_cli.register_task_definition(
    family='what_is_family_06_06', #i dont get what's a family
    networkMode='awsvpc',
    containerDefinitions=[
    {
        "name": "rand_name_06_06",
        "image": image_name,
    }
    ],
    cpu = "256",
    memory = "512",
    requiresCompatibilities=['FARGATE'],
    executionRoleArn='ARN'
)

非常感谢。我遵循了您提到的链接中的步骤,并在register_task_定义中添加了以下行:executionRoleArn='arn:aws:iam::aws:policy/service role/AmazonECSTaskExecutionRolePolicy',但是,我得到“调用RegisterTaskDefinition操作时发生错误(ClientException):role无效”。你知道我做错了什么吗?再次感谢!您是否将其创建为ecs角色?如果没有,请编辑信任关系以添加它。在回答中使用服务名称我现在知道了!!这就是我需要为它添加的内容:“arn:aws:iam::420295140958:role/摇头丸执行角色”。非常感谢,我已经挣扎了很长一段时间了!:)