cloudformation/External_Attributes.yaml [4:66]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parameters:
  PinpointProjectId:
    Type: String
    Description: Amazon Pinpoint Project ID if one already exists, blank to create one
  PinpointProjectName:
    Type: String
    Default: "My Pinpoint Project"
    Description: "If no PinpointProjectId provided, name to be used to create the Pinpoint project"

Conditions:
  NeedsPinpointProjectId: !Equals
      - ''
      - !Ref PinpointProjectId

Resources:
  PinpointApplication:
    Type: AWS::Pinpoint::App
    Condition: NeedsPinpointProjectId
    Properties:
      Name: !Ref PinpointProjectName

  PinpointApplicationSettings:
    Type: AWS::Pinpoint::ApplicationSettings
    Properties:
      ApplicationId: !If
          - NeedsPinpointProjectId
          - !Ref PinpointApplication
          - !Ref PinpointProjectId
      CampaignHook:
        LambdaFunctionName: !GetAtt FilterCampaignHookLambdaFunction.Arn
        Mode: 'FILTER'
    DependsOn: LambdaPermission

  LambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt FilterCampaignHookLambdaFunction.Arn
      Principal: !Sub 'pinpoint.${AWS::Region}.amazonaws.com'
      SourceArn:
        !Sub
          - 'arn:aws:mobiletargeting:${AWS::Region}:${AWS::AccountId}:/apps/${ProjectId}*'
          - {ProjectId: !If [NeedsPinpointProjectId, !Ref PinpointApplication, !Ref PinpointProjectId] }

  FilterCampaignHookLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Handler: index.lambda_handler
      Role: !GetAtt FilterCampaignHookLambdaFunctionRole.Arn
      Runtime: "python3.7"
      Timeout: 60
      MemorySize: 1024
      Code:
        ZipFile: |
          import json
          import logging

          def lambda_handler(event, context):
              logging.getLogger().setLevel('DEBUG')
              logging.debug(json.dumps(event))

              # Loop over each incoming Endpoint
              for endpointId,endpoint in event['Endpoints'].items():
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



cloudformation/External_Templates.yaml [4:66]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Parameters:
  PinpointProjectId:
    Type: String
    Description: Amazon Pinpoint Project ID if one already exists, blank to create one
  PinpointProjectName:
    Type: String
    Default: "My Pinpoint Project"
    Description: "If no PinpointProjectId provided, name to be used to create the Pinpoint project"

Conditions:
  NeedsPinpointProjectId: !Equals
      - ''
      - !Ref PinpointProjectId

Resources:
  PinpointApplication:
    Type: AWS::Pinpoint::App
    Condition: NeedsPinpointProjectId
    Properties:
      Name: !Ref PinpointProjectName

  PinpointApplicationSettings:
    Type: AWS::Pinpoint::ApplicationSettings
    Properties:
      ApplicationId: !If
          - NeedsPinpointProjectId
          - !Ref PinpointApplication
          - !Ref PinpointProjectId
      CampaignHook:
        LambdaFunctionName: !GetAtt FilterCampaignHookLambdaFunction.Arn
        Mode: 'FILTER'
    DependsOn: LambdaPermission

  LambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt FilterCampaignHookLambdaFunction.Arn
      Principal: !Sub 'pinpoint.${AWS::Region}.amazonaws.com'
      SourceArn:
        !Sub
          - 'arn:aws:mobiletargeting:${AWS::Region}:${AWS::AccountId}:/apps/${ProjectId}*'
          - {ProjectId: !If [NeedsPinpointProjectId, !Ref PinpointApplication, !Ref PinpointProjectId] }

  FilterCampaignHookLambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      Handler: index.lambda_handler
      Role: !GetAtt FilterCampaignHookLambdaFunctionRole.Arn
      Runtime: "python3.7"
      Timeout: 60
      MemorySize: 1024
      Code:
        ZipFile: |
          import json
          import logging

          def lambda_handler(event, context):
              logging.getLogger().setLevel('DEBUG')
              logging.debug(json.dumps(event))

              # Loop over each incoming Endpoint
              for endpointId,endpoint in event['Endpoints'].items():
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



