AWS IoT 1 Click Project SAM - ошибка 400 InvalidRequestException - PullRequest
1 голос
/ 07 августа 2020

Привет, я использую AWS SAM для развертывания бессерверного приложения, которое также полагается на устройства 1Click. У меня нормально развертывается шаблон, но я должен исключить это значение:

CallbackOverrides:
              onClickCallback:

вот файл шаблона

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: securitybutton
Globals:
  Function:
    Timeout: 10
Resources:
  SecurityButtonFunction:
    Type: AWS::Serverless::Function
    Policies:
      - AmazonSNSFullAccess
    Properties:
      CodeUri: src
      Handler: index.lambdaHandler,
      Runtime: nodejs12.x
      MemorySize: 512
      Events:
        IoTRule:
          Type: IoTRule
          Properties:
            Sql: SELECT * FROM 'iotbutton/*'
 #TOPICS
  BRSecurityButtonTopic:
    Type: AWS::SNS::Topic

#IoT
#project
  BRSecurityButtonProject:
    Type: "AWS::IoT1Click::Project"
    Properties:
      ProjectName: "BRSecurityButton"
      Description: "BRSecurityButton"
      PlacementTemplate:
        DefaultAttributes:
          SNSTopic: Changeme
          Location: Changeme
          Theatre: Changeme
        DeviceTemplates:
          SecuityButtonTemplate:
            DeviceType: "button"
            CallbackOverrides:
              onClickCallback: !GetAtt 
                - SecurityButtonFunction
                - Arn
Outputs:
  SecurityButtonFunction:
    Description: "Security Button Lambda Function ARN"
    Value: !GetAtt SecurityButtonFunction.Arn

Вот результирующая ошибка cloudFormation:

Лямбда-функция arn: aws: lambda: us-east-1: LALALALALALA: function: securitybutton-prod-SecurityButtonFunction -6OB47JEIU192 не может быть вызван. (Служба: AWSIoT1ClickProjects; Код состояния: 400; Код ошибки: InvalidRequestException; Идентификатор запроса: f0e94cd5-0310-4dcf-8d4a-a5ee8b102590; Прокси: null)

на логическом идентификаторе BRSecurityButtonProject

любая помощь будет оценена

1 Ответ

1 голос
/ 12 августа 2020

Я обнаружил, что проблема связана с IAM. Это добавлено в шаблон SAM, который предоставлял доступ для любых проектов IoT в один клик в учетной записи для вызова функции Lambda.

  SecurityButtonFunctionIoTPermission:
    Type: AWS::Lambda::Permission
    Properties:
      FunctionName: !GetAtt SecurityButtonFunction.Arn
      Action: lambda:InvokeFunction
      Principal: iot1click.amazonaws.com
      SourceAccount: !Ref "AWS::AccountId"
...