如何在 boto3 中为 executionRoleArn 设置值?



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

创建客户端

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'添加到 register_task_definition((

但是,在例如本教程中,任务定义中没有提到executionRoleARN,并且在用于创建任务定义的boto3文档中,它没有说明executionRoleARN的具体值应该是什么。

我已经查看了 Fargate 任务拉取 Amazon ECR 映像的可选 IAM 权限,但这对我没有帮助。

我已按照本教程创建了 IAM 管理员用户。

之所以需要 executionRoleArn,是因为容器定义中的映像来自 ECR,这是一个私有存储库。

ECS 在此处包含基本执行任务角色策略。

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

创建它时很重要,它是使用信任关系创建的ecs-tasks.amazonaws.com.

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

获取此 arn 并添加到register_task_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'
)

相关内容

  • 没有找到相关文章

最新更新