service: service

configValidationMode: error
frameworkVersion: '*'

provider:
  name: aws
  runtime: nodejs16.x
  versionFunctions: false

functions:
  registerDevice:
    handler: register-device.main
    timeout: 30
    environment:
      TEMPLATE_NAME:
        Ref: BasicIotProvisioningTemplate
  basic:
    handler: hook.main
    events:
      - iotFleetProvisioning:
          templateBody: ${file(template.json)}
          provisioningRoleArn:
            Fn::GetAtt:
              - ProvisioningRole
              - Arn

resources:
  Resources:
    ProvisioningRole:
      Type: AWS::IAM::Role
      Properties:
        RoleName: ${self:service}-${opt:stage, self:provider.stage, 'dev'}-provisioning-role
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service: iot.amazonaws.com
              Action: sts:AssumeRole
    IoTPolicy:
      Type: AWS::IoT::Policy
      Properties:
        PolicyName: ${self:service}-${opt:stage, self:provider.stage, 'dev'}-iot-policy
        PolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action: 'iot:*'
              Resource: '*'
  Outputs:
    ProvisioningTemplateName:
      Value:
        Ref: BasicIotProvisioningTemplate
    IoTPolicyName:
      Value:
        Ref: IoTPolicy
