tan*_*nvi 11 amazon-web-services amazon-ecs aws-fargate
我正在尝试在我的CloudFormation模板中创建一个具有以下EcsParameters的计划任务(CloudWatch Events Rule):
EcsParameters:
LaunchType: FARGATE
NetworkConfiguration:
AwsVpcConfiguration:
AssignPublicIp: !Ref PublicIpAssignment
SecurityGroups:
- !Ref EcsSecurityGroups
Subnets:
- !Ref SubnetName
TaskCount: 1
TaskDefinitionArn: !Ref TaskDefinitionOne
Run Code Online (Sandbox Code Playgroud)
我的ECS CLuster是在Fargate而不是EC2上启动的,我没有运行服务(用例不需要长时间运行的过程,直接从事件规则中调度任务.)
每当我运行此模板(使用LaunchType和NetworkConfiguration)时,堆栈创建失败,出现此错误:
遇到不受支持的属性NetworkConfiguration
作为替代方案,我还尝试从AWS CLI启动计划任务,但似乎网络配置和启动类型选项也不可用:
参数验证失败:Targets [0]中的未知参数.EcsParameters:"LaunchType"必须是以下之一:TaskDefinitionArn,TaskCount
根据此页面上的AWS文档本身,我应该能够指定LaunchType并NetworkConfiguration在我EcsParameters的部分Targets中Properties的的AWS::Events::Rule资源.
有什么我可以尝试的可行吗?
经过一天的研究,AWS 似乎仍然没有通过 CloudFormation 发布对此的支持。然而,这里有一个替代方案,可以通过aws events put-targetscli 上的命令运行。
此方法对于旧版本的 cli 失败。运行此更新: pip install awscli --upgrade --user
这是我现在使用的版本:aws-cli/1.16.9 Python/2.7.15 Darwin/17.7.0 botocore/1.11.9
使用aws events put-targets --rule <value> --targets <value>命令。确保您的集群上已定义规则。如果没有,您可以使用aws events put-rulecmd 来完成此操作。请参阅AWS 文档以了解 put-rule和put-targets。
下面给出了文档中的规则示例:
aws events put-rule --name "DailyLambdaFunction" --schedule-expression "cron(0 9 * * ? *)"
Run Code Online (Sandbox Code Playgroud)
对我有用的 put-targets 命令是这样的:
aws events put-targets --rule cli-RS-rule --targets '{"Arn": "arn:aws:ecs:1234/cluster/clustername","EcsParameters": {"LaunchType": "FARGATE","NetworkConfiguration": {"awsvpcConfiguration": {"AssignPublicIp": "ENABLED", "SecurityGroups": [ "sg-id1233" ], "Subnets": [ "subnet-1234" ] }},"TaskCount": 1,"TaskDefinitionArn": "arn:aws:ecs:1234:task-definition/taskdef"},"Id": "sampleID111","RoleArn": "arn:aws:iam:1234:role/eventrole"}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2947 次 |
| 最近记录: |