Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services ECS从EC2迁移到Fargate_Amazon Web Services_Amazon Cloudformation_Aws Fargate - Fatal编程技术网

Amazon web services ECS从EC2迁移到Fargate

Amazon web services ECS从EC2迁移到Fargate,amazon-web-services,amazon-cloudformation,aws-fargate,Amazon Web Services,Amazon Cloudformation,Aws Fargate,我正在尝试从Amaxon ECS EC2迁移到Fargate。在这里,我根据来自的建议做了一些更改。我正在使用amazon cloudformation创建/更新资源 ECSTaskDefinition: Type: AWS::ECS::TaskDefinition Properties: Family : !Join ["_", [!Ref "AppName", !Ref "ComponentName", !Ref "TargetEnv" ]]

我正在尝试从Amaxon ECS EC2迁移到Fargate。在这里,我根据来自的建议做了一些更改。我正在使用amazon cloudformation创建/更新资源

ECSTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
        Family : !Join ["_", [!Ref "AppName", !Ref "ComponentName", !Ref "TargetEnv" ]]
        NetworkMode: "awsvpc"
        ExecutionRoleArn: arn:aws:iam::${AWS::AccountId}:role/ecsTaskExecutionRole
        TaskRoleArn: 
            Fn::Sub: 
                [ 
                    "arn:aws:iam::${AWS::AccountId}:role/exec_dp_${TargetEnv}",
                    { 
                        TargetEnv: !Ref "TargetEnv"
                    }
                ]
        RequiresCompatibilities:
          - "FARGATE"
        Memory: "512"
        Cpu: '256'
        ContainerDefinitions:
这里的问题是,当我尝试创建堆栈时,它会给我以下错误:

无法承担服务链接角色。请验证ECS服务链接角色是否存在

我还尝试创建服务链接角色,如下所示:

AwsEcsTaskExecutionRole:
     Type: AWS::IAM::Role
     Properties:
        Path: /
        AssumeRolePolicyDocument:
             Version: 2012-10-17
             Statement:
                     - Effect: Allow
             Principal:
             Service: ecs.amazonaws.com
             Action: sts:AssumeRole
        ManagedPolicyArns:
             - arn:aws:iam::aws:policy/aws-service-role/AmazonECSServiceRolePolicy
然后指定为 刽子手学习:!GetAtt awsecstaskeexecutionrole.Arn

它不起作用。任何有关的指导都会很有帮助。

简短回答:

运行此命令:
aws iam创建服务链接角色--aws服务名称ecs.amazonaws.com

长答覆:


美国焊接学会介绍。对于旧的AWS帐户,或者如果您从未在控制台中手动创建过ECS群集,则必须运行上面的命令才能创建角色。

有没有办法使用cloudFormation实现这一点?我考虑过使用CustomResource创建/删除服务链接角色,但这是整个帐户的唯一角色(不分地区)。这意味着,如果您删除创建角色的堆栈,它将对您帐户中的其他堆栈产生潜在影响。在AWS中,某些事情无法自动执行,例如增加服务限制的支持请求。这对于新AWS帐户应该是固定的,但同时我建议您只运行命令和文档w您好。感谢您的快速输入。这里我们的人员希望完全控制IAM。如果您可以使用有关此的cloudFormation信息的链接更新您的答案,那么这将是一件很棒的事情。