Unable to create a Lambda permission for API gateway

I’ve submitted a bug report:

Unsure if a bug. I’m trying to create a lambda permission, but I want a dynamic ARN to be populated.

  RetrieveAllSubscribersLambdaPermissionApiGateway:
    Type: 'AWS::Lambda::Permission'
    Properties:
      FunctionName: { "Fn::GetAtt": [ RetrieveAllSubscribersLambdaFunction, Arn ] }
      Action: lambda:InvokeFunction
      Principal: apigateway.amazonaws.com
      SourceArn: ${self:custom.ApiGatewayMetadata.uniqueId}

This fails consistently by saying the resource is not a string, etc. I’ve tried with Join (see above bug report) and standard interpolation, to no avail.

I’ve even tried really weird stuff:

custom:
  SubscribedUsersTable:
    name: !Ref UsersSubscriptionTable
    arn: !GetAtt UsersSubscriptionTable.Arn
  ApiGatewayMetadata:
    test: !GetAtt ApiGatewayRestApi.RootResourceId
    logicalId: ${self:custom.ApiGatewayMetadata.test, 'none'}
    uniqueId: 'arn:aws:execute-api:us-west-2:1234/${self:custom.ApiGatewayMetadata.logicalId}/*/GET/users'
  bundle:
    linting: false