#概要
CloudFormationにてsubscriptionFilterを通してLambdaを実行する処理を追加したいと考えていますが、デプロイで失敗してしまいます。
#実際のテンプレート
subscriptionFilter
SubscriptionFilter: Typ##e: AWS::Logs::SubscriptionFilter Properties: DestinationArn: !Sub "ErrorWatch" FilterPattern: INFO LogGroupName: 'hogehohe' # RoleArn: # Fn::GetAtt: # - "CloudWatchLogsRols" # - "Arn"
subscriptionFilterから呼び出されるLambda関数
ErrorWatch: Type: 'AWS::Serverless::Function' Properties: Description: 'CloudWatch Logsのエラーを監視' CodeUri: src/functions/reactive/errorWatch Role: !GetAtt CloudWatchLogsRols.Arn Timeout: 60 Environment: Variables: SLACK_URL: !Ref SlackUrl
Role
CloudWatchLogsRols: Type: 'AWS::IAM::Role' Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: 'sts:AssumeRole' Policies: - PolicyName: 'cloudwatch_logs_sub' PolicyDocument: Version: '2012-10-17' Statement: - Effect: 'Allow' Action: 'lambda:InvokeFunction' Resource: '*'
エラーについて
上記のテンプレートだと下記のようなエラーが下記のようなエラーが表示されます。
[SubscriptionFilter] Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.
Lambda関数(ErrorWatch)には権限が問題ないように思えるので、SubscriptionFilterに権限が足りないと思います。
しかし、SubscriptionFilterに権限を付与すると下記ようなエラーに変わります。
(* SubscriptionFilteにLambda関数と同じRoleを与えた場合です)
[SubscriptionFilter] destinationArn for vendor lambda cannot be used with roleArn
destinationArnとroleArnの両方が使えないと意味かと思いますが、この部分をどうすればいいかわかりません。。。
公式のドキュメントを見ても両方設定されているようです。
どなたかアドバイスお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/23 09:25