【发布时间】:2019-11-25 12:50:08
【问题描述】:
我有一个 AWS::Event::Rule 将 S3 put 事件路由到 ECS 任务。我可以看到规则是从指标触发的,但也可以在每个触发器上看到 FailedInvocation。我怀疑这是权限/策略问题,但找不到任何调试信息或日志。这些调试信息在某处可用吗?
我看到 Lambda 作为目标有一个类似的问题,它需要 Lambda 端的额外权限才能允许从事件触发,但找不到 ECS 的类似设置? AWS Cloudformation - Invocation of Lambda by Rule Event failed
这里是相关的 CloudFormation 代码,它显示了当前角色与 ECS 目标:
Resources:
ECSTrigger:
Type: AWS::Events::Rule
Properties:
...
Targets: # target of trigger: ECS
- Arn:
Fn::Sub: 'arn:aws:ecs:${AWS::Region}:${AWS::AccountId}:cluster/${ClusterName}'
Id: 'EcsTriggerTarget'
InputTransformer:
InputPathsMap:
s3_bucket: "$.detail.requestParameters.bucketName"
s3_key: "$.detail.requestParameters.key"
InputTemplate: '{"containerOverrides": [{"environment": [{"name": "S3_BUCKET", "value": <s3_bucket>}, {"name": "S3_KEY", "value": <s3_key>}]}]}'
EcsParameters:
LaunchType: FARGATE
PlatformVersion: LATEST
TaskCount: 1
TaskDefinitionArn:
Ref: Task
NetworkConfiguration:
AwsVpcConfiguration:
AssignPublicIp: DISABLED
SecurityGroups: ...
Subnets: ...
RoleArn:
Fn::GetAtt: EcsTriggerRole.Arn
EcsTriggerRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: 'sts:AssumeRole'
Principal:
Service: 'events.amazonaws.com'
ManagedPolicyArns:
- Fn::Sub: 'arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonEC2ContainerServiceEventsRole'
【问题讨论】:
-
你确定你的任务定义是正确的吗?此外,如果您认为这是 IAM 问题,请尝试将 AmazonEC2ContainerServiceEventsRole 替换为 AmazonEC2ContainerServiceFullAccess。
-
它自己的任务正在按预期运行(生成日志)。我已尝试使用管理员访问权限,但似乎无法正常工作。
-
CloudTrail 应该显示该事件 - 您可能会或可能不会得到任何有用的东西。
标签: amazon-web-services amazon-cloudformation amazon-cloudwatch amazon-ecs