CloudFormationでEventBridge -> Lambra -> SNS のリソースを作成するべく
ymlでテンプレートファイルを書きました
yml
AWSTemplateFormatVersion: 2010-09-09 Parameters: BucketName: Type: String SourceCodeFile: Type: String ResourceName: Type: String Resources: LambdaFunction: Type: AWS::Lambda::Function Properties: Handler: lambda_function.lambda_handler Code: S3Bucket: !Ref BucketName S3Key: !Ref SourceCodeFile FunctionName: !Sub ${ResourceName}-function Runtime: python3.9 Environment: Variables: TopicArn : !Sub arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${ResourceName}-sns Role: !GetAtt - LambdaExecutionRole - Arn LambdaExecutionRole: Type: AWS::IAM::Role Properties: RoleName: !Sub ${ResourceName}-function-execution-role AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: !Sub ${ResourceName}-function-policy PolicyDocument: Version: 2012-10-17 Statement: - Resource: !Sub arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/lambda/${ResourceName}-function:* Effect: Allow Action: - logs:CreateLogGroup - logs:CreateLogStream - logs:PutLogEvents - logs:CreateExportTask - s3:GetBucketAcl - s3:PutObject - PolicyName: !Sub ${ResourceName}-function-nsn-policy PolicyDocument: Version: 2012-10-17 Statement: - Resource: !Sub arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${ResourceName}-sns Effect: Allow Action: - sns:Publish SnsTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Sub ${ResourceName}-sns FifoTopic: false TopicName: !Sub ${ResourceName}-sns EventBridgeRule: Type: AWS::Events::Rule Properties: EventBusName: default # EventPattern: Json Name: !Sub ${ResourceName}-eventbridge-rule RoleArn: String ScheduleExpression: rate(5 minutes) State: ENABLED Targets: - Arn: !GetAtt - LambdaFunction - Arn - Id: TargetFunction1
実行してみたところ、Lambda、SNSは作成できたのですが、EventBridgeでエラーが出てしまいました
Property Id cannot be empty.
「Idは空にしちゃダメだよー」というエラーだと思いますが、Idにはちゃんと値を入れています
Targets: - Arn: !GetAtt - LambdaFunction - Arn - Id: TargetFunction1
どなたか修正方法をご教示いただけないでしょうか?
よろしくお願い致します。
TargetFunction1が宣言されてませんが
すみません、ymlを書くのが初めてなので恐縮なのですが、
TargetFunction1は変数のつもりではなく、文字列としてそのままEventBridgeに登録するものと思っていました。
宣言文を書くべきなのでしょうか?
ENABLEという形式ではなく、function.xxx.idという形になるかと思います。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-events-rule-target.html
これなんですが、もう一歩わかりませんね。サポートに聞くレベルだと思います。
まだ回答がついていません
会員登録して回答してみよう