python - 如何在 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
应该是什么值。
我查看了用于提取 Amazon ECR 映像的 Fargate 任务的可选 IAM 权限,但这对我没有帮助。
我按照本教程创建了 IAM 管理员用户。
解决方案
之所以需要 executionRoleArn,是因为容器定义中的图像来自 ECR,它是一个私有存储库。
ECS 在此处包含基本执行任务角色策略。
您可以修改此内容并创建新策略或将托管策略附加AmazonECSTaskExecutionRolePolicy
到您的 IAM 角色。
创建它时,重要的是它是通过信任关系创建的ecs-tasks.amazonaws.com
。
创建角色后,获取其 Arn,可从控制台或通过 CLI 上的list-roles命令访问。
取这个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'
)
推荐阅读
- javascript - 用于在电子邮件中自动播放 Youtube 视频的 Html 代码
- c# - Asp.net core mvc如何通过剃刀设置属性“必需”
- java - 如何使用请求在服务器端获取客户端 JSON 对象数据数组
- python - OSError:从文件初始化失败
- php - 更新图像变为空 Laravel
- authentication - 带有 Cognito 和 LoginWithAmazon 的 API 网关
- nhibernate - NHibernate Mapping-by-code 一对一关系:通过加入获取?
- excel - 按名称引用现有数据透视图
- javascript - PageSpeed Insights 诊断“确保文本在 webfont 加载期间保持可见”
- c# - 用不同间距的新行(多行)拆分字符串