Finding cause of high write IOPS on RDS Postgesql
To log autovacuum activity you can set log_autovacuum_min_duration parameter:


  Causes each action executed by autovacuum to be logged if it ran for
  at least the specified number of milliseconds. Setting this to zero
  logs all autovacuum actions. Minus-one (the default) disables logging
  autovacuum actions. For example, if you set this to 250ms then all
  automatic vacuums and analyzes that run 250ms or longer will be
  logged. In addition, when this parameter is set to any value other
  than -1, a message will be logged if an autovacuum action is skipped
  due to the existence of a conflicting lock. Enabling this parameter
  can be helpful in tracking autovacuum activity. This parameter can
  only be set in the postgresql.conf file or on the server command line;
  but the setting can be overridden for individual tables by changing
  table storage parameters.


One possible cause could also be temporary files used by some queries for sorting and/or joins: you can try to check in  pg_stat_database view columns temp_files and temp_bytes . You can also set log_temp_files parameter to 0 (instead of default -1) to log all temporary files creation:


  Controls logging of temporary file names and sizes. Temporary files
  can be created for sorts, hashes, and temporary query results. A log
  entry is made for each temporary file when it is deleted. A value of
  zero logs all temporary file information, while positive values log
  only files whose size is greater than or equal to the specified number
  of kilobytes. The default setting is -1, which disables such logging.
  Only superusers can change this setting.