从控制台,我正在调用一个提交批处理作业的lambda.批处理作业失败,表示ECS无法承担为执行作业定义而提供的角色.
对于角色,我添加了lambda和ECS服务.
错误消息:
"ECS无法承担为此任务提供的角色'arn:aws:iam :: 749340585813:role/golfnow-invoke-write-progress'.请验证传递的角色是否具有正确的信任关系和权限,以及你的IAM用户有权传递这个角色."
"TrainingJobRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"RoleName": "golfnow-invoke-write-progress",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"ecs.amazonaws.com"
]
},
"Action": [
"sts:AssumeRole"
]
}
]
},
"Path": "/"
}
}
Run Code Online (Sandbox Code Playgroud)
批处理作业:
"TrainingJob": {
"Type": "AWS::Batch::JobDefinition",
"Properties": {
"Type": "container",
"JobDefinitionName": {
"Fn::Sub": "c12e-golfnow-${Environment}-job"
},
"ContainerProperties": {
"Image": {
"Fn::Join": [
"",
[
"{{ image omitted }}",
{
"Ref": "AWS::Region"
},
".amazonaws.com/amazonlinux:latest"
]
]
},
"Vcpus": 2,
"Memory": 2000, …
Run Code Online (Sandbox Code Playgroud) 我在需求实例上使用0-256 m3.medium的计算环境.我的Job定义需要1个CPU和3 GB的Ram,m3.medium有.
AWS Batch Jobs陷入状态的可能原因是RUNNABLE
什么?
AWS说:
A job that resides in the queue, has no outstanding dependencies, and is therefore ready to be scheduled to a host. Jobs in this state are started as soon as sufficient resources are available in one of the compute environments that are mapped to the job’s queue. However, jobs can remain in this state indefinitely when sufficient resources are unavailable.
但这不能回答我的问题
如果我使用EC2在AWS ECS中运行容器,那么我可以访问正在运行的容器并执行任何命令.
即.
docker exec -it <containerid> <command>
如何使用Fargate在AWS ECS中运行容器或访问容器中运行命令?
AWS ECS Fargate启动和运行docker镜像的最短/平均时间是多少?
为了论证,45MB anapsix/alpine-java
图像.
我想调查使用ECS Fargate通过在较快的远程服务器上构建软件来加速在慢速笔记本电脑/ PC上本地构建软件的过程.
因此,图像的启动时间对于使得精力充沛是至关重要的.
我很好奇是否有一种方法可以设置一个通用的生命周期策略,该策略将应用于 ECR 中的所有存储库?
目前,据我了解,没有办法做到这一点。
我正在考虑的一种方法是使用生命周期策略的 JSON 定义,并使用 AWS CLI 将其应用到所有存储库(可以稍微自动化一些)。但是这个东西应该在每次创建新存储库时运行,这会增加复杂性。
在尝试在 EC2 实例中运行任务时,我收到了这条可怕的错误消息。
Run tasks failed
Reasons : ["ATTRIBUTE"]
Run Code Online (Sandbox Code Playgroud)
像许多其他人一样,我被要求查看我发现此列表的任务的“requiresAttributes”部分:
"requiresAttributes": [
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.task-eni"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 rexray/s3fs 驱动程序将 S3 作为卷安装在 AWS ECS docker 容器上。
我可以在我安装插件的本地机器上执行此操作
$docker plugin install rexray/s3fs
Run Code Online (Sandbox Code Playgroud)
并在 docker 容器上安装了 S3 存储桶。
$docker plugin ls
ID NAME DESCRIPTION ENABLED
3a0e14cadc17 rexray/s3fs:latest REX-Ray FUSE Driver for Amazon Simple Storage true
$docker run -ti --volume-driver=rexray/s3fs -v s3-bucket:/data img
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 AWS ECS 上复制它。
尝试遵循以下文档:https : //docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-volumes.html
如果我给 Driver 值,那么任务将无法运行并给出“无法放置任务,因为没有容器实例满足其所有要求。” 错误。
我正在使用 t2.medium 实例并为其提供任务要求,因此它不应该是 H/W 要求问题。
如果我从作业定义中删除驱动程序配置,任务将被执行。
看来我错过了配置的东西。
有没有人尝试/尝试过同样的事情,请分享知识。
谢谢!!
AWS文档中提到需要经典负载均衡器才能将ECS服务连接到多个端口:https : //docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html
但是当将ECS与Fargate一起使用时,我收到以下错误消息,即Classic Load Balancer不支持网络模式awsvpc:https : //ibb.co/gJTtfo
是否无法使用Fargate为ECS服务平衡多个端口的负载?
amazon-web-services amazon-ecs amazon-elb aws-ecs aws-fargate
在搜索时,它会产生如何使用ECS执行此操作.这需要将配置文件放在特定目录中或设置env变量,当使用Fargate时它们都不可用,因为它是无服务器的.
我觉得好像我在这里遗失了什么,有人有什么想法吗?
谢谢!
aws-ecs ×10
aws-fargate ×5
aws-batch ×2
amazon-ecs ×1
amazon-elb ×1
aws-cli ×1
aws-ecr ×1
docker ×1
mount ×1
plugins ×1
s3fs ×1